3 Commits

Author SHA1 Message Date
eric b8e9b65995 fix(ci): forward auth token across http->https redirect on release publish
curl drops the Authorization header when -L follows Gitea's 308 redirect from
http server_url to https, so the API replied 'token is required' and publish
failed with no release id. Add --location-trusted to every publish curl.
2026-09-07 21:01:34 -07:00
eric 29b048e066 chore(plugin): release v0.1.3 2026-09-07 21:01:21 -07:00
eric 932171c34d Merge pull request 'fix(ci): follow Gitea http->https redirect when publishing releases' (#1) from ci-publish-fix into main
release / contract-test (push) Successful in 45s
release / test-and-release (push) Failing after 12s
2026-09-08 03:56:33 +00:00
2 changed files with 10 additions and 8 deletions
+9 -7
View File
@@ -83,17 +83,19 @@ jobs:
tar_file=$(ls plugin/dist/*.tar.gz | head -n 1)
api_url="${{ github.server_url }}/api/v1/repos/${{ github.repository }}"
# server_url may be http while Gitea redirects (308) to https:
# curl needs -L or the POST returns an empty body. Release may also
# already exist (retried run) — reuse it instead of failing.
# server_url is http and Gitea answers with a 308 redirect to https.
# curl needs -L to follow, AND --location-trusted: without it curl
# drops the Authorization header on the scheme-changing redirect and
# Gitea replies "token is required". Release may already exist
# (retried run) — reuse it instead of failing.
fetch_id() { python3 -c "import json,sys;print(json.load(sys.stdin).get('id') or '')" 2>/dev/null; }
response=$(curl -s -k -L -H "Authorization: token $GITEA_TOKEN" \
response=$(curl -s -k -L --location-trusted -H "Authorization: token $GITEA_TOKEN" \
"$api_url/releases/tags/$tag_name")
release_id=$(printf '%s' "$response" | fetch_id)
if [ -z "$release_id" ]; then
response=$(curl -s -k -L -X POST "$api_url/releases" \
response=$(curl -s -k -L --location-trusted -X POST "$api_url/releases" \
-H "Authorization: token $GITEA_TOKEN" \
-H "Content-Type: application/json" \
-d "{\"tag_name\": \"$tag_name\", \"name\": \"$tag_name\", \"body\": \"Release $tag_name for hermes-meshtastic plugin\"}")
@@ -101,11 +103,11 @@ jobs:
fi
if [ -n "$release_id" ]; then
curl -s -k -L -X POST "$api_url/releases/$release_id/assets?name=$(basename "$wheel_file")" \
curl -s -k -L --location-trusted -X POST "$api_url/releases/$release_id/assets?name=$(basename "$wheel_file")" \
-H "Authorization: token $GITEA_TOKEN" \
-H "Content-Type: application/octet-stream" \
--data-binary "@$wheel_file"
curl -s -k -L -X POST "$api_url/releases/$release_id/assets?name=$(basename "$tar_file")" \
curl -s -k -L --location-trusted -X POST "$api_url/releases/$release_id/assets?name=$(basename "$tar_file")" \
-H "Authorization: token $GITEA_TOKEN" \
-H "Content-Type: application/octet-stream" \
--data-binary "@$tar_file"
+1 -1
View File
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
[project]
name = "hermes-meshtastic"
version = "0.1.2"
version = "0.1.3"
description = "Meshtastic LoRa mesh gateway adapter plugin for Hermes Agent"
readme = "README.md"
requires-python = ">=3.10"