From c0b5ec385c7fe93b55a87e23af6b9ce7b392d4f4 Mon Sep 17 00:00:00 2001 From: Micheal Wilkinson Date: Sat, 21 Mar 2026 20:03:00 +0000 Subject: [PATCH] fix(release): normalize wrapped release-id before asset upload Teacup can wrap workflow outputs as %touch docker-compose.yml(string=...), which produced an invalid releases/{id}/assets URL and a 404 in Upload release binaries. Unwrap and validate release-id before building the API path. --- .gitea/workflows/prepare-release.yml | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/.gitea/workflows/prepare-release.yml b/.gitea/workflows/prepare-release.yml index e760677..efe0c87 100644 --- a/.gitea/workflows/prepare-release.yml +++ b/.gitea/workflows/prepare-release.yml @@ -264,7 +264,18 @@ jobs: run: | set -euo pipefail - release_api="${GITHUB_API_URL:-${GITHUB_SERVER_URL%/}/api/v1}/repos/${GITHUB_REPOSITORY}/releases/${RELEASE_ID}/assets" + raw_release_id="$(printf '%s' "${RELEASE_ID:-}" | sed 's/^[[:space:]]\+//; s/[[:space:]]\+$//')" + if [[ "$raw_release_id" =~ ^%\!t\(string=(.*)\)$ ]]; then + raw_release_id="${BASH_REMATCH[1]}" + fi + + release_id="$(printf '%s' "$raw_release_id" | sed 's/^[[:space:]]\+//; s/[[:space:]]\+$//')" + if ! [[ "$release_id" =~ ^[0-9]+$ ]]; then + echo "Invalid release id from publish step: '${RELEASE_ID}'" >&2 + exit 1 + fi + + release_api="${GITHUB_API_URL:-${GITHUB_SERVER_URL%/}/api/v1}/repos/${GITHUB_REPOSITORY}/releases/${release_id}/assets" for asset in dist/*; do name="$(basename "$asset")"