diff --git a/.gitea/workflows/auto-pr.yml b/.gitea/workflows/auto-pr.yml index 38afd5d..87d8fe2 100644 --- a/.gitea/workflows/auto-pr.yml +++ b/.gitea/workflows/auto-pr.yml @@ -55,12 +55,29 @@ jobs: done if [ -n "${PR_NUMBER:-}" ]; then - echo "Adding 'automerge' label to PR #$PR_NUMBER" - curl -sS -X POST \ - -H "Content-Type: application/json" \ - -H "Authorization: token ${CI_TOKEN}" \ - "${GITEA_BASE_URL}/api/v1/repos/${OWNER}/${NAME}/issues/${PR_NUMBER}/labels" \ - -d '["automerge"]' || true + echo "Resolving label id for 'automerge' in $OWNER/$NAME" + curl -sS -o /tmp/labels.json -H "Authorization: token ${CI_TOKEN}" \ + "${GITEA_BASE_URL}/api/v1/repos/${OWNER}/${NAME}/labels" + LID=$(awk 'BEGIN{RS=","} /"name":"automerge"/ {if (match($0,/"id":([0-9]+)/,m)) {print m[1]; exit}}' /tmp/labels.json || true) + if [ -z "${LID:-}" ]; then + echo "Label 'automerge' not found. Creating..." + curl -sS -o /tmp/create_label.json -X POST \ + -H "Content-Type: application/json" \ + -H "Authorization: token ${CI_TOKEN}" \ + "${GITEA_BASE_URL}/api/v1/repos/${OWNER}/${NAME}/labels" \ + -d '{"name":"automerge","color":"#0ea5e9"}' + LID=$(sed -n 's/.*"id":\([0-9]*\).*/\1/p' /tmp/create_label.json | head -n1 || true) + fi + if [ -n "${LID:-}" ]; then + echo "Adding 'automerge' (id=$LID) label to PR #$PR_NUMBER" + curl -sS -X POST \ + -H "Content-Type: application/json" \ + -H "Authorization: token ${CI_TOKEN}" \ + "${GITEA_BASE_URL}/api/v1/repos/${OWNER}/${NAME}/issues/${PR_NUMBER}/labels" \ + -d '{"labels":['"${LID}"']}' || true + else + echo "Failed to resolve label id; skipping label add" + fi else - echo "PR number could not be determined after retries; skipping label add" + echo "PR number could not be determined; skipping label add" fi