diff --git a/.gitea/workflows/codeant.yml b/.gitea/workflows/codeant.yml index 6dab2bd..6049af8 100644 --- a/.gitea/workflows/codeant.yml +++ b/.gitea/workflows/codeant.yml @@ -44,12 +44,28 @@ jobs: echo "CLI version: $(codeant --version)" echo "=== API connectivity test ===" - HTTP_CODE=$(curl -s -o /tmp/api_response.txt -w "%{http_code}" \ + HTTP_CODE=$(curl -sS -D /tmp/api_headers.txt -o /tmp/api_response.txt -w "%{http_code}" \ -H "Authorization: Bearer ${CODEANT_API_KEY:-}" \ -H "Content-Type: application/json" \ https://service.codeant.ai/health 2>/dev/null || echo "CURL_FAILED") echo "HTTP status: $HTTP_CODE" + echo "--- Response headers (first 20 lines) ---" + sed -n '1,20p' /tmp/api_headers.txt || true + echo "--- Response body (first 200 chars) ---" head -c 200 /tmp/api_response.txt || true + echo + + if [ "$HTTP_CODE" = "200" ]; then + echo "Connectivity OK and endpoint accepted request." + elif [ "$HTTP_CODE" = "401" ]; then + echo "Connectivity OK (service reachable), but endpoint returned 401 Unauthorized." + echo "This usually means token/auth format for this endpoint is not accepted." + elif [ "$HTTP_CODE" = "CURL_FAILED" ]; then + echo "Connectivity FAILED (curl could not reach service.codeant.ai)." + exit 1 + else + echo "Connectivity reached service but got unexpected status: $HTTP_CODE" + fi env: CODEANT_API_KEY: ${{ secrets.CODEANT_API_TOKEN }} @@ -66,28 +82,42 @@ jobs: echo "==== FILES IN LAST COMMIT ====" git show --name-only --pretty="" HEAD - echo "==== IS MERGE COMMIT ====" - PARENTS=$(git log -1 --format="%P" HEAD | wc -w) - echo "Parent count: $PARENTS" - if [ "$PARENTS" -gt 1 ]; then - echo "HEAD is a merge commit" - git log --oneline HEAD~1..HEAD --first-parent || true - fi + echo "==== IS MERGE COMMIT ====" + PARENTS=$(git log -1 --format="%P" HEAD | wc -w) + echo "Parent count: $PARENTS" + if [ "$PARENTS" -gt 1 ]; then + echo "HEAD is a merge commit" + git log --oneline HEAD~1..HEAD --first-parent || true + fi - name: Run CodeAnt Review run: | if [ "${GITHUB_EVENT_NAME}" = "pull_request" ] && [ -n "${GITHUB_BASE_REF}" ]; then echo "Running PR review against base branch: ${GITHUB_BASE_REF}" - codeant review --base "${GITHUB_BASE_REF}" 2>&1 | tee review.txt || true + for attempt in 1 2 3; do + echo "PR review attempt $attempt/3" + codeant review --base "${GITHUB_BASE_REF}" 2>&1 | tee review.txt || true + if ! grep -q "Unexpected token '<'" review.txt; then + break + fi + sleep $((attempt * 15)) + done else # For push to main: check if HEAD is a merge commit PARENTS=$(git log -1 --format="%P" HEAD | wc -w) if [ "$PARENTS" -gt 1 ]; then - # Merge commit: review everything brought in by the merge (HEAD vs first parent) - echo "Merge commit detected - reviewing changes vs HEAD~1" - codeant review --base-commit HEAD~1 2>&1 | tee review.txt || true + # Merge commits often include very large diffs and are already reviewed on pull_request. + echo "Merge commit detected on push; skipping review here." + echo "PR workflow run is the source of truth for full review." | tee review.txt else echo "Regular push - reviewing last commit" - codeant review --last-commit 2>&1 | tee review.txt || true + for attempt in 1 2 3; do + echo "Push review attempt $attempt/3" + codeant review --last-commit 2>&1 | tee review.txt || true + if ! grep -q "Unexpected token '<'" review.txt; then + break + fi + sleep $((attempt * 15)) + done fi fi