2024-04-10 02:52:38 +08:00
name : Docker PR Preview
2024-04-11 03:33:58 +08:00
# Note pushing docker images is not possible from a public forked repo (see: Can't push to ghcr on a pull request, https://github.com/docker/build-push-action/issues/870)
# Hence, this workflow is limited to PRs from element-hq/element-call
2024-04-10 03:04:32 +08:00
2024-04-10 02:52:38 +08:00
on :
2024-04-10 20:31:39 +08:00
pull_request :
2024-04-10 02:52:38 +08:00
types :
2024-04-10 20:31:39 +08:00
- synchronize
- opened
- labeled
2024-04-10 02:52:38 +08:00
env :
REGISTRY : ghcr.io
IMAGE_NAME : ${{ github.repository }}
2024-04-10 22:47:48 +08:00
# due to https://github.com/actions/runner/issues/2372
# and not wanting to workaround like https://stackoverflow.com/questions/73797254/environment-variables-in-github-actions/74217028#74217028
# we disable for now a gloabl env variable since env is not available in job.if
# DO_DOCKER_BUILD: ${{ contains(github.event.pull_request.labels.*.name, 'docker build') }}
2024-04-11 03:33:58 +08:00
# NOT_FROM_FORK: ${{ github.event.pull_request.head.repo.full_name == github.repository }}
2024-04-10 02:52:38 +08:00
jobs :
2024-04-10 20:31:39 +08:00
build_element_call :
2024-04-11 03:33:58 +08:00
if : ${{ contains(github.event.pull_request.labels.*.name, 'docker build') && github.event.pull_request.head.repo.full_name == github.repository }}
2024-04-13 04:39:05 +08:00
uses : ./.github/workflows/element-call.yaml
2024-04-10 22:29:59 +08:00
secrets :
SENTRY_ORG : ${{ secrets.SENTRY_ORG }}
SENTRY_PROJECT : ${{ secrets.SENTRY_PROJECT }}
SENTRY_URL : ${{ secrets.SENTRY_URL }}
SENTRY_AUTH_TOKEN : ${{ secrets.SENTRY_AUTH_TOKEN }}
2024-04-10 20:31:39 +08:00
2024-04-10 19:25:50 +08:00
build_docker :
2024-04-11 03:33:58 +08:00
if : ${{ contains(github.event.pull_request.labels.*.name, 'docker build') && github.event.pull_request.head.repo.full_name == github.repository }}
2024-04-10 20:46:45 +08:00
needs : build_element_call
2024-04-10 02:52:38 +08:00
runs-on : ubuntu-latest
permissions :
2024-04-10 23:17:10 +08:00
contents : write # required to upload release asset
packages : write
2024-04-10 02:52:38 +08:00
steps :
2024-04-10 20:59:32 +08:00
- name : Check it out
uses : actions/checkout@v4
2024-04-10 02:52:38 +08:00
- name : 📥 Download artifact
uses : actions/download-artifact@v4
with :
2024-04-10 22:29:59 +08:00
name : build-output
2024-04-10 02:52:38 +08:00
path : dist
2024-04-10 03:11:31 +08:00
2024-04-10 02:52:38 +08:00
- name : Log in to container registry
uses : docker/login-action@5f4866a30a54f16a52d2ecb4a3898e9e424939cf
with :
registry : ${{ env.REGISTRY }}
username : ${{ github.actor }}
password : ${{ secrets.GITHUB_TOKEN }}
- name : Extract metadata (tags, labels) for Docker
id : meta
uses : docker/metadata-action@c314eea2b27e3cb3c7d7be0618510234d8f6178e
with :
images : ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
tags : |
type=sha,format=short,event=branch
2024-04-10 22:29:59 +08:00
type=raw,value=pr_${{ github.event.pull_request.number }}
2024-04-10 02:52:38 +08:00
- name : Set up Docker Buildx
uses : docker/setup-buildx-action@d70bba72b1f3fd22344832f00baa16ece964efeb
- name : Build and push Docker image
uses : docker/build-push-action@f8bc7f46003ef0cf98b715743d86c2f1ccd01436
with :
context : .
platforms : linux/amd64,linux/arm64
push : true
tags : ${{ steps.meta.outputs.tags }}
2024-04-10 20:37:37 +08:00
labels : ${{ steps.meta.outputs.labels }}