You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
recyclarr/.github/workflows/reusable-docker.yml

84 lines
2.5 KiB

# yaml-language-server: $schema=https://json.schemastore.org/github-workflow.json
on:
workflow_call:
env:
SHOULD_PUBLISH: ${{ startsWith(github.ref, 'refs/tags/') || github.ref_name == 'master' }}
jobs:
docker:
name: Build & Push Docker Image
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0 # avoid shallow clone for GitVersion
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Buildx
uses: docker/setup-buildx-action@v3
- name: Install GitVersion
uses: gittools/actions/gitversion/setup@v0
with:
versionSpec: 6.x
includePrerelease: true # Remove this once v6 goes stable
- name: Determine Version
uses: gittools/actions/gitversion/execute@v0
id: gitversion
- name: Set Docker Tags
id: meta
uses: docker/metadata-action@v5
env:
semver: >-
type=semver,
value=${{ steps.gitversion.outputs.semVer }}
prod: >-
enable=${{ steps.gitversion.outputs.preReleaseTag == '' }}
with:
images: |
${{ github.repository }}
ghcr.io/${{ github.repository }}
tags: |
type=edge,branch=master
${{ env.semver }},${{ env.prod }},pattern={{version}}
${{ env.semver }},${{ env.prod }},pattern={{major}}.{{minor}}
${{ env.semver }},${{ env.prod }},pattern={{major}}
- name: Login to Docker Hub
if: env.SHOULD_PUBLISH == 'true'
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Login to GHCR
if: env.SHOULD_PUBLISH == 'true'
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build & Push Image
uses: docker/build-push-action@v6
env:
DOCKER_BUILD_SUMMARY: false
DOCKER_BUILD_RECORD_UPLOAD: false
with:
context: .
push: ${{ env.SHOULD_PUBLISH == 'true' }}
no-cache: true
platforms: linux/arm/v7,linux/arm64,linux/amd64
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
# Added to prevent tons of untagged images in GHCR.
# See: https://github.com/docker/build-push-action/issues/894
provenance: false