aboutsummaryrefslogtreecommitdiff
path: root/.github
diff options
context:
space:
mode:
authorTR_SLimey <37966924+TR-SLimey@users.noreply.github.com>2021-01-18 10:23:53 +0000
committerGitHub <noreply@github.com>2021-01-18 10:23:53 +0000
commitff94490384facc0a891a853ec10d7247587fcce9 (patch)
treeb9f68f3ada1bd2b33bb9885363920a16b3098c0c /.github
parent6dadb1c06b6bfc23d3741d5611492b0d3dadddbc (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.yml73
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 }}