forked from keithah/multi-provider-code-review
-
Notifications
You must be signed in to change notification settings - Fork 0
199 lines (195 loc) · 7.56 KB
/
Copy pathreviewrouter-reusable.yml
File metadata and controls
199 lines (195 loc) · 7.56 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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
name: ReviewRouter Reusable
on:
workflow_call:
inputs:
runtime_ref:
description: 'ReviewRouter runtime ref: main, v1, v1.x.x, or a 40-char commit SHA'
required: false
type: string
default: main
api_url:
description: 'ReviewRouter API URL used for OIDC runtime config and App comment tokens'
required: false
type: string
default: https://api.reviewrouter.site
runtime_config_mode:
description: 'Runtime config mode: oidc or static'
required: false
type: string
default: oidc
static_runtime_env_json:
description: 'JSON object with non-secret static fallback env values'
required: false
type: string
default: '{}'
pr_number:
description: 'Pull request number for workflow_dispatch callers'
required: false
type: string
default: ''
review_head_sha:
description: 'Expected pull request head for durable workflow_dispatch review requests'
required: false
type: string
default: ''
review_app_client_id:
description: 'Optional user-owned GitHub App client ID for static-mode bot comments'
required: false
type: string
default: ''
review_app_repository:
description: 'Repository name used when minting a static-mode user-owned GitHub App token'
required: false
type: string
default: ''
review_action_v2_mode:
description: 'Review Action protocol lane: disabled or t0'
required: false
type: string
default: disabled
provider_instance_id:
description: 'Server-registered provider instance used by the T0 lane'
required: false
type: string
default: ''
workflow_schema_version:
description: 'Server-registered hosted workflow schema version'
required: false
type: number
default: 1
review_drafts:
description: 'Run review for same-repository draft pull requests'
required: false
type: boolean
default: false
review_timeout_minutes:
description: 'Maximum execution time for the review job'
required: false
type: number
default: 60
max_changed_lines:
description: 'Skip review when additions plus deletions exceed this value; zero disables the limit'
required: false
type: string
default: '0'
secrets:
REVIEW_ROUTER_LEDGER_KEY:
required: false
REVIEW_THREAD_LIFECYCLE_RESOLVE_TOKEN:
required: false
REVIEW_APP_PRIVATE_KEY:
required: false
CODEX_AUTH_JSON:
required: false
CODEX_CONFIG_TOML:
required: false
CLAUDE_CODE_OAUTH_TOKEN:
required: false
OPENAI_API_KEY:
required: false
OPENROUTER_API_KEY:
required: false
jobs:
validate-mode:
name: validate mode
runs-on: ubuntu-latest
permissions: {}
steps:
- name: Validate Review Action protocol lane
shell: bash
env:
REVIEW_ACTION_V2_MODE: ${{ inputs.review_action_v2_mode }}
PROVIDER_INSTANCE_ID: ${{ inputs.provider_instance_id }}
REVIEW_HEAD_SHA: ${{ inputs.review_head_sha }}
WORKFLOW_SCHEMA_VERSION: ${{ inputs.workflow_schema_version }}
RUNTIME_CONFIG_MODE: ${{ inputs.runtime_config_mode }}
run: |
set -euo pipefail
case "$REVIEW_ACTION_V2_MODE" in
disabled|t0) ;;
*)
echo "::error::Invalid review_action_v2_mode. Use disabled or t0."
exit 1
;;
esac
if [ "$REVIEW_ACTION_V2_MODE" = "t0" ]; then
if [ -z "$PROVIDER_INSTANCE_ID" ]; then
echo "::error::provider_instance_id is required for the t0 lane."
exit 1
fi
if ! [[ "$REVIEW_HEAD_SHA" =~ ^[a-fA-F0-9]{40}$ ]]; then
echo "::error::review_head_sha must be a 40-character commit SHA for the t0 lane."
exit 1
fi
if ! [[ "$WORKFLOW_SCHEMA_VERSION" =~ ^[1-9][0-9]*$ ]]; then
echo "::error::workflow_schema_version must be a positive integer."
exit 1
fi
if [ "$RUNTIME_CONFIG_MODE" != "oidc" ]; then
echo "::error::The t0 lane requires runtime_config_mode=oidc."
exit 1
fi
fi
review-t0:
name: review
needs: validate-mode
permissions:
contents: read
pull-requests: read
id-token: write
if: ${{ needs.validate-mode.result == 'success' && inputs.review_action_v2_mode == 't0' && (github.event_name == 'workflow_dispatch' || github.event_name == 'merge_group' || github.event.pull_request.draft == false || inputs.review_drafts) }}
uses: ./.github/workflows/reviewrouter-execution-reusable.yml
with:
review_action_lane: t0
runtime_ref: ${{ inputs.runtime_ref }}
api_url: ${{ inputs.api_url }}
runtime_config_mode: ${{ inputs.runtime_config_mode }}
static_runtime_env_json: ${{ inputs.static_runtime_env_json }}
pr_number: ${{ inputs.pr_number }}
review_head_sha: ${{ inputs.review_head_sha }}
review_app_client_id: ''
review_app_repository: ''
provider_instance_id: ${{ inputs.provider_instance_id }}
workflow_schema_version: ${{ inputs.workflow_schema_version }}
review_timeout_minutes: ${{ inputs.review_timeout_minutes }}
max_changed_lines: ${{ inputs.max_changed_lines }}
secrets:
REVIEW_ROUTER_LEDGER_KEY: ${{ secrets.REVIEW_ROUTER_LEDGER_KEY }}
CODEX_AUTH_JSON: ${{ secrets.CODEX_AUTH_JSON }}
CODEX_CONFIG_TOML: ${{ secrets.CODEX_CONFIG_TOML }}
CLAUDE_CODE_OAUTH_TOKEN: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
OPENROUTER_API_KEY: ${{ secrets.OPENROUTER_API_KEY }}
review-legacy:
name: review
needs: validate-mode
permissions:
contents: read
pull-requests: write
issues: write
id-token: write
if: ${{ needs.validate-mode.result == 'success' && inputs.review_action_v2_mode == 'disabled' && (github.event_name == 'workflow_dispatch' || github.event_name == 'merge_group' || github.event.pull_request.draft == false || inputs.review_drafts) }}
uses: ./.github/workflows/reviewrouter-execution-reusable.yml
with:
review_action_lane: legacy
runtime_ref: ${{ inputs.runtime_ref }}
api_url: ${{ inputs.api_url }}
runtime_config_mode: ${{ inputs.runtime_config_mode }}
static_runtime_env_json: ${{ inputs.static_runtime_env_json }}
pr_number: ${{ inputs.pr_number }}
review_head_sha: ''
review_app_client_id: ${{ inputs.review_app_client_id }}
review_app_repository: ${{ inputs.review_app_repository }}
provider_instance_id: ''
workflow_schema_version: ${{ inputs.workflow_schema_version }}
review_timeout_minutes: ${{ inputs.review_timeout_minutes }}
max_changed_lines: ${{ inputs.max_changed_lines }}
secrets:
REVIEW_ROUTER_LEDGER_KEY: ${{ secrets.REVIEW_ROUTER_LEDGER_KEY }}
REVIEW_THREAD_LIFECYCLE_RESOLVE_TOKEN: ${{ secrets.REVIEW_THREAD_LIFECYCLE_RESOLVE_TOKEN }}
REVIEW_APP_PRIVATE_KEY: ${{ secrets.REVIEW_APP_PRIVATE_KEY }}
CODEX_AUTH_JSON: ${{ secrets.CODEX_AUTH_JSON }}
CODEX_CONFIG_TOML: ${{ secrets.CODEX_CONFIG_TOML }}
CLAUDE_CODE_OAUTH_TOKEN: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
OPENROUTER_API_KEY: ${{ secrets.OPENROUTER_API_KEY }}