-
Notifications
You must be signed in to change notification settings - Fork 0
106 lines (101 loc) · 5.42 KB
/
Copy pathcopilot_pull_request.yml
File metadata and controls
106 lines (101 loc) · 5.42 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
name: Copilot - Pull Request
run-name: Copilot PR · ${{ github.event_name }}:${{ github.event.action }}
on:
pull_request:
types: [opened, reopened, closed, synchronize]
jobs:
copilot-pull-requests:
if: ${{ (vars.COPILOT_BOT_LOGIN == '' || github.actor != vars.COPILOT_BOT_LOGIN) && github.event.pull_request.head.repo.full_name == github.repository }}
name: Copilot - Pull Request
runs-on: [self-hosted, codex]
timeout-minutes: 120
concurrency:
group: copilot-pr-${{ github.repository }}-${{ github.event.pull_request.head.ref || github.ref_name }}-analysis
cancel-in-progress: true
permissions:
checks: write
contents: read
steps:
- name: Checkout Repository
uses: actions/checkout@v5
with:
persist-credentials: false
fetch-depth: 0
- name: Set up Node.js 24 for pinned agent installation
uses: actions/setup-node@v7
with:
node-version: '24.x'
- name: Fetch incremental review range
if: github.event.action == 'synchronize'
env:
BEFORE_SHA: ${{ github.event.before }}
AFTER_SHA: ${{ github.event.after }}
run: |
git cat-file -e "${AFTER_SHA}^{commit}"
if ! git cat-file -e "${BEFORE_SHA}^{commit}"; then
echo "::notice::The previous PR commit is unavailable; Bugbot will use the canonical pull-request diff."
fi
# Exercise the Action implementation from this PR so regressions are caught before merge.
- uses: ./
with:
repository-locale: ${{ vars.REPOSITORY_LOCALE || 'en-US' }}
issues-locale: ${{ vars.ISSUES_LOCALE || '' }}
pull-requests-locale: ${{ vars.PULL_REQUESTS_LOCALE || '' }}
issue-workflow-profile: ${{ vars.COPILOT_ISSUE_WORKFLOW_PROFILE || '' }}
ai-ignore-files: build/*,specs/CATALOG.md
bugbot-severity: ${{ vars.BUGBOT_SEVERITY || 'low' }}
bugbot-comment-limit: ${{ vars.BUGBOT_COMMENT_LIMIT || '20' }}
bugbot-fix-verify-commands: ${{ vars.BUGBOT_AUTOFIX_VERIFY_COMMANDS }}
bugbot-dry-run: ${{ vars.BUGBOT_DRY_RUN || 'false' }}
bugbot-effort: ${{ vars.BUGBOT_EFFORT || 'smart' }}
bugbot-review-drafts: ${{ vars.BUGBOT_REVIEW_DRAFTS || 'false' }}
bugbot-trace-rules: ${{ vars.BUGBOT_TRACE_RULES || 'false' }}
bugbot-suggested-changes: ${{ vars.BUGBOT_SUGGESTED_CHANGES || 'true' }}
bugbot-telemetry: ${{ vars.BUGBOT_TELEMETRY || 'true' }}
bugbot-fail-on-unresolved: ${{ vars.BUGBOT_FAIL_ON_UNRESOLVED || 'false' }}
bugbot-organization-rules: ${{ vars.BUGBOT_ORGANIZATION_RULES }}
debug: ${{ vars.DEBUG }}
agent-provider: ${{ vars.AGENT_PROVIDER || 'codex' }}
agent-model-provider: ${{ vars.AGENT_MODEL_PROVIDER || 'openai' }}
agent-model: ${{ vars.AGENT_MODEL || 'gpt-6-luna' }}
agent-effort: ${{ vars.AGENT_EFFORT }}
agent-executable: ${{ vars.AGENT_EXECUTABLE }}
findings-provider: ${{ vars.FINDINGS_PROVIDER }}
findings-model-provider: ${{ vars.FINDINGS_MODEL_PROVIDER }}
findings-model: ${{ vars.FINDINGS_MODEL }}
findings-effort: ${{ vars.FINDINGS_EFFORT }}
findings-executable: ${{ vars.FINDINGS_EXECUTABLE }}
fixer-provider: ${{ vars.FIXER_PROVIDER }}
fixer-model-provider: ${{ vars.FIXER_MODEL_PROVIDER }}
fixer-model: ${{ vars.FIXER_MODEL }}
fixer-effort: ${{ vars.FIXER_EFFORT }}
fixer-executable: ${{ vars.FIXER_EXECUTABLE }}
planner-provider: ${{ vars.PLANNER_PROVIDER }}
planner-model-provider: ${{ vars.PLANNER_MODEL_PROVIDER }}
planner-model: ${{ vars.PLANNER_MODEL }}
planner-effort: ${{ vars.PLANNER_EFFORT }}
planner-executable: ${{ vars.PLANNER_EXECUTABLE }}
reviewer-provider: ${{ vars.REVIEWER_PROVIDER }}
reviewer-model-provider: ${{ vars.REVIEWER_MODEL_PROVIDER }}
reviewer-model: ${{ vars.REVIEWER_MODEL }}
reviewer-effort: ${{ vars.REVIEWER_EFFORT }}
reviewer-executable: ${{ vars.REVIEWER_EXECUTABLE }}
project-ids: ${{ vars.PROJECT_IDS }}
token: ${{ secrets.PAT }}
env:
AGENT_PROVIDER: ${{ vars.AGENT_PROVIDER || 'codex' }}
AGENT_MODEL_PROVIDER: ${{ vars.AGENT_MODEL_PROVIDER || 'openai' }}
AGENT_MODEL: ${{ vars.AGENT_MODEL }}
AGENT_EFFORT: ${{ vars.AGENT_EFFORT }}
AGENT_PROVISIONING: ${{ vars.AGENT_PROVISIONING || 'auto' }}
AGENT_ALLOWED_MODEL_PROVIDERS: ${{ vars.AGENT_ALLOWED_MODEL_PROVIDERS || 'openai' }}
AGENT_ALLOWED_MODELS: ${{ vars.AGENT_ALLOWED_MODELS || 'openai/gpt-6-luna' }}
AGENT_EXECUTABLE: ${{ vars.AGENT_EXECUTABLE }}
OPENCODE_API_KEY: ${{ secrets.OPENCODE_API_KEY }}
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
GOOGLE_API_KEY: ${{ secrets.GOOGLE_API_KEY }}
OPENROUTER_API_KEY: ${{ secrets.OPENROUTER_API_KEY }}
CURSOR_API_KEY: ${{ (vars.AGENT_PROVIDER == 'cursor' || vars.FINDINGS_PROVIDER == 'cursor' || vars.FIXER_PROVIDER == 'cursor' || vars.PLANNER_PROVIDER == 'cursor' || vars.REVIEWER_PROVIDER == 'cursor' || vars.TESTER_PROVIDER == 'cursor') && secrets.CURSOR_API_KEY || '' }}
CODEX_API_KEY: ${{ secrets.CODEX_API_KEY }}
COPILOT_EVIDENCE_TOKEN: ${{ github.token }}