diff options
author | TR_SLimey <37966924+TR-SLimey@users.noreply.github.com> | 2021-01-18 10:23:53 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-01-18 10:23:53 +0000 |
commit | ff94490384facc0a891a853ec10d7247587fcce9 (patch) | |
tree | b9f68f3ada1bd2b33bb9885363920a16b3098c0c /.github | |
parent | 6dadb1c06b6bfc23d3741d5611492b0d3dadddbc (diff) |
GitHub action for automatic multiarch Docker build (#1613)
* Create docker-build-and-push.yml
* Switched to using official Docker buildx action
* Added comment to docker-build-and-push.yml
In case something needs to be tweaked in the future, the link
contains some examples and explanations which would be useful
* Run only on release (and produce release tags)
As this workflow takes quite a lot of time, and [pushing to master happens frequently](https://github.com/matrix-org/dendrite/pull/1613#issuecomment-746086980), the container will now only be built when a release is created, and the builds will also be correctly tagged.
* Add latest tag, test at neilalexander/dendrite*
Co-authored-by: Neil Alexander <neilalexander@users.noreply.github.com>
Diffstat (limited to '.github')
-rw-r--r-- | .github/workflows/docker-build-and-push.yml | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/.github/workflows/docker-build-and-push.yml b/.github/workflows/docker-build-and-push.yml new file mode 100644 index 00000000..2d67b210 --- /dev/null +++ b/.github/workflows/docker-build-and-push.yml @@ -0,0 +1,73 @@ +# Based on https://github.com/docker/build-push-action + +name: "Docker Multiarch Build & Push" + +on: + release: +# types: [published] + branches: [master] + +env: + DOCKER_HUB_USER: neilalexander + +jobs: + BuildAndPush: + runs-on: ubuntu-latest + steps: + - + name: Checkout + uses: actions/checkout@v2 + - + name: Get release tag + run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV + - + name: Set up QEMU + uses: docker/setup-qemu-action@v1 + - + name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + - + name: Login to DockerHub + uses: docker/login-action@v1 + with: + username: ${{ env.DOCKER_HUB_USER }} + password: ${{ secrets.DOCKER_TOKEN }} + - + name: Build temporary (builder) image + id: docker_build_temporary + uses: docker/build-push-action@v2 + with: + context: . + file: ./build/docker/Dockerfile + platforms: linux/amd64,linux/arm64,linux/arm/v7 + push: false + tags: ${{ env.DOCKER_HUB_USER }}/dendrite:latest + - + name: Build monolith image + id: docker_build_monolith + uses: docker/build-push-action@v2 + with: + context: . + file: ./build/docker/Dockerfile.monolith + platforms: linux/amd64,linux/arm64,linux/arm/v7 + push: true + tags: | + ${{ env.DOCKER_HUB_USER }}/dendrite-monolith:latest + ${{ env.DOCKER_HUB_USER }}/dendrite-monolith:${{ env.RELEASE_VERSION }} + - + name: Build polylith image + id: docker_build_polylith + uses: docker/build-push-action@v2 + with: + context: . + file: ./build/docker/Dockerfile.polylith + platforms: linux/amd64,linux/arm64,linux/arm/v7 + push: true + tags: | + ${{ env.DOCKER_HUB_USER }}/dendrite-polylith:latest + ${{ env.DOCKER_HUB_USER }}/dendrite-polylith:${{ env.RELEASE_VERSION }} + - + name: Image digest + run: | + echo Monolith ( ${{ env.RELEASE_VERSION }} ) image digest - ${{ steps.docker_build_monolith.outputs.digest }} + echo Polylith ( ${{ env.RELEASE_VERSION }} ) image digest - ${{ steps.docker_build_polylith.outputs.digest }} |