Procházet zdrojové kódy

Clean up Claude workflows (#22038)

* Clean up Claude workflows

* Tweak triage prompt

* Fix permissions
Jeremy Stretch před 1 měsícem
rodič
revize
1b1989ea98

+ 0 - 37
.github/workflows/claude-code-review.yml

@@ -1,37 +0,0 @@
-name: Claude Code Review
-
-on:
-  pull_request:
-    types: [opened, synchronize, ready_for_review, reopened]
-
-jobs:
-  claude-review:
-    # Only run for PRs submitted by organization members or owners
-    if: |
-      github.repository == 'netbox-community/netbox' &&
-      (github.event.pull_request.author_association == 'MEMBER' ||
-      github.event.pull_request.author_association == 'OWNER')
-
-    runs-on: ubuntu-latest
-    permissions:
-      contents: read
-      pull-requests: read
-      issues: read
-      id-token: write
-
-    steps:
-      - name: Checkout repository
-        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
-        with:
-          fetch-depth: 1
-
-      - name: Run Claude Code Review
-        id: claude-review
-        uses: anthropics/claude-code-action@e763fe78de2db7389e04818a00b5ff8ba13d1360 # v1
-        with:
-          claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
-          plugin_marketplaces: 'https://github.com/anthropics/claude-code.git'
-          plugins: 'code-review@claude-code-plugins'
-          prompt: '/code-review:code-review ${{ github.repository }}/pull/${{ github.event.pull_request.number }}'
-          # See https://github.com/anthropics/claude-code-action/blob/main/docs/usage.md
-          # or https://code.claude.com/docs/en/cli-reference for available options

+ 2 - 2
.github/workflows/claude-issue-triage.yml

@@ -11,13 +11,11 @@ jobs:
     permissions:
       contents: read
       issues: write
-
     steps:
       - name: Checkout repository
         uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
         with:
           fetch-depth: 1
-
       - name: Run Claude Issue Triage
         id: claude-triage
         uses: anthropics/claude-code-action@11a9dadd198803a0cea6bd53da3e0e8a762fc6ea # v1.0.108
@@ -130,6 +128,8 @@ jobs:
             - Reference the specific problem(s) and clearly explain what the submitter can do
               to move the issue forward (e.g. "please edit the issue to include reproduction
               steps" or "this appears to duplicate #12345 — could you confirm?").
+            - Never direct the submitter to proceed with a pull request immediately: A
+              maintainer will decide when that is appropriate.
             - Sign off noting that you are an automated triage assistant and a human maintainer
               will follow up.
             - Paraphrase rather than quoting issue content verbatim. Do not echo back links,

+ 14 - 55
.github/workflows/claude.yml

@@ -5,76 +5,35 @@ on:
     types: [created]
   pull_request_review_comment:
     types: [created]
-  issues:
-    types: [opened, assigned]
   pull_request_review:
     types: [submitted]
 
+concurrency:
+  group: claude-${{ github.event.pull_request.number || github.event.issue.number }}
+  cancel-in-progress: true
+
 jobs:
   claude:
     if: |
-      (github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) ||
-      (github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) ||
-      (github.event_name == 'pull_request_review' && contains(github.event.review.body, '@claude')) ||
-      (github.event_name == 'issues' && (contains(github.event.issue.body, '@claude') || contains(github.event.issue.title, '@claude')))
+      (github.event_name != 'issue_comment' || github.event.issue.pull_request != null)
+      && contains(github.event.comment.body || github.event.review.body, '@claude')
+      && (github.event.comment.user.type || github.event.review.user.type) != 'Bot'
+      && contains(fromJSON('["OWNER", "MEMBER", "COLLABORATOR"]'), github.event.comment.author_association || github.event.review.author_association)
     runs-on: ubuntu-latest
+    timeout-minutes: 15
     permissions:
       contents: read
-      pull-requests: read
-      issues: read
-      id-token: write
+      issues: write
+      pull-requests: write
       actions: read # Required for Claude to read CI results on PRs
     steps:
       - name: Checkout repository
         uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
         with:
           fetch-depth: 1
-
-      # Workaround for claude-code-action bug with fork PRs: The action fetches by branch name
-      # (git fetch origin --depth=N <branch>), but fork PR branches don't exist on origin.
-      # Fix: redirect origin to the fork's URL so the action can fetch the branch directly.
-      - name: Configure git remote for fork PRs
-        env:
-          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-        run: |
-          # Determine PR number based on event type
-          if [ "${{ github.event_name }}" = "issue_comment" ]; then
-            PR_NUMBER="${{ github.event.issue.number }}"
-          elif [ "${{ github.event_name }}" = "pull_request_review_comment" ] || [ "${{ github.event_name }}" = "pull_request_review" ]; then
-            PR_NUMBER="${{ github.event.pull_request.number }}"
-          else
-            exit 0  # issues event — no PR branch to worry about
-          fi
-
-          # Fetch fork info in one API call; silently skip if this is not a PR
-          PR_INFO=$(gh pr view "${PR_NUMBER}" --json isCrossRepository,headRepositoryOwner,headRepository 2>/dev/null || echo "")
-          if [ -z "$PR_INFO" ]; then
-            exit 0
-          fi
-
-          IS_FORK=$(echo "$PR_INFO" | jq -r '.isCrossRepository')
-          if [ "$IS_FORK" = "true" ]; then
-            FORK_OWNER=$(echo "$PR_INFO" | jq -r '.headRepositoryOwner.login')
-            FORK_REPO=$(echo "$PR_INFO" | jq -r '.headRepository.name')
-            echo "Fork PR detected from ${FORK_OWNER}/${FORK_REPO}: updating origin to fork URL"
-            git remote set-url origin "https://github.com/${FORK_OWNER}/${FORK_REPO}.git"
-          fi
-
       - name: Run Claude Code
         id: claude
-        uses: anthropics/claude-code-action@e763fe78de2db7389e04818a00b5ff8ba13d1360 # v1
+        uses: anthropics/claude-code-action@11a9dadd198803a0cea6bd53da3e0e8a762fc6ea # v1.0.108
         with:
-          claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
-
-          # This is an optional setting that allows Claude to read CI results on PRs
-          additional_permissions: |
-            actions: read
-
-          # Optional: Give a custom prompt to Claude. If this is not specified, Claude will perform the instructions specified in the comment that tagged it.
-          # prompt: 'Update the pull request description to include a summary of changes.'
-
-          # Optional: Add claude_args to customize behavior and configuration
-          # See https://github.com/anthropics/claude-code-action/blob/main/docs/usage.md
-          # or https://code.claude.com/docs/en/cli-reference for available options
-          # claude_args: '--allowed-tools Bash(gh pr:*)'
-
+          anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
+          github_token: ${{ secrets.GITHUB_TOKEN }}