summary refs log tree commit diff
diff options
context:
space:
mode:
authorOlivier Wilkinson (reivilibre) <oliverw@matrix.org>2022-01-28 12:07:29 +0000
committerOlivier Wilkinson (reivilibre) <oliverw@matrix.org>2022-01-28 12:36:56 +0000
commited5d900b9eabf762a636dff20f521aad25973cbe (patch)
tree9db778f229e38d5830f250f571b04e2dbfed913f
parentAllow customising the version of the Synapse image used in the Dockerfile (diff)
downloadsynapse-ed5d900b9eabf762a636dff20f521aad25973cbe.tar.xz
Add a build_worker_test stage to the docker build pipeline
-rw-r--r--.github/workflows/docker.yml66
1 files changed, 66 insertions, 0 deletions
diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml
index 124b17458f..b0582749dc 100644
--- a/.github/workflows/docker.yml
+++ b/.github/workflows/docker.yml
@@ -63,3 +63,69 @@ jobs:
           tags: "matrixdotorg/synapse:${{ steps.set-tag.outputs.tag }}"
           file: "docker/Dockerfile"
           platforms: linux/amd64,linux/arm64
+
+  build_workers_test:
+    runs-on: ubuntu-latest
+
+    # The worker test image depends on the base image, so we must build the base
+    # first.
+    needs: build
+
+    permissions:
+      packages: write
+      contents: read
+
+    steps:
+      - name: Set up QEMU
+        id: qemu
+        uses: docker/setup-qemu-action@v1
+        with:
+          platforms: arm64
+
+      - name: Set up Docker Buildx
+        id: buildx
+        uses: docker/setup-buildx-action@v1
+
+      - name: Inspect builder
+        run: docker buildx inspect
+
+      - name: Login to GitHub Container Registry (for worker-testing-only image)
+        if: github.event_name != 'pull_request'
+        uses: docker/login-action@v1
+        with:
+          registry: ghcr.io
+          username: ${{ github.repository_owner }}
+          password: ${{ secrets.GITHUB_TOKEN }}
+
+      # This must match EXACTLY the one in the `build` pipeline.
+      - name: Calculate docker image tag
+        id: set-tag
+        run: |
+          case "${GITHUB_REF}" in
+              refs/heads/develop)
+                  tag=develop
+                  ;;
+              refs/heads/master|refs/heads/main)
+                  tag=latest
+                  ;;
+              refs/tags/*)
+                  tag=${GITHUB_REF#refs/tags/}
+                  ;;
+              *)
+                  tag=${GITHUB_SHA}
+                  ;;
+          esac
+          echo "::set-output name=tag::$tag"
+
+      # This image is solely intended to be used for automated test tools,
+      # such as mx-tester.
+      - name: Build and push worker-testing-only image for all platforms
+        uses: docker/build-push-action@v2
+        with:
+          push: true
+          build-args: |
+            "base_version=${{ steps.set-tag.outputs.tag }}"
+          labels: "gitsha1=${{ github.sha }}"
+          tags: "ghcr.io/matrix-org/synapse-workers-testing-only:${{ steps.set-tag.outputs.tag }}"
+          file: "docker/Dockerfile-workers"
+          platforms: linux/amd64,linux/arm64