# 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