3 Commits

Author SHA1 Message Date
unkinben b5978a18a1 fix/release-pipeline-python (#8)
ci/woodpecker/release/release Pipeline failed
Reviewed-on: #8
2026-03-26 13:46:37 +11:00
unkinben 6d7703c3f2 fix: use RELEASER_TOKEN for Gitea API auth instead of droneci password (#7)
ci/woodpecker/release/release Pipeline failed
droneci user lacks write access; switch to token-based auth header.

💘 Generated with Crush

Assisted-by: Claude Sonnet 4.6 via Crush <crush@charm.land>

Reviewed-on: #7
2026-03-26 13:40:15 +11:00
unkinben 3291f8f73d fix: look up existing release by tag instead of creating a new one (#6)
ci/woodpecker/release/release Pipeline failed
tea creates the release before the pipeline runs; POST was failing with
conflict, leaving RELEASE_ID empty and skipping the asset upload.
Now GETs the release by tag, PATCHes its body, then uploads the binary.

💘 Generated with Crush

Assisted-by: Claude Sonnet 4.6 via Crush <crush@charm.land>

Reviewed-on: #6
2026-03-26 13:17:25 +11:00
+12 -11
View File
@@ -17,8 +17,8 @@ steps:
- name: release - name: release
image: git.unkin.net/unkin/almalinux9-base:20260325 image: git.unkin.net/unkin/almalinux9-base:20260325
environment: environment:
DRONECI_PASSWORD: RELEASER_TOKEN:
from_secret: DRONECI_PASSWORD from_secret: RELEASER_TOKEN
commands: commands:
- | - |
PREV_TAG=$(git describe --tags --abbrev=0 HEAD^ 2>/dev/null || echo "") PREV_TAG=$(git describe --tags --abbrev=0 HEAD^ 2>/dev/null || echo "")
@@ -28,19 +28,20 @@ steps:
NOTES=$(git log --merges --pretty=format:"- %s") NOTES=$(git log --merges --pretty=format:"- %s")
fi fi
BODY=$(printf '%s' "$NOTES" | sed 's/"/\\"/g; s/$/\\n/' | tr -d '\n') BODY=$(printf '%s' "$NOTES" | sed 's/"/\\"/g; s/$/\\n/' | tr -d '\n')
RELEASE_RESPONSE=$(curl -sf -X POST "https://git.unkin.net/api/v1/repos/${CI_REPO}/releases" \ GET_RESPONSE=$(curl -sk "https://git.unkin.net/api/v1/repos/${CI_REPO}/releases/tags/${CI_COMMIT_TAG}")
-u "droneci:$DRONECI_PASSWORD" \ echo "GET response: ${GET_RESPONSE}"
-H "Content-Type: application/json" \ RELEASE_ID=$(printf '%s' "${GET_RESPONSE}" | grep -o '"id":[0-9]*' | head -1 | cut -d: -f2)
-d "{\"tag_name\":\"${CI_COMMIT_TAG}\",\"name\":\"${CI_COMMIT_TAG}\",\"body\":\"${BODY}\"}")
echo "Release API response: ${RELEASE_RESPONSE}"
RELEASE_ID=$(echo "${RELEASE_RESPONSE}" | grep -o '"id":[0-9]*' | head -1 | cut -d: -f2)
if [ -z "$RELEASE_ID" ]; then if [ -z "$RELEASE_ID" ]; then
echo "ERROR: failed to obtain release ID" >&2 echo "ERROR: failed to find release for tag ${CI_COMMIT_TAG}" >&2
exit 1 exit 1
fi fi
echo "Release ID: ${RELEASE_ID}" echo "Release ID: ${RELEASE_ID}"
curl -sf -X POST "https://git.unkin.net/api/v1/repos/${CI_REPO}/releases/${RELEASE_ID}/assets" \ curl -sk -X PATCH "https://git.unkin.net/api/v1/repos/${CI_REPO}/releases/${RELEASE_ID}" \
-u "droneci:$DRONECI_PASSWORD" \ -H "Authorization: token ${RELEASER_TOKEN}" \
-H "Content-Type: application/json" \
-d "{\"body\":\"${BODY}\"}"
curl -sk -X POST "https://git.unkin.net/api/v1/repos/${CI_REPO}/releases/${RELEASE_ID}/assets" \
-H "Authorization: token ${RELEASER_TOKEN}" \
-F "attachment=@node-lookup" -F "attachment=@node-lookup"
backend_options: backend_options:
kubernetes: kubernetes: