Skip to content

feat: add reusable-promote workflow (C1 consolidation) - #157

Merged
castrojo merged 1 commit into
mainfrom
ci/c1-reusable-promote
Jun 11, 2026
Merged

feat: add reusable-promote workflow (C1 consolidation)#157
castrojo merged 1 commit into
mainfrom
ci/c1-reusable-promote

Conversation

@castrojo

@castrojo castrojo commented Jun 10, 2026

Copy link
Copy Markdown
Contributor

Summary

Consistency audit C1: consolidate promote-testing-to-main.yml from all three image repos into one reusable workflow.

Before: 875 LoC triplicated across bluefin (343) + bluefin-lts (349) + dakota (183)
After: one 220-line reusable + ~30-line callers in each image repo

Design decisions

No new secrets — uses github.token like the existing per-repo workflows. The original audit template proposed APP_ID/APP_PRIVATE_KEY but none of the existing promote workflows use an App token.

Includes the gate: job — the original template omitted this; the existing per-repo workflows all have it. It calls reusable-release-gate.yml with cosign_identity_regexp as a required input (varies per image repo).

release-state.yaml schema — kept identical to the existing per-repo format (testing: map keyed by variant name). Nothing reads this file as a pipeline input; it's a record/audit trail only. The template's proposed schema change was unnecessary.

Inputs

Input Required Default
variants
cosign_identity_regexp
registry ghcr.io/projectbluefin
run_e2e false
e2e_suite smoke
lts_floor_days 0

Adoption order (canary-first)

  1. dakota — 1 variant pair, lowest user impact
  2. bluefin-lts — observe one promotion cycle
  3. bluefin — highest user impact, land last

Adoption PRs filed separately once this merges.

Consumer validation

Consumer PR: projectbluefin/dakota#788
Consumer CI run: https://github.com/projectbluefin/dakota/actions/runs/27314334366
Out-of-org consumer impact: N/A — reusable-promote is an internal workflow called only by projectbluefin image repos. aurora and bazzite do not use promote-testing-to-main from this repo.

  • Consumer PR opened and CI run linked
  • CI passing (default build: success; validate job only fires on pull_request events, not workflow_dispatch — actionlint pass on this PR confirms YAML validity)
  • Out-of-org impact assessed

Assisted-by: Claude Sonnet 4.5 via pi

Consolidates promote-testing-to-main.yml from bluefin (~343 LoC),
bluefin-lts (~349 LoC), and dakota (~183 LoC) into one reusable
workflow. Per-image callers will be ~30 LoC each.

No new secrets — uses github.token like the existing per-repo
workflows. Inputs: variants (JSON array), cosign_identity_regexp,
registry, run_e2e, e2e_suite, lts_floor_days.

Includes the gate job (reusable-release-gate) that the original
template omitted.

Closes #584 (C1 from consistency audit).

Assisted-by: Claude Sonnet 4.5 via pi
@castrojo
castrojo requested a review from p5 as a code owner June 10, 2026 23:53
@github-actions

Copy link
Copy Markdown

Dependency Review

The following issues were found:
  • ✅ 0 vulnerable package(s)
  • ✅ 0 package(s) with incompatible licenses
  • ✅ 0 package(s) with invalid SPDX license definitions
  • ⚠️ 1 package(s) with unknown licenses.
See the Details below.

License Issues

.github/workflows/reusable-promote.yml

PackageVersionLicenseIssue Type
projectbluefin/actions/.github/workflows/reusable-release-gate.yml84649d2NullUnknown License

OpenSSF Scorecard

PackageVersionScoreDetails
actions/actions/checkout df4cb1c069e1874edd31b4311f1884172cec0e10 🟢 5.9
Details
CheckScoreReason
Binary-Artifacts🟢 10no binaries found in the repo
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Code-Review🟢 10all changesets reviewed
Maintained⚠️ 23 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 2
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Token-Permissions⚠️ 0detected GitHub workflow tokens with excessive permissions
Packaging⚠️ -1packaging workflow not detected
Fuzzing⚠️ 0project is not fuzzed
License🟢 10license file detected
Pinned-Dependencies🟢 3dependency not pinned by hash detected -- score normalized to 3
Signed-Releases⚠️ -1no releases found
Security-Policy🟢 9security policy file detected
SAST🟢 8SAST tool detected but not run on all commits
Branch-Protection🟢 5branch protection is not maximal on development and all release branches
actions/projectbluefin/actions/.github/workflows/reusable-release-gate.yml 84649d2 UnknownUnknown

Scanned Files

  • .github/workflows/reusable-promote.yml

@castrojo
castrojo merged commit 8487dff into main Jun 11, 2026
11 of 12 checks passed
castrojo added a commit to projectbluefin/dakota that referenced this pull request Jun 11, 2026
Draft PR — consumer validation test for projectbluefin/actions#157.
DO NOT MERGE — will be updated to pin the merged SHA after review.

Replaces 183-line promote-testing-to-main.yml with a 30-line caller
to projectbluefin/actions/.github/workflows/reusable-promote.yml.

Assisted-by: Claude Sonnet 4.5 via pi
@github-actions
github-actions Bot deleted the ci/c1-reusable-promote branch June 15, 2026 05:48
@castrojo castrojo added 4-review A pull request is awaiting review. and removed pr/needs-review labels Jul 28, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

4-review A pull request is awaiting review.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant