Example on how to add an image flavour #14
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
name: Publish Docker image | |
on: | |
workflow_dispatch: | |
pull_request: | |
push: | |
branches: | |
- main | |
- renovate/** | |
release: | |
types: [ published ] | |
permissions: | |
contents: read | |
packages: write | |
env: | |
REGISTRY: ghcr.io | |
IMAGE_NAME: ${{ github.repository }} # <organization>/<repository> | |
BUILD_ARCHITECTURES: linux/amd64,linux/arm64 | |
jobs: | |
build-image: | |
name: Build Docker images | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: docker/setup-qemu-action@v3 | |
- uses: docker/setup-buildx-action@v3 | |
- uses: docker/build-push-action@v5 | |
id: base-image | |
with: | |
push: false | |
platforms: ${{ env.BUILD_ARCHITECTURES }} | |
cache-from: type=gha | |
cache-to: type=gha,mode=max | |
- run: | | |
echo 'DEBUG: ${{ steps.base-image.outputs }}' | |
- uses: docker/build-push-action@v5 | |
with: | |
push: false | |
platforms: ${{ env.BUILD_ARCHITECTURES }} | |
cache-from: type=gha | |
cache-to: type=gha,mode=max | |
file: Dockerfile.nginx | |
build-args: | | |
BASE_IMAGE=${{ steps.base-image.outputs.digest }} | |
- uses: docker/build-push-action@v5 | |
with: | |
push: false | |
platforms: ${{ env.BUILD_ARCHITECTURES }} | |
cache-from: type=gha | |
cache-to: type=gha,mode=max | |
file: Dockerfile.caddy | |
build-args: | | |
BASE_IMAGE=${{ steps.base-image.outputs.digest }} | |
push-image: | |
name: Push images | |
runs-on: ubuntu-latest | |
needs: [ build-image ] | |
if: ${{ github.event_name == 'release' || github.ref_name == github.event.repository.default_branch}} | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: docker/setup-qemu-action@v3 | |
- uses: docker/setup-buildx-action@v3 | |
- uses: docker/login-action@v3 | |
with: | |
registry: ${{ env.REGISTRY }} | |
username: ${{ github.repository_owner }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- uses: docker/metadata-action@v5 | |
id: meta-php-fpm | |
with: | |
context: git | |
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} | |
flavor: | | |
latest=auto | |
tags: | | |
type=edge,branch=${{ github.event.repository.default_branch }} | |
- uses: docker/build-push-action@v5 | |
with: | |
push: true | |
platforms: ${{ env.BUILD_ARCHITECTURES }} | |
cache-from: type=gha | |
cache-to: type=gha,mode=max | |
annotations: ${{ steps.meta-php-fpm.outputs.annotations }} | |
labels: ${{ steps.meta-php-fpm.outputs.labels }} | |
tags: ${{ steps.meta-php-fpm.outputs.tags }} | |
- uses: docker/metadata-action@v5 | |
id: meta-nginx | |
with: | |
context: git | |
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} | |
flavor: | | |
latest=auto | |
suffix=nginx | |
tags: | | |
type=edge,branch=${{ github.event.repository.default_branch }} | |
- uses: docker/build-push-action@v5 | |
with: | |
push: true | |
platforms: ${{ env.BUILD_ARCHITECTURES }} | |
cache-from: type=gha | |
cache-to: type=gha,mode=max | |
annotations: ${{ steps.meta-nginx.outputs.annotations }} | |
labels: ${{ steps.meta-nginx.outputs.labels }} | |
tags: ${{ steps.meta-nginx.outputs.tags }} | |
file: Dockerfile.nginx | |
build-args: | | |
BASE_IMAGE=davis-build:${{ fromJSON(steps.meta-php-fpm.outputs.json).tags[0] }} | |
- uses: docker/metadata-action@v5 | |
id: meta-caddy | |
with: | |
context: git | |
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} | |
flavor: | | |
latest=auto | |
suffix=caddy | |
tags: | | |
type=edge,branch=${{ github.event.repository.default_branch }} | |
- uses: docker/build-push-action@v5 | |
with: | |
push: true | |
platforms: ${{ env.BUILD_ARCHITECTURES }} | |
cache-from: type=gha | |
cache-to: type=gha,mode=max | |
annotations: ${{ steps.meta-caddy.outputs.annotations }} | |
labels: ${{ steps.meta-caddy.outputs.labels }} | |
tags: ${{ steps.meta-caddy.outputs.tags }} | |
file: Dockerfile.caddy | |
build-args: | | |
BASE_IMAGE=davis-build:${{ fromJSON(steps.meta-php-fpm.outputs.json).tags[0] }} |