You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
docs(skills): fix three reviewer-flagged errors — source-verified
All three issues found by code review, fixed against actual workflow files:
1. docs/ci.md: remove all references to retired weekly-testing-promotion.yml,
wrong Sunday 06:00 UTC schedule, daily 13:00 UTC schedule (no such trigger),
and nightly :testing model. Replace with current execute-release.yml flow
and correct Tuesday 04:00 UTC promotion cadence.
2. execute-release.yml commit message gate was wrong in both ci.md skill and
workflow-map.md — said 'ci: promote testing images to stable' but actual
regex is '^ci\(promote\): dakota testing|^chore: promote testing to main'
(verified from execute-release.yml:31-33).
3. workflow-map.md Pipeline Map said 'nightly' for promote-testing-to-main.yml
schedule — corrected to 'weekly Tuesday 04:00 UTC' (matches actual cron
'0 4 * * 2' and release-promotion.md).
Assisted-by: Claude Sonnet 4.6 via GitHub Copilot
`promote` depends only on `publish-image`, not on SBOM — saves 10–15 min on the critical path.
30
30
31
-
After every successful publish, `execute-release.yml` auto-fires and creates a GitHub Release.
31
+
**`execute-release.yml`**fires on `push: main`and `workflow_dispatch`. A `check-trigger` job reads the commit message — proceeds only when it matches `^ci\(promote\): dakota testing` or `^chore: promote testing to main`. `workflow_dispatch` bypasses the gate. On success: copies `:testing` → `:stable`/`:latest`, then generates a GitHub Release with SBOM diff.
32
32
33
-
After every successful publish, `release.yml`auto-fires (via `workflow_run`) and creates a GitHub Release with a card image, SBOM diff, and package changelog.
33
+
**Critical ordering:**`publish.yml`pulls the OCI artifact from CAS. The artifact is only in CAS if `build.yml` ran first for that SHA. Always dispatch `build.yml --ref testing` (or let push trigger it) before manually dispatching `publish.yml`.
34
34
35
-
**Critical ordering:**`publish.yml` pulls the OCI artifact from CAS. The artifact
36
-
is only in CAS if `build.yml` ran on `main` first. If `build.yml` has only run on
37
-
feature branches, CAS will not have the artifact for main's SHA and publish will
38
-
fail with `"No artifacts to stage"`. Always dispatch `build.yml --ref main` before
Runs **Sunday 06:00 UTC**. Promotes `:testing` → `:latest` + `:stable` via digest-pinned re-tagging, then fast-forwards the `latest` and `stable` git branches to the promoted source SHA.
37
+
Triggered by a push to `main` whose commit message matches the promotion pattern. The normal path is:
-`:testing` — published on every BST-affecting push to `testing` or `main` branch
66
+
-`:latest` / `:stable` — promoted from `:testing` via `execute-release.yml` after promotion PR merges to main (Tuesday 04:00 UTC scheduled path, or manual dispatch)
74
67
75
68
Never bypass the merge queue with `--admin`.
76
69
@@ -79,19 +72,16 @@ Never bypass the merge queue with `--admin`.
79
72
To manually cut a `:stable` and `:latest` release:
80
73
81
74
```bash
82
-
# 1. Ensure :testing exists and is healthy
83
-
gh run list --repo projectbluefin/dakota --workflow "Publish Bluefin dakota" --limit 5
75
+
# 1. Ensure :testing exists and promotion PR is open
76
+
gh pr list --repo projectbluefin/dakota --search 'head:auto/promote-testing-to-main state:open'
84
77
85
-
# 2. Dispatch the weekly promotion workflow
86
-
gh workflow run weekly-testing-promotion.yml \
87
-
--repo projectbluefin/dakota
78
+
# 2. If the promotion PR gate has passed, dispatch execute-release directly
79
+
gh workflow run execute-release.yml --repo projectbluefin/dakota --ref main
88
80
89
-
#3. Approve the deployment at the production environment gate
#OR: dispatch promote-testing-to-main to open/update the promotion PR
82
+
gh workflow run promote-testing-to-main.yml --repo projectbluefin/dakota
91
83
```
92
84
93
-
The `promote` job requires approval via the `production` GitHub Environment before it runs. The number of required approvals is configured in the environment settings.
94
-
95
85
## Restarting the factory (publish pipeline has been idle)
96
86
97
87
When the publish pipeline has been paused intentionally (e.g., post-refactor),
Copy file name to clipboardExpand all lines: docs/skills/ci.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -98,7 +98,7 @@ The rationalizations that have caused real production failures:
98
98
|`publish.yml`|`workflow_run` from `build.yml` (branches: main, next, testing, + their gh-readonly-queue/* paths) | Export from CAS → push `:$sha` → sign/attest → promote to `:testing`/`:next`. No build happens here. |
99
99
|`promote-testing-to-main.yml`|`push: testing`, `schedule: Tue 04:00 UTC`, `workflow_dispatch`| Opens/updates promotion PR from testing into main. |
100
100
|`pr-release-gate.yml`|`pull_request` to `main`| Gates the promotion PR via cosign verify of `:testing`. |
101
-
|`execute-release.yml`|`push: main`, `workflow_dispatch`|Reads commit message — proceeds only when it starts with `ci: promote testing images to stable`. Copies tags to`:latest`/`:stable`, creates GitHub Release. |
101
+
|`execute-release.yml`|`push: main`, `workflow_dispatch`|`check-trigger` job gates on commit message matching `^ci\(promote\): dakota testing` or `^chore: promote testing to main`. `workflow_dispatch` bypasses the gate. Copies `:testing` →`:stable`/`:latest`, creates GitHub Release. |
102
102
|`cache-warm.yml`|`schedule: Mon/Thu 06:00 UTC`, `workflow_dispatch`| Pre-warms remote CAS. Two parallel jobs (x86_64, aarch64), `continue-on-error: true`. **Not exempt from pre-flight — cancel before any real build.**|
0 commit comments