Skip to content

[feature] CI: automate goquery-ui chart release on tagged app builds#477

Merged
els0r merged 1 commit into
mainfrom
feat/release-chart-mechanics
Jun 17, 2026
Merged

[feature] CI: automate goquery-ui chart release on tagged app builds#477
els0r merged 1 commit into
mainfrom
feat/release-chart-mechanics

Conversation

@els0r

@els0r els0r commented Jun 17, 2026

Copy link
Copy Markdown
Owner

What

Automates avenue 2 of the goquery-ui chart release model (PR #476): a tagged app release now retargets the chart's appVersion, bumps its version:, ships the chart, and records the bump on main — no manual edit.

Adds a release-chart job to build-docker.yml:

  • needs: [build-docker] — runs only after the goprobe/frontend image is pushed, so the chart never pins an image that doesn't exist yet.
  • if: !contains(github.ref_name, '-') — final tags only; prereleases (-rc*) build images but never ship a chart.
  • Reads appVersion from main; idempotency guard: if it already equals the tag, the job is a no-op (re-runs and partial-failure retries converge).
  • Otherwise patch-bumps version:, sets appVersion to the tag's X.Y.Z (surgical sed, preserving the chart's comments/spacing), helm package, GHCR existence check, helm push, then commits both fields back to main with GITHUB_TOKEN under a [trivial] message.

Why this shape

Publishing straight from the tag via helm package --app-version sidesteps the well-known rule that a GITHUB_TOKEN push does not re-trigger another workflow — so we need no PAT, no repository_dispatch, and no second publish path. The "won't re-trigger" behaviour becomes a feature (no double publish). Alternatives weighed (always-latest, commit-back-with-PAT) and the rationale are in ADR 0002; shared vocabulary is in CONTEXT.md.

publish-chart.yml is unchanged and remains the path for avenue 1 (chart-only changes merged to main).

Test plan

Verified locally:

  • Workflow YAML parses; both jobs recognized.
  • Version logic: 0.1.1 → 0.1.2, appVersion → "4.3.0".
  • sed edit touches only the two value lines; apiVersion untouched; comments/spacing preserved.

Exercised live only on the first real v*.*.* tag (helm GHCR push + GITHUB_TOKEN push to main need a runner).

🤖 Generated with Claude Code

Adds a release-chart job to build-docker.yml implementing avenue 2 of the
chart release model: on a final v*.*.* tag, after the frontend image is
pushed, retarget the chart's appVersion to it, patch-bump the chart's own
version:, publish the chart to GHCR, and commit both fields back to main as
bookkeeping.

Publishes straight from the tag via `helm package --app-version`, which
sidesteps the GITHUB_TOKEN re-trigger rule and needs no PAT. Idempotent on
appVersion, so re-runs and partial failures converge without minting a
spurious chart version. Skips prerelease tags. Documented in
docs/adr/0002 and CONTEXT.md.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@els0r els0r merged commit e1a6da7 into main Jun 17, 2026
9 checks passed
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