Skip to content

ci(scripts): update release docs from CI covering all channels#27471

Open
f0ssel wants to merge 1 commit into
ci/backport-esr-channelsfrom
ci/release-docs-in-ci
Open

ci(scripts): update release docs from CI covering all channels#27471
f0ssel wants to merge 1 commit into
ci/backport-esr-channelsfrom
ci/release-docs-in-ci

Conversation

@f0ssel

@f0ssel f0ssel commented Jul 23, 2026

Copy link
Copy Markdown
Member

What

Moves release-docs updates out of the local v1 releaser and into a bot-authored, post-release CI job, and expands coverage to the full version schedule across mainline, stable, ESR, and maintenance ESR (ESR-1).

Note

Stacked on #27460 (ci/backport-esr-channels), which adds scripts/release_channels/esr_versions.txt that this change consumes. Review/merge that first; this PR targets that branch.

Why

The v1 releaser (scripts/releaser/v1/docs.go) updated the docs and ran git commit + gh pr create locally with no bot identity, so the docs PR was authored by the person running the release - who then can't approve their own PR. It also only handled mainline/stable.

Changes

  • scripts/update-release-calendar.sh now updates the full release-docs version schedule:
    • the release calendar table (unchanged behavior),
    • the "latest ESR version" prose in index.md,
    • the Helm --version pins in kubernetes.md and the per-channel pins in rancher.md,
      for mainline (n), stable (n-1), ESR, and maintenance ESR (ESR-1). ESR channels derive from esr_versions.txt (current ESR = highest active minor; maintenance ESR = next highest).
  • Docs content: added ESR + Maintenance ESR pins to docs/install/kubernetes.md and docs/install/rancher.md, and refreshed the stale k8s mainline pin.
  • .github/workflows/release.yaml: new update-docs job (needs: release, if: !dry_run && channel != rc) that runs the script and opens the docs PR via peter-evans/create-pull-request with GITHUB_TOKEN (→ github-actions[bot]), so the release runner can approve it. Pattern copied from tag-and-release.yaml (the v2 experiment being removed soon).
  • scripts/releaser/v1: removed the now-dead docs-mutation + PR-creation path (docs.go/docs_test.go deleted; release.go now just points at the CI job).

Validation

  • shellcheck -x + shfmt clean on the script; ran it locally and confirmed it updates all four channels (mainline 2.35.2, stable 2.34.6, ESR 2.34.6, maintenance ESR 2.29.19) plus the ESR prose.
  • Fixed a latent bug while porting: the autoversion search window (5 lines) never reached the --version line (6 lines below the pragma), which is why the k8s mainline pin had been stuck at a stale 2.34.0. Widened to 10.
  • go build, go vet, and go test ./scripts/releaser/v1/... pass.
  • actionlint + zizmor clean on release.yaml.
Implementation plan

Goal: the release-docs PR is created by a bot in CI (post-release) so the release runner can approve it, and the docs version schedule covers mainline, stable, ESR, and maintenance ESR.

Decisions (confirmed): hook into release.yaml; GITHUB_TOKEN is fine; put all logic in one script CI runs; docs content change to add ESR pins is OK; stack on the backport branch.

Approach:

  1. Expand update-release-calendar.sh to be the single source of docs-schedule updates (calendar + ESR prose + k8s/rancher pins) for all four channels, deriving ESR/maintenance-ESR from esr_versions.txt.
  2. Add a post-release update-docs job to release.yaml that runs the script and opens a bot PR with GITHUB_TOKEN.
  3. Remove docs mutation + PR creation from the v1 releaser so it no longer opens a runner-authored PR.

Assumptions: 2.x line (major hardcoded, matching existing code); ESR list maintained manually; current ESR = highest active minor, maintenance ESR = next highest.


Opened by Coder Agents on behalf of @f0ssel.

Move release-docs updates out of the local v1 releaser (which opened the PR
under the release runner's own identity, so they could not approve it) and
into a bot-authored, post-release CI job.

- scripts/update-release-calendar.sh now updates the full release-docs version
  schedule for mainline, stable, ESR, and maintenance ESR (ESR-1): the release
  calendar, the 'latest ESR version' prose, and the Kubernetes and Rancher
  per-channel version pins. ESR channels are derived from
  scripts/release_channels/esr_versions.txt (current ESR = highest active
  minor, maintenance ESR = next highest).
- Add ESR and maintenance ESR pins to docs/install/kubernetes.md and
  docs/install/rancher.md.
- .github/workflows/release.yaml gains an update-docs job that runs the script
  post-release and opens the docs PR via GITHUB_TOKEN (github-actions[bot]), so
  the release runner can approve it.
- Remove the docs-mutation and PR-creation path from the v1 releaser
  (scripts/releaser/v1/docs.go), which is now dead.
@f0ssel
f0ssel requested a review from jdomeracki-coder as a code owner July 23, 2026 20:51
@github-actions

Copy link
Copy Markdown

Docs preview

Check off each page once it's been reviewed. If a page changes in a later push, its checkbox clears automatically so it gets a fresh look. Pages not yet wired into the docs navigation aren't listed here.

@coder-tasks

coder-tasks Bot commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

Documentation Check

Updates Needed

  • docs/install/releases/index.md - The install pages now present Maintenance ESR (ESR-1) as an installable release channel with its own pinned version (2.29.19), but the "Release channels" section here never defines it. It still describes a single "Extended Support Release" channel, and the schedule table labels 2.29 and 2.34 only as "Extended Support Release" / "Stable (ESR)". Add a subsection (or extend the ESR section) explaining what Maintenance ESR is and when to choose it, since kubernetes.md and rancher.md link here to "learn more about which best suits your team."
  • docs/install/kubernetes.md - The new prose says "We support four release channels: mainline, stable, and the Extended Support Releases (ESR and maintenance ESR)", which does not match releases/index.md, where the four primary channels are Mainline, Stable, Security Support, and Extended Support Release. Reconcile the channel lists so the two pages agree.

Automated review via Coder Agents

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