This reverts commit 9d62f71cd9.
This caused a problem where if you pushed multiple branches or tags at
once, for example to the betabooru and production branches, then the
Docker image would only get built for one branch. This led to deploys
not fetching the latest image.
83 lines
3.2 KiB
YAML
83 lines
3.2 KiB
YAML
# On every commit, build and push a Docker image to the GitHub Container
|
|
# registry and to DockerHub.
|
|
#
|
|
# The resulting Docker images are tagged with the full commit hash, the git
|
|
# branch name, the git tag, and the 'latest' tag for the latest commit to
|
|
# master.
|
|
#
|
|
# https://github.com/danbooru/danbooru/pkgs/container/danbooru
|
|
# https://hub.docker.com/r/evazion/danbooru
|
|
#
|
|
# https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-container-registry
|
|
# https://docs.github.com/en/packages/managing-github-packages-using-github-actions-workflows/publishing-and-installing-a-package-with-github-actions
|
|
# https://docs.github.com/en/actions/guides/publishing-docker-images
|
|
|
|
name: Docker Build
|
|
|
|
# https://docs.github.com/en/actions/reference/events-that-trigger-workflows
|
|
on: [push, create, workflow_dispatch]
|
|
|
|
# https://docs.github.com/en/actions/reference/authentication-in-a-workflow#permissions-for-the-github_token
|
|
# https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idpermissions
|
|
permissions:
|
|
packages: write
|
|
|
|
jobs:
|
|
docker-build:
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
# https://github.com/docker/setup-buildx-action
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v1
|
|
|
|
# https://github.com/docker/login-action
|
|
# https://github.com/docker/build-push-action/blob/master/docs/advanced/push-multi-registries.md
|
|
- name: Login to Github Container Registry
|
|
uses: docker/login-action@v1
|
|
with:
|
|
registry: ghcr.io
|
|
username: ${{ github.repository_owner }}
|
|
password: ${{ github.token }}
|
|
|
|
- name: Login to DockerHub
|
|
uses: docker/login-action@v1
|
|
with:
|
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
|
|
|
# Generate Docker tags from Git tags.
|
|
# https://github.com/docker/metadata-action
|
|
- name: Generate Docker tags
|
|
uses: docker/metadata-action@v3
|
|
id: metadata
|
|
with:
|
|
images: |
|
|
docker.io/evazion/danbooru
|
|
ghcr.io/danbooru/danbooru
|
|
tags: |
|
|
type=sha,format=long,prefix=
|
|
type=ref,event=branch
|
|
type=ref,event=tag
|
|
type=ref,event=pr
|
|
# Tag `latest` on every commit pushed to master
|
|
# https://github.com/docker/metadata-action/issues/112
|
|
flavor: |
|
|
latest=${{ github.ref == 'refs/heads/master' }}
|
|
|
|
# https://github.com/docker/build-push-action
|
|
- name: Build image
|
|
uses: docker/build-push-action@v2
|
|
with:
|
|
push: true
|
|
tags: ${{ steps.metadata.outputs.tags }}
|
|
labels: ${{ steps.metadata.outputs.labels }}
|
|
|
|
# https://github.com/docker/build-push-action/blob/master/docs/advanced/cache.md#registry-cache
|
|
# https://dev.to/pst418/speed-up-multi-stage-docker-builds-in-ci-cd-with-buildkit-s-registry-cache-11gi
|
|
cache-from: type=registry,ref=ghcr.io/${{ github.repository }}:buildcache
|
|
cache-to: type=registry,ref=ghcr.io/${{ github.repository }}:buildcache,mode=max
|
|
|
|
build-args: |
|
|
SOURCE_COMMIT=${{ github.sha }}
|