forked from MirrorHub/synapse
parent
b5d42377bf
commit
5f2848f379
3 changed files with 58 additions and 4 deletions
44
.github/workflows/debs.yml
vendored
Normal file
44
.github/workflows/debs.yml
vendored
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
# GitHub actions workflow which builds the debian packages.
|
||||||
|
|
||||||
|
name: Debs
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: ["develop", "release-*"]
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
# first get the list of distros to build for.
|
||||||
|
get-distros:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- uses: actions/setup-python@v2
|
||||||
|
- id: set-distros
|
||||||
|
run: |
|
||||||
|
echo "::set-output name=distros::$(scripts-dev/build_debian_packages --show-dists-json)"
|
||||||
|
# map the step outputs to job outputs
|
||||||
|
outputs:
|
||||||
|
distros: ${{ steps.set-distros.outputs.distros }}
|
||||||
|
|
||||||
|
# now build the packages with a matrix build.
|
||||||
|
build-debs:
|
||||||
|
needs: get-distros
|
||||||
|
name: "Build .deb packages"
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
distro: ${{ fromJson(needs.get-distros.outputs.distros) }}
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
path: src
|
||||||
|
- uses: actions/setup-python@v2
|
||||||
|
- run: ./src/scripts-dev/build_debian_packages "${{ matrix.distro }}"
|
||||||
|
- uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: packages
|
||||||
|
path: debs/*
|
1
changelog.d/10247.misc
Normal file
1
changelog.d/10247.misc
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Build the Debian packages in CI.
|
|
@ -10,6 +10,7 @@
|
||||||
# can be passed on the commandline for debugging.
|
# can be passed on the commandline for debugging.
|
||||||
|
|
||||||
import argparse
|
import argparse
|
||||||
|
import json
|
||||||
import os
|
import os
|
||||||
import signal
|
import signal
|
||||||
import subprocess
|
import subprocess
|
||||||
|
@ -34,6 +35,8 @@ By default, builds for all known distributions, but a list of distributions
|
||||||
can be passed on the commandline for debugging.
|
can be passed on the commandline for debugging.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
projdir = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
|
||||||
|
|
||||||
|
|
||||||
class Builder(object):
|
class Builder(object):
|
||||||
def __init__(self, redirect_stdout=False):
|
def __init__(self, redirect_stdout=False):
|
||||||
|
@ -57,9 +60,6 @@ class Builder(object):
|
||||||
raise
|
raise
|
||||||
|
|
||||||
def _inner_build(self, dist, skip_tests=False):
|
def _inner_build(self, dist, skip_tests=False):
|
||||||
projdir = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
|
|
||||||
os.chdir(projdir)
|
|
||||||
|
|
||||||
tag = dist.split(":", 1)[1]
|
tag = dist.split(":", 1)[1]
|
||||||
|
|
||||||
# Make the dir where the debs will live.
|
# Make the dir where the debs will live.
|
||||||
|
@ -93,6 +93,7 @@ class Builder(object):
|
||||||
],
|
],
|
||||||
stdout=stdout,
|
stdout=stdout,
|
||||||
stderr=subprocess.STDOUT,
|
stderr=subprocess.STDOUT,
|
||||||
|
cwd=projdir,
|
||||||
)
|
)
|
||||||
|
|
||||||
container_name = "synapse_build_" + tag
|
container_name = "synapse_build_" + tag
|
||||||
|
@ -179,6 +180,11 @@ if __name__ == "__main__":
|
||||||
action="store_true",
|
action="store_true",
|
||||||
help="skip running tests after building",
|
help="skip running tests after building",
|
||||||
)
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--show-dists-json",
|
||||||
|
action="store_true",
|
||||||
|
help="instead of building the packages, just list the dists to build for, as a json array",
|
||||||
|
)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"dist",
|
"dist",
|
||||||
nargs="*",
|
nargs="*",
|
||||||
|
@ -186,4 +192,7 @@ if __name__ == "__main__":
|
||||||
help="a list of distributions to build for. Default: %(default)s",
|
help="a list of distributions to build for. Default: %(default)s",
|
||||||
)
|
)
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
run_builds(dists=args.dist, jobs=args.jobs, skip_tests=args.no_check)
|
if args.show_dists_json:
|
||||||
|
print(json.dumps(DISTS))
|
||||||
|
else:
|
||||||
|
run_builds(dists=args.dist, jobs=args.jobs, skip_tests=args.no_check)
|
||||||
|
|
Loading…
Reference in a new issue