Rubocop: disable Rails/I18nLocaleTexts #3082
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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: | |
inputs: | |
debug_enabled: | |
type: boolean | |
description: "Run the build with tmate debugging enabled (https://github.com/marketplace/actions/debugging-with-tmate)" | |
required: false | |
default: false | |
# 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-qemu-action | |
# https://github.com/docker/setup-buildx-action#with-qemu | |
#- name: Set up QEMU | |
# uses: docker/setup-qemu-action@v1 | |
# with: | |
# platforms: arm64 | |
# https://github.com/docker/setup-buildx-action | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v3 | |
with: | |
config-inline: | | |
[worker.oci] | |
max-parallelism = 2 | |
# 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@v3 | |
with: | |
registry: ghcr.io | |
username: ${{ github.repository_owner }} | |
password: ${{ github.token }} | |
- name: Login to DockerHub | |
uses: docker/login-action@v3 | |
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@v5 | |
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@v5 | |
with: | |
push: true | |
tags: ${{ steps.metadata.outputs.tags }} | |
labels: ${{ steps.metadata.outputs.labels }} | |
#platforms: linux/amd64,linux/arm64 | |
platforms: linux/amd64 | |
target: production | |
# 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: | | |
DOCKER_IMAGE_REVISION=${{ github.sha }} | |
DOCKER_IMAGE_BUILD_DATE=${{ fromJSON(steps.metadata.outputs.json).labels['org.opencontainers.image.created'] }} | |
# Generate Docker tags from Git tags for the development image. | |
- name: Generate Docker tags for development image | |
uses: docker/metadata-action@v5 | |
id: development-metadata | |
with: | |
images: | | |
docker.io/evazion/danbooru | |
ghcr.io/danbooru/danbooru | |
tags: | | |
type=sha,format=long,prefix=development- | |
type=ref,event=branch,prefix=development- | |
type=ref,event=tag,prefix=development- | |
type=ref,event=pr,prefix=development- | |
type=raw,value=development,enable={{is_default_branch}} | |
flavor: | | |
latest=false | |
# https://github.com/docker/build-push-action | |
- name: Build development image | |
uses: docker/build-push-action@v5 | |
with: | |
push: true | |
tags: ${{ steps.development-metadata.outputs.tags }} | |
labels: ${{ steps.development-metadata.outputs.labels }} | |
#platforms: linux/amd64,linux/arm64 | |
platforms: linux/amd64 | |
target: development | |
# 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: | | |
DOCKER_IMAGE_REVISION=${{ github.sha }} | |
DOCKER_IMAGE_BUILD_DATE=${{ fromJSON(steps.development-metadata.outputs.json).labels['org.opencontainers.image.created'] }} | |
# https://github.com/marketplace/actions/debugging-with-ssh | |
- name: Setup tmate session | |
uses: mxschmitt/action-tmate@v3 | |
if: ${{ always() && (github.event_name == 'workflow_dispatch' && inputs.debug_enabled) }} | |
with: | |
limit-access-to-actor: true |