Move the docker image build to Github Actions (#10416)
it's flaky on circleCI, and having to manage multiple CI providers is painful.
1 files changed, 72 insertions, 0 deletions
diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml
new file mode 100644
index 0000000000..8bdefb3905
--- /dev/null
+++ b/.github/workflows/docker.yml
@@ -0,0 +1,72 @@
+# GitHub actions workflow which builds and publishes the docker images.
+
+name: Build docker images
+
+on:
+ push:
+ tags: ["v*"]
+ branches: [ master, main ]
+ workflow_dispatch:
+
+permissions:
+ contents: read
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+ 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: Log in to DockerHub
+ uses: docker/login-action@v1
+ with:
+ username: ${{ secrets.DOCKERHUB_USERNAME }}
+ password: ${{ secrets.DOCKERHUB_TOKEN }}
+
+ - name: Calculate docker image tag
+ id: set-tag
+ run: |
+ case "${GITHUB_REF}" in
+ 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"
+
+ # for release builds, we want to get the amd64 image out asap, so first
+ # we do an amd64-only build, before following up with a multiarch build.
+ - name: Build and push amd64
+ uses: docker/build-push-action@v2
+ if: "${{ startsWith(github.ref, 'refs/tags/v' }}"
+ with:
+ push: true
+ labels: "gitsha1=${{ github.sha }}"
+ tags: "matrixdotorg/synapse:${{ steps.set-tag.outputs.tag }}"
+ file: "docker/Dockerfile"
+ platforms: linux/amd64
+
+ - name: Build and push all platforms
+ uses: docker/build-push-action@v2
+ with:
+ push: true
+ labels: "gitsha1=${{ github.sha }}"
+ tags: "matrixdotorg/synapse:${{ steps.set-tag.outputs.tag }}"
+ file: "docker/Dockerfile"
+ platforms: linux/amd64,linux/arm64
|