From 231b2e52171caef2070af9aa9cb6d8d375db2089 Mon Sep 17 00:00:00 2001 From: iamdoubz <> Date: Thu, 5 Nov 2026 23:04:57 -0600 Subject: [PATCH] Build and push the Docker image when a release is published --- .gitea/workflows/release.yml | 42 ++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 .gitea/workflows/release.yml diff --git a/.gitea/workflows/release.yml b/.gitea/workflows/release.yml new file mode 100644 index 0000000..c9b590d --- /dev/null +++ b/.gitea/workflows/release.yml @@ -0,0 +1,42 @@ +# Builds the Docker image when a release is published and pushes it to this Gitea's container registry. +# Release v1.2.3 -> :1.2.3 :1.2 :1 :latest +# Pre-release v1.3.0 -> :1.3.0 :dev (:1 and :1.3 only move on stable releases) +# Setup: add a repository secret REGISTRY_TOKEN, a personal access token with the write:package scope. +# The built-in GITEA_TOKEN can't push packages. +name: Release image + +on: + release: + types: [published] + +jobs: + image: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Build and push + shell: bash + env: + TAG: ${{ gitea.event.release.tag_name }} + PRERELEASE: ${{ gitea.event.release.prerelease }} + SERVER: ${{ gitea.server_url }} + REPO: ${{ gitea.repository }} + OWNER: ${{ gitea.repository_owner }} + REGISTRY_TOKEN: ${{ secrets.REGISTRY_TOKEN }} + run: | + set -euo pipefail + version="${TAG#v}" + [[ "$version" =~ ^(([0-9]+)\.[0-9]+)\.[0-9]+ ]] || { echo "::error::Release tag '$TAG' isn't vX.Y.Z"; exit 1; } + if [[ "$PRERELEASE" == true ]]; then + tags=("$version" dev) # :X and :X.Y stay on the last stable release + else + tags=("$version" "${BASH_REMATCH[1]}" "${BASH_REMATCH[2]}" latest) + fi + + registry="${SERVER#*://}" + image="$registry/${REPO,,}" # registry paths must be lowercase + echo "$REGISTRY_TOKEN" | docker login "$registry" -u "$OWNER" --password-stdin + + docker build --label "org.opencontainers.image.version=$version" "${tags[@]/#/--tag=$image:}" . + for t in "${tags[@]}"; do docker push "$image:$t"; done -- 2.34.1