diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 59f7af2..1eed860 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -34,6 +34,35 @@ jobs: env: CI: true + - name: Auto-merge PR on green + if: ${{ github.event_name == 'pull_request' }} + env: + CI_TOKEN: ${{ secrets.CI_TOKEN }} + GITEA_BASE_URL: https://gitea.jaybe.dev + PR_NUMBER: ${{ github.event.pull_request.number }} + REPO: ${{ github.repository }} + run: | + set -euo pipefail + if [ -z "${CI_TOKEN:-}" ]; then + echo "CI_TOKEN not set; skipping auto-merge"; exit 0; fi + OWNER=$(echo "$REPO" | cut -d'/' -f1) + NAME=$(echo "$REPO" | cut -d'/' -f2) + echo "Checking labels for PR #$PR_NUMBER on $OWNER/$NAME" + LABELS_JSON=$(curl -sS -X GET \ + -H "Authorization: token ${CI_TOKEN}" \ + "${GITEA_BASE_URL}/api/v1/repos/${OWNER}/${NAME}/issues/${PR_NUMBER}") + echo "Labels payload: $LABELS_JSON" | sed 's/.\{200\}$/.../' + if ! echo "$LABELS_JSON" | grep -qi '"name":"automerge"'; then + echo "Label 'automerge' not present; skipping merge"; exit 0; fi + echo "Label 'automerge' present; proceeding to merge" + echo "Merging PR #$PR_NUMBER for $OWNER/$NAME" + RESP=$(curl -sS -X POST \ + -H "Content-Type: application/json" \ + -H "Authorization: token ${CI_TOKEN}" \ + "${GITEA_BASE_URL}/api/v1/repos/${OWNER}/${NAME}/pulls/${PR_NUMBER}/merge" \ + -d '{"Do":"merge","MergeMessage":"auto-merge: CI green"}' || true) + echo "API response: $RESP" + - name: Upload Playwright report if: always() uses: actions/upload-artifact@v4