Align Docker defaults with v6.0.4-rc.1

Pin Docker install defaults and Helm metadata to the support prerelease version.
This commit is contained in:
rcourtman
2026-07-05 21:10:47 +01:00
parent bd7087f101
commit 6212eecf12
7 changed files with 55 additions and 19 deletions
+4 -4
View File
@@ -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: |
+1 -1
View File
@@ -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.
+1 -1
View File
@@ -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:
@@ -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
+1 -1
View File
@@ -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
@@ -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) {
@@ -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()