From 301956b14ae18456ac491870c06d62ee8dd8d45f Mon Sep 17 00:00:00 2001 From: playbook-bot Date: Thu, 22 Jan 2026 14:52:31 +0800 Subject: [PATCH] :wrench: chore(ci): harden superpowers dispatch --- .gitea/workflows/trigger-superpowers-sync.yml | 55 ++++++++++++++++--- 1 file changed, 48 insertions(+), 7 deletions(-) diff --git a/.gitea/workflows/trigger-superpowers-sync.yml b/.gitea/workflows/trigger-superpowers-sync.yml index a36899f..572e1de 100644 --- a/.gitea/workflows/trigger-superpowers-sync.yml +++ b/.gitea/workflows/trigger-superpowers-sync.yml @@ -27,12 +27,53 @@ jobs: exit 1 fi - API_BASE="${GITHUB_API_URL:-${GITHUB_SERVER_URL}/api/v1}" + REPO_FULL="${{ github.repository }}" WORKFLOW_FILE="sync-superpowers.yml" - API="${API_BASE}/repos/${GITHUB_REPOSITORY}/actions/workflows/${WORKFLOW_FILE}/dispatches" + WORKFLOW_PATH=".gitea/workflows/${WORKFLOW_FILE}" - curl -sSf -X POST \ - -H "Authorization: token ${TOKEN}" \ - -H "Content-Type: application/json" \ - -d '{"ref":"main"}' \ - "$API" + if [ -n "${GITHUB_API_URL:-}" ]; then + API_BASE="$GITHUB_API_URL" + elif [ -n "${GITEA_API_URL:-}" ]; then + API_BASE="$GITEA_API_URL" + else + API_BASE="${GITHUB_SERVER_URL}/api/v1" + fi + + payload='{"ref":"main"}' + tmp_resp="$(mktemp)" + + try_dispatch() { + local url="$1" + local code + code=$(curl -sS -o "$tmp_resp" -w "%{http_code}" -X POST \ + -H "Authorization: token ${TOKEN}" \ + -H "Content-Type: application/json" \ + -d "$payload" \ + "$url" || true) + + if [ "$code" -ge 200 ] && [ "$code" -lt 300 ]; then + echo "Dispatched: $url" + rm -f "$tmp_resp" + return 0 + fi + + return 1 + } + + urls=( + "${API_BASE}/repos/${REPO_FULL}/actions/workflows/${WORKFLOW_FILE}/dispatches" + "${API_BASE}/repos/${REPO_FULL}/actions/workflows/${WORKFLOW_PATH}/dispatches" + "${API_BASE}/repos/${REPO_FULL}/actions/workflows/${WORKFLOW_FILE}/dispatch" + "${API_BASE}/repos/${REPO_FULL}/actions/workflows/${WORKFLOW_PATH}/dispatch" + ) + + for url in "${urls[@]}"; do + if try_dispatch "$url"; then + exit 0 + fi + done + + echo "ERROR: failed to dispatch workflow" >&2 + cat "$tmp_resp" >&2 + rm -f "$tmp_resp" + exit 1