Skip to content

feat(release): notify Dispatch directly on publish + chart sha alias - #24

Merged
blairham merged 1 commit into
mainfrom
feat/ci-notify-dispatch
Jul 2, 2026
Merged

feat(release): notify Dispatch directly on publish + chart sha alias#24
blairham merged 1 commit into
mainfrom
feat/ci-notify-dispatch

Conversation

@blairham

@blairham blairham commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

Summary

PR 4 of the platform-gitops#1201 sequence — the release workflows emit the signals that replace the image/*/chart/* git-tag webhook:

  • New actions/notify-dispatch composite: signed POST ({repo, kind, service, version, sha, run_url}, hex HMAC in X-Dispatch-Signature using the org CI_WEBHOOK_SECRET via secrets: inherit) through the public webhook-forwarder /dispatch/ci route. Called by both release workflows after each successful push. Warn-only on every failure mode (missing secret, non-2xx, network) — a release never fails on a notification; the EventBridge ECR-push backstop covers a miss.
  • Chart X.Y.Z-<sha7> OCI alias in chart-release (aws ecr batch-get-image + put-image on the just-pushed manifest): gives the ECR-push backstop commit provenance for charts, mirroring the image tag pair. Tag immutability allows aliasing (new tag, same manifest); the push role already grants both actions on charts/<name>; the prerelease-shaped tag is excluded by Kargo's semver chart subscriptions — same reason image -sha7 tags never promote.
  • Legacy tags/Releases still minted — removal is the final PR, after these signals are verified in anger.

Test plan

  • actionlint clean
  • Signing pipeline verified against the live endpoint: the action's exact printf | openssl dgst -hmac | awk chain with the real SSM secret → dispatch returns 400 invalid payload on an intentionally-bogus kind (signature accepted, payload rejected) vs 401 unsigned
  • Post-merge caller test (callers pin @main): dispatch an understudy release and confirm dispatch logs ci release notification received + publish slot filled by the CI path, and charts/understudy:<ver>-<sha7> appears in ECR

🤖 Generated with Claude Code

Dispatch learns about published artifacts from the create-webhook on
the legacy image/*+chart/* git tags; those stop being minted at the
end of platform-gitops#1201, so the release workflows now emit the
replacement signals themselves. A shared notify-dispatch composite
POSTs a signed publish notification (service, version, full commit
SHA, run URL) through the public /dispatch/ci route after each
successful push — warn-only, since the EventBridge ECR-push backstop
covers a missed call. chart-release additionally aliases the pushed
OCI chart as X.Y.Z-<sha7> (put-image on the same manifest, allowed
under tag immutability) so that backstop can recover chart commit
provenance the way it already does for images; the prerelease-shaped
tag is invisible to Kargo's chart Warehouses.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@blairham
blairham merged commit ec5b44e into main Jul 2, 2026
2 checks passed
@blairham
blairham deleted the feat/ci-notify-dispatch branch July 5, 2026 14:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant