From 6212eecf12626d3a98a7a98177fdc09ad383c448 Mon Sep 17 00:00:00 2001 From: rcourtman Date: Sun, 5 Jul 2026 21:10:47 +0100 Subject: [PATCH] Align Docker defaults with v6.0.4-rc.1 Pin Docker install defaults and Helm metadata to the support prerelease version. --- deploy/helm/pulse/Chart.yaml | 8 +++--- deploy/helm/pulse/README.md | 2 +- docker-compose.yml | 2 +- .../subsystems/deployment-installability.md | 23 ++++++++------- scripts/install-docker.sh | 2 +- .../installtests/build_release_assets_test.go | 9 ++++-- .../installtests/install_docker_sh_test.go | 28 +++++++++++++++++++ 7 files changed, 55 insertions(+), 19 deletions(-) diff --git a/deploy/helm/pulse/Chart.yaml b/deploy/helm/pulse/Chart.yaml index 7a7f0d2d5..87d045db9 100644 --- a/deploy/helm/pulse/Chart.yaml +++ b/deploy/helm/pulse/Chart.yaml @@ -2,9 +2,9 @@ apiVersion: v2 name: pulse description: Helm chart for deploying the Pulse hub and optional Docker monitoring agent. type: application -version: 6.0.3 -appVersion: "6.0.3" -icon: https://raw.githubusercontent.com/rcourtman/Pulse/v6.0.3/docs/images/pulse-logo.svg +version: 6.0.4-rc.1 +appVersion: "6.0.4-rc.1" +icon: https://raw.githubusercontent.com/rcourtman/Pulse/v6.0.4-rc.1/docs/images/pulse-logo.svg keywords: - monitoring - proxmox @@ -32,7 +32,7 @@ annotations: description: Smoke tests with kind cluster deployment artifacthub.io/links: | - name: Documentation - url: https://github.com/rcourtman/Pulse/blob/v6.0.3/docs/KUBERNETES.md + url: https://github.com/rcourtman/Pulse/blob/v6.0.4-rc.1/docs/KUBERNETES.md - name: Support url: https://github.com/rcourtman/Pulse/discussions artifacthub.io/maintainers: | diff --git a/deploy/helm/pulse/README.md b/deploy/helm/pulse/README.md index 5b786836b..fb7d430b7 100644 --- a/deploy/helm/pulse/README.md +++ b/deploy/helm/pulse/README.md @@ -1,6 +1,6 @@ # pulse -![Version: 6.0.3](https://img.shields.io/badge/Version-6.0.3-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 6.0.3](https://img.shields.io/badge/AppVersion-6.0.3-informational?style=flat-square) +![Version: 6.0.4-rc.1](https://img.shields.io/badge/Version-6.0.4--rc.1-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 6.0.4-rc.1](https://img.shields.io/badge/AppVersion-6.0.4--rc.1-informational?style=flat-square) Helm chart for deploying the Pulse hub and optional Docker monitoring agent. diff --git a/docker-compose.yml b/docker-compose.yml index 75ccb59c8..e419d4cbe 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2,7 +2,7 @@ version: '3.8' services: pulse: - image: ${PULSE_IMAGE:-rcourtman/pulse:6.0.3} + image: ${PULSE_IMAGE:-rcourtman/pulse:6.0.4-rc.1} container_name: pulse restart: unless-stopped logging: diff --git a/docs/release-control/v6/internal/subsystems/deployment-installability.md b/docs/release-control/v6/internal/subsystems/deployment-installability.md index d2b87d28b..aef64fce7 100644 --- a/docs/release-control/v6/internal/subsystems/deployment-installability.md +++ b/docs/release-control/v6/internal/subsystems/deployment-installability.md @@ -804,12 +804,14 @@ TLS floor in the dynamic config. ## Current State -The active stable `v6.0.3` cut sets the repo-root `VERSION`, repo-root -`docker-compose.yml` image default, `scripts/install-docker.sh` fallback, and -Helm chart release metadata to the same `6.0.3` release version. This patch -release uses the stable hotfix path with `rollback_version=v6.0.2`, -`hotfix_exception=true`, a release-owner reason, and no fabricated -same-version RC tag. The initial GA promotion metadata remains +The active support prerelease `v6.0.4-rc.1` cut sets the repo-root `VERSION`, +repo-root `docker-compose.yml` image default, `scripts/install-docker.sh` +fallback, and Helm chart release metadata to the same `6.0.4-rc.1` release +version. This support prerelease uses the private Pro support image path with a +stable rollback reference `v6.0.3`, no `latest` movement, no stable semver tag +movement, no R2 manifest promotion, no broker download metadata promotion, and +no public `rcourtman/pulse` image publication. The initial GA promotion +metadata remains `promoted_from_tag=v6.0.0-rc.7`, `rollback_version=v5.1.35`, `ga_date=2026-07-04`, and `v5_eos_date=2026-10-02` for the first stable `6.0.0` cut. @@ -861,10 +863,11 @@ compose image default, standalone installer fallback constant, and packaged Helm metadata. A draft release workflow failure caused by stale image or chart pins is a release-packet blocker until the defaults, tests, and evidence record are refreshed from the new branch head. -For the active stable `v6.0.3` cut, the repo-root compose default and -`scripts/install-docker.sh` fallback must both pin `6.0.3`; the stable -promotion guard remains in force by rejecting leftover `-rc.` defaults when -the governed `VERSION` is a stable release. +For the active support prerelease `v6.0.4-rc.1` cut, the repo-root compose +default and `scripts/install-docker.sh` fallback must both pin `6.0.4-rc.1` +until the next governed stable cut moves them forward. The stable promotion +guard remains in force by rejecting leftover `-rc.` defaults when the governed +`VERSION` is a stable release. The RC7 packet refresh records `fc10de9b5477613316473267b72b05b6b2b7aaff` as the current validation-risk commit. That head includes the earlier Docker-default correction plus the follow-on capacity-forecast and Patrol diff --git a/scripts/install-docker.sh b/scripts/install-docker.sh index 3b3183764..3a7accd4e 100755 --- a/scripts/install-docker.sh +++ b/scripts/install-docker.sh @@ -6,7 +6,7 @@ set -euo pipefail SCRIPT_DIR="$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)" DOCKER_IMAGE_REPO="${DOCKER_IMAGE_REPO:-rcourtman/pulse}" -CANONICAL_DEFAULT_PULSE_VERSION="6.0.3" +CANONICAL_DEFAULT_PULSE_VERSION="6.0.4-rc.1" resolve_default_pulse_version() { if [ -n "${PULSE_IMAGE_VERSION:-}" ]; then diff --git a/scripts/installtests/build_release_assets_test.go b/scripts/installtests/build_release_assets_test.go index 0ca702ffd..869e3a8e0 100644 --- a/scripts/installtests/build_release_assets_test.go +++ b/scripts/installtests/build_release_assets_test.go @@ -107,6 +107,10 @@ func TestBuildReleaseUsesV6InstallScripts(t *testing.T) { } } +func shieldsBadgeMessage(value string) string { + return strings.ReplaceAll(value, "-", "--") +} + func TestCreateReleaseUploadsPowerShellInstaller(t *testing.T) { content, err := os.ReadFile(repoFile(".github", "workflows", "create-release.yml")) if err != nil { @@ -736,9 +740,10 @@ func TestDeploymentDefaultsPinVersionedImagesAndHelmDocsChecksum(t *testing.T) { t.Fatalf("read Helm README.md: %v", err) } chartReadme := string(chartReadmeBytes) + badgeVersion := shieldsBadgeMessage(version) chartReadmeRequired := []string{ - "![Version: " + version + "](https://img.shields.io/badge/Version-" + version + "-informational?style=flat-square)", - "![AppVersion: " + version + "](https://img.shields.io/badge/AppVersion-" + version + "-informational?style=flat-square)", + "![Version: " + version + "](https://img.shields.io/badge/Version-" + badgeVersion + "-informational?style=flat-square)", + "![AppVersion: " + version + "](https://img.shields.io/badge/AppVersion-" + badgeVersion + "-informational?style=flat-square)", } for _, needle := range chartReadmeRequired { if !strings.Contains(chartReadme, needle) { diff --git a/scripts/installtests/install_docker_sh_test.go b/scripts/installtests/install_docker_sh_test.go index da92773ea..fcd43152d 100644 --- a/scripts/installtests/install_docker_sh_test.go +++ b/scripts/installtests/install_docker_sh_test.go @@ -42,6 +42,17 @@ func previousStablePatchVersion(version string) (string, bool) { return fmt.Sprintf("%s.%s.%d", parts[0], parts[1], patch-1), true } +func previousStableForPrereleaseVersion(version string) (string, bool) { + if !isPrereleaseVersion(version) { + return "", false + } + base, _, ok := strings.Cut(version, "-") + if !ok { + return "", false + } + return previousStablePatchVersion(base) +} + func TestInstallDockerScriptUsesConfiguredImageRepoDefault(t *testing.T) { workDir := t.TempDir() version := currentReleaseVersion(t) @@ -172,6 +183,23 @@ func TestInstallDockerProofTracksStablePatchReleaseContract(t *testing.T) { ) } +func TestInstallDockerProofTracksSupportPrereleaseContract(t *testing.T) { + version := currentReleaseVersion(t) + if !isPrereleaseVersion(version) { + t.Skip("current release is stable") + } + previous, ok := previousStableForPrereleaseVersion(version) + if !ok { + t.Skip("current prerelease does not have a previous stable patch") + } + + assertFileContainsAllNormalized(t, repoFile("docs", "release-control", "v6", "internal", "subsystems", "deployment-installability.md"), + "The active support prerelease `v"+version+"` cut sets the repo-root `VERSION`, repo-root `docker-compose.yml` image default, `scripts/install-docker.sh` fallback, and Helm chart release metadata to the same `"+version+"` release version.", + "This support prerelease uses the private Pro support image path with a stable rollback reference `v"+previous+"`, no `latest` movement, no stable semver tag movement, no R2 manifest promotion, no broker download metadata promotion, and no public `rcourtman/pulse` image publication.", + "For the active support prerelease `v"+version+"` cut, the repo-root compose default and `scripts/install-docker.sh` fallback must both pin `"+version+"` until the next governed stable cut moves them forward.", + ) +} + func runInstallDockerScript(t *testing.T, workDir string, envVars ...string) { t.Helper()