openova/.github
hatiyildiz 16eb117c5f fix(ci): deploy-bot auto-bumps bootstrap-kit pin when chart version bumps (Refs TBD-A6 meta-fix)
TBD-A6: every chart-publishing wave in the 2026-05-17/18 session required
a SEPARATE manual collector PR to bump the bootstrap-kit pin so Sovereigns
would actually install the freshly published OCI artifact. Without the
pin bump, the chart at e.g. bp-catalyst-platform:1.4.166 gets published
to GHCR but clusters/_template/bootstrap-kit/13-bp-catalyst-platform.yaml
still pins `version: 1.4.165` and fresh Sovereigns silently install the
OLD artifact.

Manual collector PRs eliminated by this hook (sample from one session):
  #1676 chart 1.4.162 -> 1.4.163 (Wave 16 collector)
  #1687 chart 1.4.163 -> 1.4.164 (Wave 17 collector)
  #1694 bp-guacamole 0.1.21 -> 0.1.22 (TBD-G6)
  #1695 chart 1.4.164 -> 1.4.165 (Wave 18 collector)
  #1698 chart 1.4.165 -> 1.4.166 (TBD-E8)
  #1700 bp-guacamole 0.1.22 -> 0.1.23 (TBD-G4 phase 2)
  #1706 bp-self-sovereign-cutover 0.1.29 -> 0.1.30 (TBD-C18)
  #1707 chart 1.4.166 -> 1.4.167 (Wave 24 collector)

The fix lives in .github/workflows/blueprint-release.yaml — the single
workflow that publishes every chart's OCI artifact. After a successful
push + cosign sign + SBOM attest, a new "Auto-bump bootstrap-kit pin"
step:
  1. Reads ${{ steps.chart.outputs.name }} (e.g. `bp-newapi`).
  2. Greps clusters/_template/bootstrap-kit/*.yaml for the canonical
     `      chart: <name>` line (6-space indent matches every existing
     slot's HelmRelease.spec.chart.spec.chart shape).
  3. If a matching slot file is found, sed-replaces the slot's
     `      version: <old>` with `version: <new>` and commits +
     pushes back to main as hatiyildiz <noreply>.
  4. If no slot file matches, the chart is an opt-in Application
     Blueprint (e.g. bp-vllm, bp-temporal) and the step gracefully
     no-ops.
  5. Conflict-tolerant retry up to 3 times with idempotent
     reset-and-rewrite for the parallel matrix case (multiple charts
     bumped in the same push).

The bot-author commit does NOT re-trigger workflows (GitHub Actions
GITHUB_TOKEN convention), so the chain converges in ONE pass:
chart bump -> blueprint-release -> publish artifact -> bump pin.
No loop.

A regression test (scripts/check-bootstrap-kit-pin-sync.sh) asserts
the convergence contract: every Chart.yaml in platform/* or products/*
whose chart name is pinned in clusters/_template/bootstrap-kit/ MUST
have the same version on both sides. The .github/workflows/test-
bootstrap-kit.yaml workflow now runs this audit:
  - On `pull_request`: `--changed-only --base <pr-base>` so a PR is
    only blocked on chart->pin pairs IT modified. This avoids forcing
    pre-existing drifts (13 charts as of 2026-05-18, validated via a
    full sweep against origin/main) to be fixed before any unrelated
    PR can land. The auto-bump hook will heal those drifts on the
    next bump of each lagging chart.
  - On `push` and `workflow_dispatch`: full sweep so post-merge
    drift is observable on the run summary.

Why blueprint-release.yaml is the right insertion point (not each
build-bp-<name>.yaml or services-build.yaml or catalyst-build.yaml):
  - It runs after EVERY chart publish, regardless of upstream trigger.
  - It already has the canonical chart name + version in
    ${{ steps.chart.outputs.name }} + ${{ steps.chart.outputs.version }}.
  - One file changed, one hook covers all 51 bootstrap-kit slots
    plus future additions.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-18 16:35:57 +02:00
..
workflows fix(ci): deploy-bot auto-bumps bootstrap-kit pin when chart version bumps (Refs TBD-A6 meta-fix) 2026-05-18 16:35:57 +02:00
dependabot.yml chore(ci): add Dependabot for npm and GitHub Actions dependency updates 2026-03-19 13:42:02 +01:00