diff --git a/.forgejo/workflows/publish-image.yml b/.forgejo/workflows/publish-image.yml index 0d0a218..3a9e199 100644 --- a/.forgejo/workflows/publish-image.yml +++ b/.forgejo/workflows/publish-image.yml @@ -4,6 +4,8 @@ on: push: branches: - main + tags: + - 'v*' workflow_dispatch: inputs: image_tag: @@ -25,10 +27,12 @@ jobs: runs-on: docker-desktop env: EVENT_NAME: ${{ forgejo.event_name }} + REF_TYPE: ${{ forgejo.ref_type }} + REF_NAME: ${{ forgejo.ref_name }} REGISTRY_HOST: ${{ vars.REGISTRY_HOST }} REGISTRY_USERNAME: ${{ vars.REGISTRY_USERNAME }} IMAGE_REPO: cliper/hugo-deployment - IMAGE_TAG: ${{ inputs.image_tag != '' && inputs.image_tag || forgejo.sha }} + IMAGE_TAG: ${{ inputs.image_tag != '' && inputs.image_tag || (forgejo.ref_type == 'tag' && forgejo.ref_name || forgejo.sha) }} PUBLISH_LATEST: ${{ inputs.publish_latest }} steps: - name: Checkout repository @@ -70,6 +74,6 @@ jobs: run: | set -euo pipefail docker push "${REGISTRY_HOST}/${IMAGE_REPO}:${IMAGE_TAG}" - if [ "${EVENT_NAME:-}" = "push" ] || [ "${PUBLISH_LATEST:-false}" = "true" ]; then + if { [ "${EVENT_NAME:-}" = "push" ] && [ "${REF_TYPE:-}" = "branch" ] && [ "${REF_NAME:-}" = "main" ]; } || [ "${PUBLISH_LATEST:-false}" = "true" ]; then docker push "${REGISTRY_HOST}/${IMAGE_REPO}:latest" fi diff --git a/README.md b/README.md index 4e741c7..c3d9161 100644 --- a/README.md +++ b/README.md @@ -29,6 +29,7 @@ Shared Forgejo deployment image scaffold for Develton-managed Hugo sites. The publish workflow runs on `docker-desktop` and publishes the versioned tag on every run. - Pushes to `main` publish `registry.develton.com/cliper/hugo-deployment:` and also move `latest` +- Pushes of Git tags like `v1` publish the matching image tag without moving `latest` - Manual runs can override the tag with `image_tag` - Manual runs do not move `latest` unless `publish_latest` is set to `true`