datarhei-dragonfork-core/.forgejo/workflows/publish.yml

80 lines
2.7 KiB
YAML
Raw Permalink Normal View History

# Forgejo Actions — Docker image publish for Dragon Fork.
#
# Triggers on semver tags (v*.*.*-dragonfork or v*.*.*). Builds a
# multi-arch image (linux/amd64 + linux/arm64) and pushes to the
# configured registry. The image name and registry are controlled by
# repository variables:
#
# REGISTRY — e.g. ghcr.io or registry.wilddragon.net
# IMAGE_NAME — e.g. zgaetano/dragonfork-core (defaults to repo name)
#
# The push credential must be stored as a repository secret:
# REGISTRY_TOKEN — password / token for the registry user
# REGISTRY_USER — registry username (defaults to repo owner)
#
# Quick-start after setting the variables/secrets:
# git tag v0.2.0-dragonfork && git push origin v0.2.0-dragonfork
name: publish
on:
push:
tags:
- 'v*.*.*'
- 'v*.*.*-dragonfork'
jobs:
build-and-push:
name: Build and push multi-arch image
runs-on: ubuntu-22.04
permissions:
contents: read
packages: write
steps:
- uses: actions/checkout@v4
- name: Set up QEMU (for arm64 cross-build)
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Derive image metadata
id: meta
run: |
REGISTRY="${{ vars.REGISTRY || 'ghcr.io' }}"
IMAGE="${{ vars.IMAGE_NAME || github.repository }}"
TAG="${GITHUB_REF_NAME}"
# Normalise: strip leading 'v' for the semver part, keep full tag too
SEMVER="${TAG#v}"
echo "image=${REGISTRY}/${IMAGE}" >> "$GITHUB_OUTPUT"
echo "tag=${TAG}" >> "$GITHUB_OUTPUT"
echo "semver=${SEMVER}" >> "$GITHUB_OUTPUT"
- name: Login to registry
uses: docker/login-action@v3
with:
registry: ${{ vars.REGISTRY || 'ghcr.io' }}
username: ${{ vars.REGISTRY_USER || github.repository_owner }}
password: ${{ secrets.REGISTRY_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v5
with:
context: .
file: Dockerfile
platforms: linux/amd64,linux/arm64
push: true
tags: |
${{ steps.meta.outputs.image }}:${{ steps.meta.outputs.tag }}
${{ steps.meta.outputs.image }}:latest
labels: |
org.opencontainers.image.title=Dragon Fork Core
org.opencontainers.image.description=Datarhei Core with WebRTC egress
org.opencontainers.image.version=${{ steps.meta.outputs.semver }}
org.opencontainers.image.revision=${{ github.sha }}
org.opencontainers.image.source=${{ github.server_url }}/${{ github.repository }}
cache-from: type=gha
cache-to: type=gha,mode=max