@vypdev/copilot 3.3.0 → 3.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +33 -5
- package/action.yml +85 -109
- package/build/api/index.js +4737 -1506
- package/build/api/src/api.d.ts +60 -14
- package/build/api/src/application/errors/application_error.d.ts +10 -0
- package/build/api/src/application/ports/bugbot_context_ports.d.ts +20 -7
- package/build/api/src/application/ports/bugbot_finding_publication_ports.d.ts +4 -4
- package/build/api/src/application/ports/bugbot_finding_resolution_ports.d.ts +4 -4
- package/build/api/src/application/ports/bugbot_issue_read_ports.d.ts +3 -0
- package/build/api/src/application/ports/bugbot_issue_write_ports.d.ts +12 -0
- package/build/api/src/application/ports/bugbot_pull_request_read_ports.d.ts +3 -17
- package/build/api/src/application/ports/bugbot_pull_request_resolution_ports.d.ts +7 -1
- package/build/api/src/application/ports/bugbot_pull_request_write_ports.d.ts +6 -1
- package/build/api/src/application/ports/bugbot_reconciliation_ports.d.ts +18 -0
- package/build/api/src/application/ports/bugbot_review_navigation_ports.d.ts +13 -0
- package/build/api/src/application/ports/bugbot_rule_ports.d.ts +1 -1
- package/build/api/src/application/ports/bugbot_scm_ports.d.ts +14 -0
- package/build/api/src/application/ports/bugbot_telemetry_ports.d.ts +27 -2
- package/build/api/src/application/ports/message_catalog_ports.d.ts +17 -0
- package/build/api/src/application/ports/pull_request_review_comment_ports.d.ts +31 -2
- package/build/api/src/data/model/application_error.d.ts +82 -0
- package/build/api/src/data/model/result.d.ts +3 -4
- package/build/api/src/domain/agent.d.ts +6 -5
- package/build/api/src/domain/branch_sync_validation.d.ts +4 -0
- package/build/api/src/domain/bugbot/context.d.ts +68 -0
- package/build/api/src/domain/bugbot/finding.d.ts +61 -0
- package/build/api/src/domain/bugbot/review_projection.d.ts +33 -0
- package/build/api/src/domain/bugbot/review_state.d.ts +29 -0
- package/build/api/src/domain/message_catalog.d.ts +35 -0
- package/build/api/src/tooling/bugbot_analytics.d.ts +2 -1
- package/build/cli/index.js +93317 -71617
- package/build/github_action/index.js +79616 -63218
- package/build/web/assets/index-2NVaAtP1.js +3 -0
- package/build/web/assets/index-FN-aja4Y.css +1 -0
- package/build/web/index.html +14 -0
- package/package.json +35 -22
- package/scripts/install-git-hooks.cjs +38 -14
- package/setup/ISSUE_TEMPLATE/hotfix.yml +1 -1
- package/setup/ISSUE_TEMPLATE/release.yml +1 -1
- package/setup/pull_request_template.md +9 -135
- package/setup/source-workflows/copilot_pull_request_approval.yml +55 -0
- package/setup/workflows/agent-cli-provisioning.yml +37 -13
- package/setup/workflows/copilot_close_inactive_issues.yml +4 -4
- package/setup/workflows/copilot_commit.yml +16 -16
- package/setup/workflows/copilot_credential_health.yml +0 -20
- package/setup/workflows/copilot_deployment_orchestration.yml +91 -0
- package/setup/workflows/copilot_issue.yml +15 -19
- package/setup/workflows/copilot_issue_comment.yml +17 -19
- package/setup/workflows/copilot_pull_request.yml +21 -22
- package/setup/workflows/copilot_pull_request_approval.yml +51 -0
- package/setup/workflows/copilot_pull_request_comment.yml +17 -19
- package/setup/workflows/copilot_pull_request_merge_queue.yml +20 -0
- package/setup/workflows/copilot_pull_request_review_state.yml +109 -0
- package/setup/workflows/hotfix_workflow.yml +157 -168
- package/setup/workflows/release_workflow.yml +157 -168
- package/build/api/src/application/usecases/steps/commit/bugbot/types.d.ts +0 -112
- package/build/api/src/data/model/agent.d.ts +0 -2
- package/build/api/src/data/model/ai.d.ts +0 -28
- package/build/api/src/data/model/branch_configuration.d.ts +0 -6
- package/build/api/src/data/model/branches.d.ts +0 -12
- package/build/api/src/data/model/commit.d.ts +0 -8
- package/build/api/src/data/model/config.d.ts +0 -30
- package/build/api/src/data/model/emoji.d.ts +0 -5
- package/build/api/src/data/model/execution.d.ts +0 -75
- package/build/api/src/data/model/execution_components.d.ts +0 -43
- package/build/api/src/data/model/execution_inputs.d.ts +0 -94
- package/build/api/src/data/model/hotfix.d.ts +0 -7
- package/build/api/src/data/model/images.d.ts +0 -27
- package/build/api/src/data/model/issue.d.ts +0 -27
- package/build/api/src/data/model/issue_types.d.ts +0 -30
- package/build/api/src/data/model/labels.d.ts +0 -60
- package/build/api/src/data/model/locale.d.ts +0 -6
- package/build/api/src/data/model/project_detail.d.ts +0 -15
- package/build/api/src/data/model/projects.d.ts +0 -14
- package/build/api/src/data/model/pull_request.d.ts +0 -32
- package/build/api/src/data/model/recommendation_state.d.ts +0 -6
- package/build/api/src/data/model/release.d.ts +0 -6
- package/build/api/src/data/model/single_action.d.ts +0 -43
- package/build/api/src/data/model/size_threshold.d.ts +0 -6
- package/build/api/src/data/model/size_thresholds.d.ts +0 -10
- package/build/api/src/data/model/tokens.d.ts +0 -4
- package/build/api/src/data/model/welcome.d.ts +0 -5
- package/build/api/src/data/model/workflows.d.ts +0 -5
- package/build/api/src/domain/bugbot/review_command.d.ts +0 -16
- package/build/api/src/domain/copilot_lifecycle.d.ts +0 -42
- package/build/api/src/domain/pull_request_description.d.ts +0 -13
|
@@ -11,6 +11,7 @@ jobs:
|
|
|
11
11
|
runs-on: ubuntu-latest
|
|
12
12
|
timeout-minutes: 120
|
|
13
13
|
permissions:
|
|
14
|
+
checks: write
|
|
14
15
|
contents: read
|
|
15
16
|
steps:
|
|
16
17
|
- name: Checkout Repository
|
|
@@ -21,6 +22,10 @@ jobs:
|
|
|
21
22
|
|
|
22
23
|
- uses: vypdev/copilot@v3
|
|
23
24
|
with:
|
|
25
|
+
repository-locale: ${{ vars.REPOSITORY_LOCALE || 'en-US' }}
|
|
26
|
+
issues-locale: ${{ vars.ISSUES_LOCALE || '' }}
|
|
27
|
+
pull-requests-locale: ${{ vars.PULL_REQUESTS_LOCALE || '' }}
|
|
28
|
+
issue-workflow-profile: ${{ vars.COPILOT_ISSUE_WORKFLOW_PROFILE || '' }}
|
|
24
29
|
ai-ignore-files: ${{ vars.AI_IGNORE_FILES || 'build/*' }}
|
|
25
30
|
debug: ${{ vars.DEBUG }}
|
|
26
31
|
main-branch: ${{ vars.MAIN_BRANCH || 'master' }}
|
|
@@ -31,15 +36,12 @@ jobs:
|
|
|
31
36
|
release-tree: ${{ vars.RELEASE_TREE || 'release' }}
|
|
32
37
|
docs-tree: ${{ vars.DOCS_TREE || 'docs' }}
|
|
33
38
|
chore-tree: ${{ vars.CHORE_TREE || 'chore' }}
|
|
34
|
-
|
|
39
|
+
issue-managed-branches: ${{ vars.ISSUE_MANAGED_BRANCHES || 'true' }}
|
|
40
|
+
pre-branch-sdd: ${{ vars.PRE_BRANCH_SDD || 'false' }}
|
|
35
41
|
reopen-issue-on-push: ${{ vars.REOPEN_ISSUE_ON_PUSH || 'true' }}
|
|
36
42
|
desired-assignees-count: ${{ vars.DESIRED_ASSIGNEES_COUNT || '1' }}
|
|
37
43
|
desired-reviewers-count: ${{ vars.DESIRED_REVIEWERS_COUNT || '1' }}
|
|
38
|
-
merge-timeout: ${{ vars.MERGE_TIMEOUT || '600' }}
|
|
39
|
-
issues-locale: ${{ vars.ISSUES_LOCALE || 'en-US' }}
|
|
40
|
-
pull-requests-locale: ${{ vars.PULL_REQUESTS_LOCALE || 'en-US' }}
|
|
41
44
|
commit-prefix-transforms: ${{ vars.COMMIT_PREFIX_TRANSFORMS || 'replace-slash' }}
|
|
42
|
-
ai-pull-request-description: ${{ vars.AI_PULL_REQUEST_DESCRIPTION || 'true' }}
|
|
43
45
|
ai-pull-request-description-mode: ${{ vars.AI_PULL_REQUEST_DESCRIPTION_MODE || 'replace' }}
|
|
44
46
|
ai-members-only: ${{ vars.AI_MEMBERS_ONLY || 'false' }}
|
|
45
47
|
ai-include-reasoning: ${{ vars.AI_INCLUDE_REASONING || 'false' }}
|
|
@@ -60,34 +62,34 @@ jobs:
|
|
|
60
62
|
project-column-pull-request-in-progress: ${{ vars.PROJECT_COLUMN_PULL_REQUEST_IN_PROGRESS || 'In Progress' }}
|
|
61
63
|
agent-provider: ${{ vars.AGENT_PROVIDER || 'codex' }}
|
|
62
64
|
agent-model-provider: ${{ vars.AGENT_MODEL_PROVIDER || 'openai' }}
|
|
63
|
-
agent-model: ${{ vars.AGENT_MODEL || 'gpt-
|
|
65
|
+
agent-model: ${{ vars.AGENT_MODEL || 'gpt-6-luna' }}
|
|
64
66
|
agent-effort: ${{ vars.AGENT_EFFORT }}
|
|
65
|
-
agent-
|
|
67
|
+
agent-executable: ${{ vars.AGENT_EXECUTABLE }}
|
|
66
68
|
findings-provider: ${{ vars.FINDINGS_PROVIDER }}
|
|
67
69
|
findings-model-provider: ${{ vars.FINDINGS_MODEL_PROVIDER }}
|
|
68
70
|
findings-model: ${{ vars.FINDINGS_MODEL }}
|
|
69
71
|
findings-effort: ${{ vars.FINDINGS_EFFORT }}
|
|
70
|
-
findings-
|
|
72
|
+
findings-executable: ${{ vars.FINDINGS_EXECUTABLE }}
|
|
71
73
|
fixer-provider: ${{ vars.FIXER_PROVIDER }}
|
|
72
74
|
fixer-model-provider: ${{ vars.FIXER_MODEL_PROVIDER }}
|
|
73
75
|
fixer-model: ${{ vars.FIXER_MODEL }}
|
|
74
76
|
fixer-effort: ${{ vars.FIXER_EFFORT }}
|
|
75
|
-
fixer-
|
|
77
|
+
fixer-executable: ${{ vars.FIXER_EXECUTABLE }}
|
|
76
78
|
reviewer-provider: ${{ vars.REVIEWER_PROVIDER }}
|
|
77
79
|
reviewer-model-provider: ${{ vars.REVIEWER_MODEL_PROVIDER }}
|
|
78
80
|
reviewer-model: ${{ vars.REVIEWER_MODEL }}
|
|
79
81
|
reviewer-effort: ${{ vars.REVIEWER_EFFORT }}
|
|
80
|
-
reviewer-
|
|
82
|
+
reviewer-executable: ${{ vars.REVIEWER_EXECUTABLE }}
|
|
81
83
|
planner-provider: ${{ vars.PLANNER_PROVIDER }}
|
|
82
84
|
planner-model-provider: ${{ vars.PLANNER_MODEL_PROVIDER }}
|
|
83
85
|
planner-model: ${{ vars.PLANNER_MODEL }}
|
|
84
86
|
planner-effort: ${{ vars.PLANNER_EFFORT }}
|
|
85
|
-
planner-
|
|
87
|
+
planner-executable: ${{ vars.PLANNER_EXECUTABLE }}
|
|
86
88
|
tester-provider: ${{ vars.TESTER_PROVIDER }}
|
|
87
89
|
tester-model-provider: ${{ vars.TESTER_MODEL_PROVIDER }}
|
|
88
90
|
tester-model: ${{ vars.TESTER_MODEL }}
|
|
89
91
|
tester-effort: ${{ vars.TESTER_EFFORT }}
|
|
90
|
-
tester-
|
|
92
|
+
tester-executable: ${{ vars.TESTER_EXECUTABLE }}
|
|
91
93
|
project-ids: ${{ vars.PROJECT_IDS }}
|
|
92
94
|
token: ${{ secrets.PAT }}
|
|
93
95
|
env:
|
|
@@ -95,13 +97,9 @@ jobs:
|
|
|
95
97
|
AGENT_MODEL_PROVIDER: ${{ vars.AGENT_MODEL_PROVIDER || 'openai' }}
|
|
96
98
|
AGENT_MODEL: ${{ vars.AGENT_MODEL }}
|
|
97
99
|
AGENT_EFFORT: ${{ vars.AGENT_EFFORT }}
|
|
98
|
-
AGENT_PROVISIONING: ${{ vars.AGENT_PROVISIONING || 'auto' }}
|
|
99
100
|
AGENT_ALLOWED_MODEL_PROVIDERS: ${{ vars.AGENT_ALLOWED_MODEL_PROVIDERS || 'openai' }}
|
|
100
|
-
AGENT_ALLOWED_MODELS: ${{ vars.AGENT_ALLOWED_MODELS || 'openai/gpt-
|
|
101
|
-
|
|
102
|
-
CODEX_VERSION: ${{ vars.CODEX_VERSION }}
|
|
103
|
-
OPENCODE_VERSION: ${{ vars.OPENCODE_VERSION }}
|
|
104
|
-
CURSOR_INSTALLER_SHA256: ${{ vars.CURSOR_INSTALLER_SHA256 }}
|
|
101
|
+
AGENT_ALLOWED_MODELS: ${{ vars.AGENT_ALLOWED_MODELS || 'openai/gpt-6-luna' }}
|
|
102
|
+
AGENT_EXECUTABLE: ${{ vars.AGENT_EXECUTABLE }}
|
|
105
103
|
OPENCODE_API_KEY: ${{ secrets.OPENCODE_API_KEY }}
|
|
106
104
|
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
|
|
107
105
|
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
|
|
@@ -109,4 +107,4 @@ jobs:
|
|
|
109
107
|
OPENROUTER_API_KEY: ${{ secrets.OPENROUTER_API_KEY }}
|
|
110
108
|
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 || '' }}
|
|
111
109
|
CODEX_API_KEY: ${{ secrets.CODEX_API_KEY }}
|
|
112
|
-
|
|
110
|
+
COPILOT_EVIDENCE_TOKEN: ${{ github.token }}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
name: Copilot - Pull Request Merge Queue
|
|
2
|
+
run-name: Copilot PR · ${{ github.event_name }}:${{ github.event.action }}
|
|
3
|
+
|
|
4
|
+
on:
|
|
5
|
+
merge_group:
|
|
6
|
+
types: [checks_requested]
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
copilot-pull-request-required-check:
|
|
10
|
+
# GitHub required checks match the job name. Keep this identical to normal
|
|
11
|
+
# PR analysis while isolating merge-group runs in their own workflow.
|
|
12
|
+
name: Copilot - Pull Request
|
|
13
|
+
runs-on: ubuntu-latest
|
|
14
|
+
timeout-minutes: 10
|
|
15
|
+
permissions:
|
|
16
|
+
checks: write
|
|
17
|
+
contents: read
|
|
18
|
+
steps:
|
|
19
|
+
- name: Confirm merge-group compatibility
|
|
20
|
+
run: echo "Copilot PR analysis already ran on each constituent pull request."
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
name: Copilot - Pull Request Review State
|
|
2
|
+
run-name: Copilot PR review · ${{ github.event_name }}:${{ github.event.action }}
|
|
3
|
+
|
|
4
|
+
on:
|
|
5
|
+
pull_request_review:
|
|
6
|
+
types: [submitted, edited, dismissed]
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
copilot-pull-request-review-state:
|
|
10
|
+
if: ${{ (vars.COPILOT_BOT_LOGIN == '' || github.actor != vars.COPILOT_BOT_LOGIN) && github.event.pull_request.head.repo.full_name == github.repository }}
|
|
11
|
+
name: Copilot - Pull Request Review State
|
|
12
|
+
runs-on: ubuntu-latest
|
|
13
|
+
timeout-minutes: 120
|
|
14
|
+
concurrency:
|
|
15
|
+
group: copilot-pr-${{ github.repository }}-${{ github.event.pull_request.head.ref || github.ref_name }}-review-state
|
|
16
|
+
cancel-in-progress: true
|
|
17
|
+
permissions:
|
|
18
|
+
checks: write
|
|
19
|
+
contents: read
|
|
20
|
+
steps:
|
|
21
|
+
- name: Checkout Repository
|
|
22
|
+
uses: actions/checkout@v5
|
|
23
|
+
with:
|
|
24
|
+
persist-credentials: false
|
|
25
|
+
fetch-depth: 0
|
|
26
|
+
|
|
27
|
+
- uses: vypdev/copilot@v3
|
|
28
|
+
with:
|
|
29
|
+
repository-locale: ${{ vars.REPOSITORY_LOCALE || 'en-US' }}
|
|
30
|
+
issues-locale: ${{ vars.ISSUES_LOCALE || '' }}
|
|
31
|
+
pull-requests-locale: ${{ vars.PULL_REQUESTS_LOCALE || '' }}
|
|
32
|
+
issue-workflow-profile: ${{ vars.COPILOT_ISSUE_WORKFLOW_PROFILE || '' }}
|
|
33
|
+
ai-ignore-files: ${{ vars.AI_IGNORE_FILES || 'build/*' }}
|
|
34
|
+
debug: ${{ vars.DEBUG }}
|
|
35
|
+
main-branch: ${{ vars.MAIN_BRANCH || 'master' }}
|
|
36
|
+
development-branch: ${{ vars.DEVELOPMENT_BRANCH || 'develop' }}
|
|
37
|
+
feature-tree: ${{ vars.FEATURE_TREE || 'feature' }}
|
|
38
|
+
bugfix-tree: ${{ vars.BUGFIX_TREE || 'bugfix' }}
|
|
39
|
+
hotfix-tree: ${{ vars.HOTFIX_TREE || 'hotfix' }}
|
|
40
|
+
release-tree: ${{ vars.RELEASE_TREE || 'release' }}
|
|
41
|
+
docs-tree: ${{ vars.DOCS_TREE || 'docs' }}
|
|
42
|
+
chore-tree: ${{ vars.CHORE_TREE || 'chore' }}
|
|
43
|
+
issue-managed-branches: ${{ vars.ISSUE_MANAGED_BRANCHES || 'true' }}
|
|
44
|
+
pre-branch-sdd: ${{ vars.PRE_BRANCH_SDD || 'false' }}
|
|
45
|
+
reopen-issue-on-push: ${{ vars.REOPEN_ISSUE_ON_PUSH || 'true' }}
|
|
46
|
+
desired-assignees-count: ${{ vars.DESIRED_ASSIGNEES_COUNT || '1' }}
|
|
47
|
+
desired-reviewers-count: ${{ vars.DESIRED_REVIEWERS_COUNT || '1' }}
|
|
48
|
+
commit-prefix-transforms: ${{ vars.COMMIT_PREFIX_TRANSFORMS || 'replace-slash' }}
|
|
49
|
+
ai-pull-request-description-mode: ${{ vars.AI_PULL_REQUEST_DESCRIPTION_MODE || 'replace' }}
|
|
50
|
+
ai-members-only: ${{ vars.AI_MEMBERS_ONLY || 'false' }}
|
|
51
|
+
ai-include-reasoning: ${{ vars.AI_INCLUDE_REASONING || 'false' }}
|
|
52
|
+
bugbot-severity: ${{ vars.BUGBOT_SEVERITY || 'low' }}
|
|
53
|
+
bugbot-comment-limit: ${{ vars.BUGBOT_COMMENT_LIMIT || '20' }}
|
|
54
|
+
bugbot-fix-verify-commands: ${{ vars.BUGBOT_AUTOFIX_VERIFY_COMMANDS }}
|
|
55
|
+
bugbot-dry-run: ${{ vars.BUGBOT_DRY_RUN || 'false' }}
|
|
56
|
+
bugbot-effort: ${{ vars.BUGBOT_EFFORT || 'smart' }}
|
|
57
|
+
bugbot-review-drafts: ${{ vars.BUGBOT_REVIEW_DRAFTS || 'false' }}
|
|
58
|
+
bugbot-trace-rules: ${{ vars.BUGBOT_TRACE_RULES || 'false' }}
|
|
59
|
+
bugbot-suggested-changes: ${{ vars.BUGBOT_SUGGESTED_CHANGES || 'true' }}
|
|
60
|
+
bugbot-telemetry: ${{ vars.BUGBOT_TELEMETRY || 'true' }}
|
|
61
|
+
bugbot-fail-on-unresolved: ${{ vars.BUGBOT_FAIL_ON_UNRESOLVED || 'false' }}
|
|
62
|
+
bugbot-organization-rules: ${{ vars.BUGBOT_ORGANIZATION_RULES }}
|
|
63
|
+
project-column-issue-created: ${{ vars.PROJECT_COLUMN_ISSUE_CREATED || 'Todo' }}
|
|
64
|
+
project-column-pull-request-created: ${{ vars.PROJECT_COLUMN_PULL_REQUEST_CREATED || 'In Progress' }}
|
|
65
|
+
project-column-issue-in-progress: ${{ vars.PROJECT_COLUMN_ISSUE_IN_PROGRESS || 'In Progress' }}
|
|
66
|
+
project-column-pull-request-in-progress: ${{ vars.PROJECT_COLUMN_PULL_REQUEST_IN_PROGRESS || 'In Progress' }}
|
|
67
|
+
agent-provider: ${{ vars.AGENT_PROVIDER || 'codex' }}
|
|
68
|
+
agent-model-provider: ${{ vars.AGENT_MODEL_PROVIDER || 'openai' }}
|
|
69
|
+
agent-model: ${{ vars.AGENT_MODEL || 'gpt-6-luna' }}
|
|
70
|
+
agent-effort: ${{ vars.AGENT_EFFORT }}
|
|
71
|
+
agent-executable: ${{ vars.AGENT_EXECUTABLE }}
|
|
72
|
+
findings-provider: ${{ vars.FINDINGS_PROVIDER }}
|
|
73
|
+
findings-model-provider: ${{ vars.FINDINGS_MODEL_PROVIDER }}
|
|
74
|
+
findings-model: ${{ vars.FINDINGS_MODEL }}
|
|
75
|
+
findings-effort: ${{ vars.FINDINGS_EFFORT }}
|
|
76
|
+
findings-executable: ${{ vars.FINDINGS_EXECUTABLE }}
|
|
77
|
+
fixer-provider: ${{ vars.FIXER_PROVIDER }}
|
|
78
|
+
fixer-model-provider: ${{ vars.FIXER_MODEL_PROVIDER }}
|
|
79
|
+
fixer-model: ${{ vars.FIXER_MODEL }}
|
|
80
|
+
fixer-effort: ${{ vars.FIXER_EFFORT }}
|
|
81
|
+
fixer-executable: ${{ vars.FIXER_EXECUTABLE }}
|
|
82
|
+
planner-provider: ${{ vars.PLANNER_PROVIDER }}
|
|
83
|
+
planner-model-provider: ${{ vars.PLANNER_MODEL_PROVIDER }}
|
|
84
|
+
planner-model: ${{ vars.PLANNER_MODEL }}
|
|
85
|
+
planner-effort: ${{ vars.PLANNER_EFFORT }}
|
|
86
|
+
planner-executable: ${{ vars.PLANNER_EXECUTABLE }}
|
|
87
|
+
reviewer-provider: ${{ vars.REVIEWER_PROVIDER }}
|
|
88
|
+
reviewer-model-provider: ${{ vars.REVIEWER_MODEL_PROVIDER }}
|
|
89
|
+
reviewer-model: ${{ vars.REVIEWER_MODEL }}
|
|
90
|
+
reviewer-effort: ${{ vars.REVIEWER_EFFORT }}
|
|
91
|
+
reviewer-executable: ${{ vars.REVIEWER_EXECUTABLE }}
|
|
92
|
+
project-ids: ${{ vars.PROJECT_IDS }}
|
|
93
|
+
token: ${{ secrets.PAT }}
|
|
94
|
+
env:
|
|
95
|
+
AGENT_PROVIDER: ${{ vars.AGENT_PROVIDER || 'codex' }}
|
|
96
|
+
AGENT_MODEL_PROVIDER: ${{ vars.AGENT_MODEL_PROVIDER || 'openai' }}
|
|
97
|
+
AGENT_MODEL: ${{ vars.AGENT_MODEL }}
|
|
98
|
+
AGENT_EFFORT: ${{ vars.AGENT_EFFORT }}
|
|
99
|
+
AGENT_ALLOWED_MODEL_PROVIDERS: ${{ vars.AGENT_ALLOWED_MODEL_PROVIDERS || 'openai' }}
|
|
100
|
+
AGENT_ALLOWED_MODELS: ${{ vars.AGENT_ALLOWED_MODELS || 'openai/gpt-6-luna' }}
|
|
101
|
+
AGENT_EXECUTABLE: ${{ vars.AGENT_EXECUTABLE }}
|
|
102
|
+
OPENCODE_API_KEY: ${{ secrets.OPENCODE_API_KEY }}
|
|
103
|
+
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
|
|
104
|
+
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
|
|
105
|
+
GOOGLE_API_KEY: ${{ secrets.GOOGLE_API_KEY }}
|
|
106
|
+
OPENROUTER_API_KEY: ${{ secrets.OPENROUTER_API_KEY }}
|
|
107
|
+
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 || '' }}
|
|
108
|
+
CODEX_API_KEY: ${{ secrets.CODEX_API_KEY }}
|
|
109
|
+
COPILOT_EVIDENCE_TOKEN: ${{ github.token }}
|
|
@@ -3,230 +3,219 @@ name: Task - Hotfix
|
|
|
3
3
|
on:
|
|
4
4
|
workflow_dispatch:
|
|
5
5
|
inputs:
|
|
6
|
-
|
|
7
|
-
description: '
|
|
6
|
+
mode:
|
|
7
|
+
description: 'Internal orchestration phase'
|
|
8
8
|
required: true
|
|
9
|
-
default:
|
|
9
|
+
default: prepare
|
|
10
|
+
type: choice
|
|
11
|
+
options: [prepare, publish]
|
|
12
|
+
operation-id:
|
|
13
|
+
description: 'Internal durable operation identifier'
|
|
14
|
+
required: false
|
|
15
|
+
default: ''
|
|
16
|
+
version:
|
|
17
|
+
description: 'Hotfix version (MAJOR.MINOR.PATCH)'
|
|
18
|
+
required: false
|
|
19
|
+
default: ''
|
|
10
20
|
title:
|
|
11
|
-
description: '
|
|
12
|
-
required:
|
|
13
|
-
default: '
|
|
21
|
+
description: 'Hotfix title'
|
|
22
|
+
required: false
|
|
23
|
+
default: ''
|
|
14
24
|
changelog:
|
|
15
|
-
description: '
|
|
16
|
-
required:
|
|
17
|
-
default: '
|
|
25
|
+
description: 'Hotfix changelog'
|
|
26
|
+
required: false
|
|
27
|
+
default: ''
|
|
18
28
|
issue:
|
|
19
29
|
description: 'Launcher issue'
|
|
20
30
|
required: true
|
|
21
|
-
|
|
31
|
+
|
|
32
|
+
concurrency:
|
|
33
|
+
group: copilot-deployment-${{ github.repository_id }}-${{ inputs.issue }}
|
|
34
|
+
cancel-in-progress: false
|
|
35
|
+
queue: max
|
|
22
36
|
|
|
23
37
|
jobs:
|
|
24
|
-
|
|
25
|
-
name:
|
|
38
|
+
validate:
|
|
39
|
+
name: Validate deployment command
|
|
26
40
|
runs-on: ubuntu-latest
|
|
27
|
-
timeout-minutes:
|
|
28
|
-
permissions:
|
|
29
|
-
actions: read
|
|
30
|
-
contents: read
|
|
41
|
+
timeout-minutes: 5
|
|
42
|
+
permissions: {}
|
|
31
43
|
steps:
|
|
32
|
-
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
44
|
+
- name: Validate bounded orchestration inputs
|
|
45
|
+
uses: actions/github-script@v9
|
|
46
|
+
env:
|
|
47
|
+
MODE: ${{ inputs.mode }}
|
|
48
|
+
OPERATION_ID: ${{ inputs.operation-id }}
|
|
49
|
+
VERSION: ${{ inputs.version }}
|
|
50
|
+
ISSUE: ${{ inputs.issue }}
|
|
51
|
+
TITLE: ${{ inputs.title }}
|
|
52
|
+
CHANGELOG: ${{ inputs.changelog }}
|
|
37
53
|
with:
|
|
38
|
-
|
|
39
|
-
|
|
54
|
+
script: |
|
|
55
|
+
const mode = process.env.MODE;
|
|
56
|
+
const operationId = process.env.OPERATION_ID || '';
|
|
57
|
+
const version = process.env.VERSION || '';
|
|
58
|
+
const issueText = process.env.ISSUE || '';
|
|
59
|
+
const issue = Number(issueText);
|
|
60
|
+
const title = process.env.TITLE || '';
|
|
61
|
+
const changelog = process.env.CHANGELOG || '';
|
|
62
|
+
const errors = [];
|
|
63
|
+
if (!/^[1-9][0-9]*$/.test(issueText) || !Number.isSafeInteger(issue) || issue < 1) errors.push('Issue must be a positive safe integer.');
|
|
64
|
+
if (!/^[0-9]+\.[0-9]+\.[0-9]+$/.test(version)) errors.push('Version must use MAJOR.MINOR.PATCH.');
|
|
65
|
+
if (mode === 'prepare') {
|
|
66
|
+
if (operationId) errors.push('Operation ID must be empty in prepare mode.');
|
|
67
|
+
if (!title || title.length > 1000) errors.push('Title must contain 1-1000 characters.');
|
|
68
|
+
if (!changelog || changelog.length > 50000) errors.push('Changelog must contain 1-50000 characters.');
|
|
69
|
+
} else if (mode === 'publish') {
|
|
70
|
+
if (!/^[A-Za-z0-9][A-Za-z0-9._-]{7,127}$/.test(operationId)) errors.push('Operation ID is invalid.');
|
|
71
|
+
if (title || changelog) errors.push('Title and changelog must be empty in publish mode.');
|
|
72
|
+
} else errors.push('Mode must be prepare or publish.');
|
|
73
|
+
if (errors.length) core.setFailed(errors.join(' '));
|
|
40
74
|
|
|
41
75
|
prepare-version-files:
|
|
42
|
-
name: Prepare
|
|
76
|
+
name: Prepare and validate hotfix
|
|
77
|
+
if: ${{ inputs.mode == 'prepare' }}
|
|
43
78
|
runs-on: ubuntu-latest
|
|
44
|
-
needs:
|
|
45
|
-
timeout-minutes:
|
|
79
|
+
needs: validate
|
|
80
|
+
timeout-minutes: 30
|
|
46
81
|
permissions:
|
|
47
82
|
contents: write
|
|
48
83
|
steps:
|
|
49
84
|
- uses: actions/checkout@v5
|
|
50
85
|
with:
|
|
51
86
|
persist-credentials: true
|
|
52
|
-
|
|
53
|
-
- name:
|
|
54
|
-
uses: actions/setup-node@v7
|
|
55
|
-
with:
|
|
56
|
-
node-version: '24.x'
|
|
57
|
-
|
|
58
|
-
- name: Set up pnpm
|
|
59
|
-
uses: pnpm/action-setup@v5
|
|
60
|
-
with:
|
|
61
|
-
version: 10.12.4
|
|
62
|
-
standalone: false
|
|
63
|
-
|
|
64
|
-
- name: Install dependencies
|
|
65
|
-
run: pnpm install --frozen-lockfile
|
|
66
|
-
|
|
67
|
-
- name: Validate inputs
|
|
68
|
-
env:
|
|
69
|
-
VERSION: ${{ github.event.inputs.version }}
|
|
70
|
-
ISSUE: ${{ github.event.inputs.issue }}
|
|
71
|
-
TITLE: ${{ github.event.inputs.title }}
|
|
72
|
-
CHANGELOG: ${{ github.event.inputs.changelog }}
|
|
73
|
-
run: |
|
|
74
|
-
err=0
|
|
75
|
-
if ! [[ "$VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
|
|
76
|
-
echo "::error::Version must be in semver format (e.g. 1.0.0)."
|
|
77
|
-
err=1
|
|
78
|
-
fi
|
|
79
|
-
if ! [[ "$ISSUE" =~ ^-?[0-9]+$ ]]; then
|
|
80
|
-
echo "::error::Issue must be a number (e.g. 123 or -1)."
|
|
81
|
-
err=1
|
|
82
|
-
fi
|
|
83
|
-
if [[ ${#TITLE} -gt 1000 ]]; then
|
|
84
|
-
echo "::error::Title must be at most 1000 characters."
|
|
85
|
-
err=1
|
|
86
|
-
fi
|
|
87
|
-
if [[ ${#CHANGELOG} -gt 50000 ]]; then
|
|
88
|
-
echo "::error::Changelog must be at most 50000 characters."
|
|
89
|
-
err=1
|
|
90
|
-
fi
|
|
91
|
-
[[ $err -eq 0 ]] || exit 1
|
|
92
|
-
|
|
93
|
-
# Example: generic step to perform the version update or compilation (uncomment and adjust as needed)
|
|
94
|
-
# - name: Generic step
|
|
95
|
-
# uses: whatever/action@v2
|
|
96
|
-
|
|
97
|
-
- name: Commit updated package.json and dist directory
|
|
87
|
+
# Add project-specific version, build, validation, smoke-test and generated-file steps here.
|
|
88
|
+
- name: Commit prepared hotfix files
|
|
98
89
|
uses: EndBug/add-and-commit@v9
|
|
99
90
|
with:
|
|
100
|
-
add: './
|
|
91
|
+
add: './'
|
|
101
92
|
committer_name: GitHub Actions
|
|
102
93
|
committer_email: actions@github.com
|
|
103
94
|
default_author: user_info
|
|
104
|
-
message: 'gh-action:
|
|
95
|
+
message: 'gh-action: prepare hotfix ${{ inputs.version }}'
|
|
105
96
|
|
|
106
|
-
|
|
107
|
-
name:
|
|
97
|
+
promote:
|
|
98
|
+
name: Open production promotion
|
|
99
|
+
if: ${{ inputs.mode == 'prepare' }}
|
|
108
100
|
runs-on: ubuntu-latest
|
|
109
|
-
|
|
110
|
-
|
|
101
|
+
needs: prepare-version-files
|
|
102
|
+
timeout-minutes: 10
|
|
111
103
|
permissions:
|
|
112
104
|
contents: read
|
|
105
|
+
issues: write
|
|
106
|
+
pull-requests: write
|
|
107
|
+
actions: write
|
|
113
108
|
steps:
|
|
114
|
-
-
|
|
115
|
-
uses: actions/checkout@v5
|
|
109
|
+
- uses: actions/checkout@v5
|
|
116
110
|
with:
|
|
117
111
|
persist-credentials: false
|
|
118
|
-
|
|
119
|
-
- name: Copilot - Create Tag
|
|
112
|
+
- name: Create or resume promotion PR
|
|
120
113
|
uses: vypdev/copilot@v3
|
|
121
|
-
if: ${{ success() }}
|
|
122
114
|
with:
|
|
123
|
-
|
|
115
|
+
single-action: prepare_deployment_action
|
|
116
|
+
single-action-issue: ${{ inputs.issue }}
|
|
117
|
+
issue-workflow-profile: ${{ vars.COPILOT_ISSUE_WORKFLOW_PROFILE || '' }}
|
|
118
|
+
single-action-version: ${{ inputs.version }}
|
|
119
|
+
single-action-title: ${{ inputs.title }}
|
|
120
|
+
single-action-changelog: ${{ inputs.changelog }}
|
|
124
121
|
main-branch: ${{ vars.MAIN_BRANCH || 'master' }}
|
|
125
122
|
development-branch: ${{ vars.DEVELOPMENT_BRANCH || 'develop' }}
|
|
126
123
|
release-tree: ${{ vars.RELEASE_TREE || 'release' }}
|
|
127
124
|
hotfix-tree: ${{ vars.HOTFIX_TREE || 'hotfix' }}
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
125
|
+
release-workflow: ${{ vars.RELEASE_WORKFLOW || 'release_workflow.yml' }}
|
|
126
|
+
hotfix-workflow: ${{ vars.HOTFIX_WORKFLOW || 'hotfix_workflow.yml' }}
|
|
127
|
+
release-reconciliation-strategy: ${{ vars.RELEASE_RECONCILIATION_STRATEGY || 'production-lineage' }}
|
|
128
|
+
hotfix-reconciliation-strategy: ${{ vars.HOTFIX_RECONCILIATION_STRATEGY || 'production-lineage' }}
|
|
129
|
+
reconciliation-pr-mode: ${{ vars.RECONCILIATION_PR_MODE || 'auto' }}
|
|
130
|
+
merge-queue-check-attestations: ${{ vars.MERGE_QUEUE_CHECK_ATTESTATIONS || '[]' }}
|
|
131
|
+
reconciliation-backmerge-mode: ${{ vars.RECONCILIATION_BACKMERGE_MODE || 'auto' }}
|
|
132
|
+
hotfix-active-release-policy: ${{ vars.HOTFIX_ACTIVE_RELEASE_POLICY || 'prefer-release' }}
|
|
133
|
+
reconciliation-tree: ${{ vars.RECONCILIATION_TREE || 'sync' }}
|
|
134
|
+
reconciliation-cleanup: ${{ vars.RECONCILIATION_CLEANUP || 'all' }}
|
|
135
|
+
reconciliation-issue-completion: ${{ vars.RECONCILIATION_ISSUE_COMPLETION || 'close' }}
|
|
136
|
+
orchestration-presentation-mode: ${{ vars.ORCHESTRATION_PRESENTATION_MODE || 'guided' }}
|
|
137
|
+
orchestration-diagrams: ${{ vars.ORCHESTRATION_DIAGRAMS || 'true' }}
|
|
138
|
+
orchestration-comment-mode: ${{ vars.ORCHESTRATION_COMMENT_MODE || 'update' }}
|
|
139
|
+
repository-locale: ${{ vars.REPOSITORY_LOCALE || 'en-US' }}
|
|
140
|
+
issues-locale: ${{ vars.ISSUES_LOCALE || '' }}
|
|
141
|
+
pull-requests-locale: ${{ vars.PULL_REQUESTS_LOCALE || '' }}
|
|
142
|
+
token: ${{ secrets.PAT }}
|
|
143
|
+
|
|
144
|
+
publish:
|
|
145
|
+
name: Publish accepted production commit
|
|
146
|
+
if: ${{ inputs.mode == 'publish' }}
|
|
147
|
+
runs-on: ubuntu-latest
|
|
148
|
+
needs: validate
|
|
149
|
+
timeout-minutes: 30
|
|
150
|
+
permissions:
|
|
151
|
+
contents: write
|
|
152
|
+
issues: write
|
|
153
|
+
pull-requests: write
|
|
154
|
+
steps:
|
|
155
|
+
- uses: actions/checkout@v5
|
|
156
|
+
with:
|
|
157
|
+
persist-credentials: false
|
|
158
|
+
ref: ${{ vars.MAIN_BRANCH || 'master' }}
|
|
159
|
+
- name: Create or verify production tag
|
|
160
|
+
uses: vypdev/copilot@v3
|
|
161
|
+
with:
|
|
162
|
+
single-action: create_tag
|
|
163
|
+
single-action-issue: ${{ inputs.issue }}
|
|
164
|
+
issue-workflow-profile: ${{ vars.COPILOT_ISSUE_WORKFLOW_PROFILE || '' }}
|
|
165
|
+
single-action-operation-id: ${{ inputs.operation-id }}
|
|
166
|
+
single-action-version: ${{ inputs.version }}
|
|
146
167
|
token: ${{ secrets.PAT }}
|
|
147
|
-
|
|
148
|
-
- name:
|
|
168
|
+
# Add project-specific deployment here. It runs only after production promotion merged.
|
|
169
|
+
- name: Create or verify GitHub Release
|
|
149
170
|
uses: vypdev/copilot@v3
|
|
150
|
-
if: ${{ success() }}
|
|
151
171
|
with:
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
single-action: 'create_release'
|
|
158
|
-
single-action-issue: '${{ github.event.inputs.issue }}'
|
|
159
|
-
single-action-version: '${{ github.event.inputs.version }}'
|
|
160
|
-
single-action-title: '${{ github.event.inputs.title }}'
|
|
161
|
-
single-action-changelog: '${{ github.event.inputs.changelog }}'
|
|
162
|
-
agent-provider: ${{ vars.AGENT_PROVIDER || 'codex' }}
|
|
163
|
-
agent-model-provider: ${{ vars.AGENT_MODEL_PROVIDER || 'openai' }}
|
|
164
|
-
agent-model: ${{ vars.AGENT_MODEL || 'gpt-5.6-luna' }}
|
|
165
|
-
agent-effort: ${{ vars.AGENT_EFFORT }}
|
|
166
|
-
agent-command: ${{ vars.AGENT_COMMAND }}
|
|
167
|
-
findings-provider: ${{ vars.FINDINGS_PROVIDER }}
|
|
168
|
-
findings-model-provider: ${{ vars.FINDINGS_MODEL_PROVIDER }}
|
|
169
|
-
findings-model: ${{ vars.FINDINGS_MODEL }}
|
|
170
|
-
findings-effort: ${{ vars.FINDINGS_EFFORT }}
|
|
171
|
-
findings-command: ${{ vars.FINDINGS_COMMAND }}
|
|
172
|
-
fixer-provider: ${{ vars.FIXER_PROVIDER }}
|
|
173
|
-
fixer-model-provider: ${{ vars.FIXER_MODEL_PROVIDER }}
|
|
174
|
-
fixer-model: ${{ vars.FIXER_MODEL }}
|
|
175
|
-
fixer-effort: ${{ vars.FIXER_EFFORT }}
|
|
176
|
-
fixer-command: ${{ vars.FIXER_COMMAND }}
|
|
172
|
+
single-action: create_release
|
|
173
|
+
single-action-issue: ${{ inputs.issue }}
|
|
174
|
+
issue-workflow-profile: ${{ vars.COPILOT_ISSUE_WORKFLOW_PROFILE || '' }}
|
|
175
|
+
single-action-operation-id: ${{ inputs.operation-id }}
|
|
176
|
+
single-action-version: ${{ inputs.version }}
|
|
177
177
|
token: ${{ secrets.PAT }}
|
|
178
|
-
|
|
179
|
-
# Example: generic step to perform the deployment (uncomment and adjust as needed)
|
|
180
|
-
# - name: Generic step
|
|
181
|
-
# uses: whatever/action@v2
|
|
182
|
-
|
|
183
|
-
- name: Copilot - Deploy success notification
|
|
178
|
+
- name: Start configured reconciliation
|
|
184
179
|
uses: vypdev/copilot@v3
|
|
185
|
-
if: ${{ success() }}
|
|
186
180
|
with:
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
single-action: 'deployed_action'
|
|
193
|
-
single-action-issue: '${{ github.event.inputs.issue }}'
|
|
194
|
-
agent-provider: ${{ vars.AGENT_PROVIDER || 'codex' }}
|
|
195
|
-
agent-model-provider: ${{ vars.AGENT_MODEL_PROVIDER || 'openai' }}
|
|
196
|
-
agent-model: ${{ vars.AGENT_MODEL || 'gpt-5.6-luna' }}
|
|
197
|
-
agent-effort: ${{ vars.AGENT_EFFORT }}
|
|
198
|
-
agent-command: ${{ vars.AGENT_COMMAND }}
|
|
199
|
-
findings-provider: ${{ vars.FINDINGS_PROVIDER }}
|
|
200
|
-
findings-model-provider: ${{ vars.FINDINGS_MODEL_PROVIDER }}
|
|
201
|
-
findings-model: ${{ vars.FINDINGS_MODEL }}
|
|
202
|
-
findings-effort: ${{ vars.FINDINGS_EFFORT }}
|
|
203
|
-
findings-command: ${{ vars.FINDINGS_COMMAND }}
|
|
204
|
-
fixer-provider: ${{ vars.FIXER_PROVIDER }}
|
|
205
|
-
fixer-model-provider: ${{ vars.FIXER_MODEL_PROVIDER }}
|
|
206
|
-
fixer-model: ${{ vars.FIXER_MODEL }}
|
|
207
|
-
fixer-effort: ${{ vars.FIXER_EFFORT }}
|
|
208
|
-
fixer-command: ${{ vars.FIXER_COMMAND }}
|
|
181
|
+
single-action: published_deployment_action
|
|
182
|
+
single-action-issue: ${{ inputs.issue }}
|
|
183
|
+
issue-workflow-profile: ${{ vars.COPILOT_ISSUE_WORKFLOW_PROFILE || '' }}
|
|
184
|
+
single-action-operation-id: ${{ inputs.operation-id }}
|
|
185
|
+
single-action-version: ${{ inputs.version }}
|
|
209
186
|
token: ${{ secrets.PAT }}
|
|
210
187
|
|
|
211
188
|
report-failure:
|
|
212
|
-
name: Report
|
|
189
|
+
name: Report orchestration failure
|
|
213
190
|
runs-on: ubuntu-latest
|
|
214
191
|
timeout-minutes: 5
|
|
215
|
-
needs: [
|
|
216
|
-
if: ${{ failure() &&
|
|
192
|
+
needs: [validate, prepare-version-files, promote, publish]
|
|
193
|
+
if: ${{ failure() && needs.validate.result == 'success' }}
|
|
217
194
|
permissions:
|
|
218
195
|
issues: write
|
|
219
196
|
steps:
|
|
220
|
-
- name:
|
|
221
|
-
|
|
197
|
+
- name: Persist publication failure
|
|
198
|
+
if: ${{ inputs.mode == 'publish' }}
|
|
199
|
+
uses: vypdev/copilot@v3
|
|
200
|
+
with:
|
|
201
|
+
single-action: failed_deployment_action
|
|
202
|
+
single-action-issue: ${{ inputs.issue }}
|
|
203
|
+
issue-workflow-profile: ${{ vars.COPILOT_ISSUE_WORKFLOW_PROFILE || '' }}
|
|
204
|
+
single-action-operation-id: ${{ inputs.operation-id }}
|
|
205
|
+
single-action-version: ${{ inputs.version }}
|
|
206
|
+
single-action-message: Publication failed. Review ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} before retrying.
|
|
207
|
+
token: ${{ secrets.PAT }}
|
|
208
|
+
- name: Report preparation failure
|
|
209
|
+
if: ${{ inputs.mode == 'prepare' }}
|
|
222
210
|
uses: vypdev/copilot@v3
|
|
223
211
|
with:
|
|
224
212
|
single-action: publish_issue_comment
|
|
225
|
-
single-action-issue:
|
|
213
|
+
single-action-issue: ${{ inputs.issue }}
|
|
214
|
+
issue-workflow-profile: ${{ vars.COPILOT_ISSUE_WORKFLOW_PROFILE || '' }}
|
|
226
215
|
single-action-message: |
|
|
227
|
-
## ❌ Hotfix
|
|
216
|
+
## ❌ Hotfix orchestration needs attention
|
|
228
217
|
|
|
229
|
-
|
|
218
|
+
Phase `${{ inputs.mode }}` failed. Review the control center before retrying.
|
|
230
219
|
|
|
231
220
|
[Review the workflow run](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }})
|
|
232
|
-
token: ${{
|
|
221
|
+
token: ${{ secrets.PAT }}
|