aboutsummaryrefslogtreecommitdiff
path: root/.github
diff options
context:
space:
mode:
authorNeil Alexander <neilalexander@users.noreply.github.com>2022-03-24 15:22:06 +0000
committerGitHub <noreply@github.com>2022-03-24 15:22:06 +0000
commit1b389abbfd26e949b2d511c64f20b5575aaecf79 (patch)
tree602047714ec1886bfba698d03af29c4dd3feacbd /.github
parentbb31b25f1b3c7330a33b31f310aa73f99457031e (diff)
Upload Docker images for releases to both Docker Hub and GitHub Container Registry (#2299)
* Upload Docker images for releases to both Docker Hub and GitHub Container Registry * Build current images on `:main` tag * Use Dendrite flow to trigger Docker flow for `:main` * Tweaks * Fix references to `env.GHCR_NAMESPACE`
Diffstat (limited to '.github')
-rw-r--r--.github/workflows/docker-hub.yml71
-rw-r--r--.github/workflows/docker.yml136
2 files changed, 136 insertions, 71 deletions
diff --git a/.github/workflows/docker-hub.yml b/.github/workflows/docker-hub.yml
deleted file mode 100644
index 0322866d..00000000
--- a/.github/workflows/docker-hub.yml
+++ /dev/null
@@ -1,71 +0,0 @@
-# Based on https://github.com/docker/build-push-action
-
-name: "Docker Hub"
-
-on:
- release:
- types: [published]
-
-env:
- DOCKER_NAMESPACE: matrixdotorg
- DOCKER_HUB_USER: dendritegithub
- PLATFORMS: linux/amd64,linux/arm64,linux/arm/v7
-
-jobs:
- Monolith:
- 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 Docker Hub
- uses: docker/login-action@v1
- with:
- username: ${{ env.DOCKER_HUB_USER }}
- password: ${{ secrets.DOCKER_TOKEN }}
-
- - name: Build monolith image
- id: docker_build_monolith
- uses: docker/build-push-action@v2
- with:
- context: .
- file: ./build/docker/Dockerfile.monolith
- platforms: ${{ env.PLATFORMS }}
- push: true
- tags: |
- ${{ env.DOCKER_NAMESPACE }}/dendrite-monolith:latest
- ${{ env.DOCKER_NAMESPACE }}/dendrite-monolith:${{ env.RELEASE_VERSION }}
-
- Polylith:
- 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 Docker Hub
- uses: docker/login-action@v1
- with:
- username: ${{ env.DOCKER_HUB_USER }}
- password: ${{ secrets.DOCKER_TOKEN }}
-
- - name: Build polylith image
- id: docker_build_polylith
- uses: docker/build-push-action@v2
- with:
- context: .
- file: ./build/docker/Dockerfile.polylith
- platforms: ${{ env.PLATFORMS }}
- push: true
- tags: |
- ${{ env.DOCKER_NAMESPACE }}/dendrite-polylith:latest
- ${{ env.DOCKER_NAMESPACE }}/dendrite-polylith:${{ env.RELEASE_VERSION }}
diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml
new file mode 100644
index 00000000..129a9f0a
--- /dev/null
+++ b/.github/workflows/docker.yml
@@ -0,0 +1,136 @@
+# Based on https://github.com/docker/build-push-action
+
+name: "Docker Hub"
+
+on:
+ release: # A GitHub release was published
+ types: [published]
+ workflow_run: # The Dendrite pipeline completed successfully on main
+ workflows: [Dendrite]
+ types: [completed]
+ branches: [main]
+
+env:
+ DOCKER_NAMESPACE: matrixdotorg
+ DOCKER_HUB_USER: dendritegithub
+ GHCR_NAMESPACE: matrix-org
+ PLATFORMS: linux/amd64,linux/arm64,linux/arm/v7
+
+jobs:
+ monolith:
+ name: Monolith image
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v2
+ - name: Get release tag
+ if: github.event_name == 'release' # Only for GitHub releases
+ 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 Docker Hub
+ uses: docker/login-action@v1
+ with:
+ username: ${{ env.DOCKER_HUB_USER }}
+ password: ${{ secrets.DOCKER_TOKEN }}
+ - name: Login to GitHub Containers
+ uses: docker/login-action@v1
+ with:
+ registry: ghcr.io
+ username: ${{ github.repository_owner }}
+ password: ${{ secrets.GITHUB_TOKEN }}
+
+ - name: Build monolith image
+ if: >-
+ github.event_name == 'workflow_run' &&
+ github.event.workflow_run.conclusion == 'success'
+ id: docker_build_monolith
+ uses: docker/build-push-action@v2
+ with:
+ cache-from: type=gha
+ cache-to: type=gha,mode=max
+ context: .
+ file: ./build/docker/Dockerfile.monolith
+ platforms: ${{ env.PLATFORMS }}
+ push: true
+ tags: |
+ ${{ env.DOCKER_NAMESPACE }}/dendrite-monolith:main
+ ghcr.io/${{ env.GHCR_NAMESPACE }}/dendrite-monolith:main
+
+ - name: Build release monolith image
+ if: github.event_name == 'release' # Only for GitHub releases
+ id: docker_build_monolith
+ uses: docker/build-push-action@v2
+ with:
+ cache-from: type=gha
+ cache-to: type=gha,mode=max
+ context: .
+ file: ./build/docker/Dockerfile.monolith
+ platforms: ${{ env.PLATFORMS }}
+ push: true
+ tags: |
+ ${{ env.DOCKER_NAMESPACE }}/dendrite-monolith:latest
+ ${{ env.DOCKER_NAMESPACE }}/dendrite-monolith:${{ env.RELEASE_VERSION }}
+ ghcr.io/${{ env.GHCR_NAMESPACE }}/dendrite-monolith:latest
+ ghcr.io/${{ env.GHCR_NAMESPACE }}/dendrite-monolith:${{ env.RELEASE_VERSION }}
+
+ polylith:
+ name: Polylith image
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v2
+ - name: Get release tag
+ if: github.event_name == 'release' # Only for GitHub releases
+ 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 Docker Hub
+ uses: docker/login-action@v1
+ with:
+ username: ${{ env.DOCKER_HUB_USER }}
+ password: ${{ secrets.DOCKER_TOKEN }}
+ - name: Login to GitHub Containers
+ uses: docker/login-action@v1
+ with:
+ registry: ghcr.io
+ username: ${{ github.repository_owner }}
+ password: ${{ secrets.GITHUB_TOKEN }}
+
+ - name: Build polylith image
+ if: >-
+ github.event_name == 'workflow_run' &&
+ github.event.workflow_run.conclusion == 'success'
+ id: docker_build_polylith
+ uses: docker/build-push-action@v2
+ with:
+ cache-from: type=gha
+ cache-to: type=gha,mode=max
+ context: .
+ file: ./build/docker/Dockerfile.polylith
+ platforms: ${{ env.PLATFORMS }}
+ push: true
+ tags: |
+ ${{ env.DOCKER_NAMESPACE }}/dendrite-polylith:main
+ ghcr.io/${{ env.GHCR_NAMESPACE }}/dendrite-polylith:main
+
+ - name: Build release polylith image
+ if: github.event_name == 'release' # Only for GitHub releases
+ id: docker_build_polylith
+ uses: docker/build-push-action@v2
+ with:
+ cache-from: type=gha
+ cache-to: type=gha,mode=max
+ context: .
+ file: ./build/docker/Dockerfile.polylith
+ platforms: ${{ env.PLATFORMS }}
+ push: true
+ tags: |
+ ${{ env.DOCKER_NAMESPACE }}/dendrite-polylith:latest
+ ${{ env.DOCKER_NAMESPACE }}/dendrite-polylith:${{ env.RELEASE_VERSION }}
+ ghcr.io/${{ env.GHCR_NAMESPACE }}/dendrite-polylith:latest
+ ghcr.io/${{ env.GHCR_NAMESPACE }}/dendrite-polylith:${{ env.RELEASE_VERSION }}