Forgejo's pull_request_review_comment event does not populate github.event.comment.body in the workflow context (it's always empty), so the contains() check never matches. The action code does its own trigger phrase validation, so it's safe to let these events through based on event name alone. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
95 lines
3.3 KiB
YAML
95 lines
3.3 KiB
YAML
name: Claude Code (Forgejo)
|
|
|
|
on:
|
|
issue_comment:
|
|
types: [created]
|
|
pull_request_review_comment:
|
|
types: [created]
|
|
issues:
|
|
types: [opened, assigned, labeled]
|
|
pull_request_review:
|
|
types: [submitted]
|
|
|
|
concurrency:
|
|
group: claude-${{ github.event.issue.number || github.event.pull_request.number }}-${{ github.run_id }}
|
|
|
|
jobs:
|
|
# Temporary debug job to inspect Forgejo event payloads (PRD #6 E2E testing)
|
|
debug-event:
|
|
runs-on: grunt
|
|
steps:
|
|
- name: Dump event context
|
|
run: |
|
|
echo "=== Event Context ==="
|
|
echo "github.event_name: ${{ github.event_name }}"
|
|
echo "github.event.action: ${{ github.event.action }}"
|
|
echo ""
|
|
echo "=== Comment fields ==="
|
|
echo "github.event.comment.body: ${{ github.event.comment.body }}"
|
|
echo "github.event.comment.id: ${{ github.event.comment.id }}"
|
|
echo ""
|
|
echo "=== Review fields ==="
|
|
echo "github.event.review.body: ${{ github.event.review.body }}"
|
|
echo "github.event.review.id: ${{ github.event.review.id }}"
|
|
echo ""
|
|
echo "=== GITHUB_EVENT_NAME env: $GITHUB_EVENT_NAME ==="
|
|
echo "=== GITHUB_EVENT_PATH: $GITHUB_EVENT_PATH ==="
|
|
echo ""
|
|
echo "=== Event Payload ==="
|
|
if [ -f "$GITHUB_EVENT_PATH" ]; then
|
|
cat "$GITHUB_EVENT_PATH"
|
|
else
|
|
echo "GITHUB_EVENT_PATH file not found!"
|
|
env | grep -i event || true
|
|
fi
|
|
|
|
claude:
|
|
if: |
|
|
(github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) ||
|
|
(github.event_name == 'pull_request_review_comment' || github.event_name == 'pull_request_comment') ||
|
|
(github.event_name == 'pull_request_review' && contains(github.event.review.body, '@claude')) ||
|
|
(github.event_name == 'issues' && (
|
|
github.event.action == 'labeled' ||
|
|
github.event.action == 'assigned' ||
|
|
contains(github.event.issue.body, '@claude') ||
|
|
contains(github.event.issue.title, '@claude')
|
|
))
|
|
runs-on: grunt
|
|
steps:
|
|
- name: Checkout
|
|
uses: https://${{ secrets.READ_REPO_TOKEN }}@git.wxs.ro/xternal/checkout@v6.0.2
|
|
with:
|
|
fetch-depth: 1
|
|
|
|
- name: Run Claude Code
|
|
id: claude
|
|
uses: ./
|
|
with:
|
|
claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
|
|
github_token: ${{ secrets.CLAUDE_BOT_TOKEN }}
|
|
bot_id: "48"
|
|
bot_name: "claude"
|
|
bot_email: "claude@wxs.ro"
|
|
platform: "forgejo"
|
|
assignee_trigger: "claude"
|
|
env:
|
|
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
|
|
|
|
- name: Debug on failure
|
|
if: failure()
|
|
run: |
|
|
echo "=== Debug Info ==="
|
|
echo "Platform: PLATFORM=$PLATFORM FORGEJO=$FORGEJO"
|
|
echo "Server URL: $GITHUB_SERVER_URL"
|
|
echo "API URL: $GITHUB_API_URL"
|
|
echo "Event: ${{ github.event_name }} / ${{ github.event.action }}"
|
|
echo "Actor: ${{ github.actor }}"
|
|
echo ""
|
|
EXEC_FILE="${{ steps.claude.outputs.execution_file }}"
|
|
if [ -f "$EXEC_FILE" ]; then
|
|
echo "--- Execution file contents ---"
|
|
cat "$EXEC_FILE"
|
|
else
|
|
echo "No execution file found"
|
|
fi
|