diff --git a/VERSION b/VERSION index d6aef141d..037d97b2c 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -6.0.4-rc.1 +6.0.4-rc.2 diff --git a/deploy/helm/pulse/Chart.yaml b/deploy/helm/pulse/Chart.yaml index 87d045db9..0c08a5a84 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.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 +version: 6.0.4-rc.2 +appVersion: "6.0.4-rc.2" +icon: https://raw.githubusercontent.com/rcourtman/Pulse/v6.0.4-rc.2/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.4-rc.1/docs/KUBERNETES.md + url: https://github.com/rcourtman/Pulse/blob/v6.0.4-rc.2/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 fb7d430b7..4f49feb5c 100644 --- a/deploy/helm/pulse/README.md +++ b/deploy/helm/pulse/README.md @@ -1,6 +1,6 @@ # pulse -![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) +![Version: 6.0.4-rc.2](https://img.shields.io/badge/Version-6.0.4--rc.2-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 6.0.4-rc.2](https://img.shields.io/badge/AppVersion-6.0.4--rc.2-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 e419d4cbe..35bd3c26b 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.4-rc.1} + image: ${PULSE_IMAGE:-rcourtman/pulse:6.0.4-rc.2} 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 aef64fce7..bf2db90e4 100644 --- a/docs/release-control/v6/internal/subsystems/deployment-installability.md +++ b/docs/release-control/v6/internal/subsystems/deployment-installability.md @@ -804,9 +804,9 @@ TLS floor in the dynamic config. ## Current State -The active support prerelease `v6.0.4-rc.1` cut sets the repo-root `VERSION`, +The active support prerelease `v6.0.4-rc.2` 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 +fallback, and Helm chart release metadata to the same `6.0.4-rc.2` 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 @@ -863,8 +863,8 @@ 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 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` +For the active support prerelease `v6.0.4-rc.2` cut, the repo-root compose +default and `scripts/install-docker.sh` fallback must both pin `6.0.4-rc.2` 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. diff --git a/scripts/install-docker.sh b/scripts/install-docker.sh index 3a7accd4e..b3f1c7a86 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.4-rc.1" +CANONICAL_DEFAULT_PULSE_VERSION="6.0.4-rc.2" 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 869e3a8e0..09eff6b4f 100644 --- a/scripts/installtests/build_release_assets_test.go +++ b/scripts/installtests/build_release_assets_test.go @@ -734,6 +734,9 @@ func TestDeploymentDefaultsPinVersionedImagesAndHelmDocsChecksum(t *testing.T) { if previous, ok := previousStablePatchVersion(version); ok && strings.Contains(chart, "v"+previous) { t.Fatalf("Helm Chart.yaml must not retain the previous stable patch tag v%s:\n%s", previous, chart) } + if previous, ok := previousPrereleaseVersion(version); ok && strings.Contains(chart, "v"+previous) { + t.Fatalf("Helm Chart.yaml must not retain the previous prerelease tag v%s:\n%s", previous, chart) + } chartReadmeBytes, err := os.ReadFile(repoFile("deploy", "helm", "pulse", "README.md")) if err != nil { @@ -753,6 +756,9 @@ func TestDeploymentDefaultsPinVersionedImagesAndHelmDocsChecksum(t *testing.T) { if previous, ok := previousStablePatchVersion(version); ok && strings.Contains(chartReadme, previous) { t.Fatalf("Helm README.md must not retain the previous stable patch version %s:\n%s", previous, chartReadme) } + if previous, ok := previousPrereleaseVersion(version); ok && strings.Contains(chartReadme, previous) { + t.Fatalf("Helm README.md must not retain the previous prerelease version %s:\n%s", previous, chartReadme) + } helmPagesBytes, err := os.ReadFile(repoFile(".github", "workflows", "helm-pages.yml")) if err != nil { diff --git a/scripts/installtests/install_docker_sh_test.go b/scripts/installtests/install_docker_sh_test.go index fcd43152d..fc8860f66 100644 --- a/scripts/installtests/install_docker_sh_test.go +++ b/scripts/installtests/install_docker_sh_test.go @@ -53,6 +53,18 @@ func previousStableForPrereleaseVersion(version string) (string, bool) { return previousStablePatchVersion(base) } +func previousPrereleaseVersion(version string) (string, bool) { + base, suffix, ok := strings.Cut(version, "-rc.") + if !ok { + return "", false + } + rc, err := strconv.Atoi(suffix) + if err != nil || rc <= 1 { + return "", false + } + return fmt.Sprintf("%s-rc.%d", base, rc-1), true +} + func TestInstallDockerScriptUsesConfiguredImageRepoDefault(t *testing.T) { workDir := t.TempDir() version := currentReleaseVersion(t) @@ -136,6 +148,9 @@ func TestRepoDockerComposeDefaultPinsCurrentVersion(t *testing.T) { if previous, ok := previousStablePatchVersion(version); ok && strings.Contains(text, "rcourtman/pulse:"+previous) { t.Fatalf("repo docker-compose.yml must not retain the previous stable patch image tag %s:\n%s", previous, text) } + if previous, ok := previousPrereleaseVersion(version); ok && strings.Contains(text, "rcourtman/pulse:"+previous) { + t.Fatalf("repo docker-compose.yml must not retain the previous prerelease image tag %s:\n%s", previous, text) + } if strings.Contains(text, ":latest") { t.Fatalf("repo docker-compose.yml must not default to a floating latest tag:\n%s", text) } @@ -164,6 +179,9 @@ func TestInstallDockerScriptFallbackPinsCurrentVersion(t *testing.T) { if previous, ok := previousStablePatchVersion(version); ok && strings.Contains(text, `CANONICAL_DEFAULT_PULSE_VERSION="`+previous+`"`) { t.Fatalf("install-docker.sh fallback must not retain the previous stable patch version %s:\n%s", previous, text) } + if previous, ok := previousPrereleaseVersion(version); ok && strings.Contains(text, `CANONICAL_DEFAULT_PULSE_VERSION="`+previous+`"`) { + t.Fatalf("install-docker.sh fallback must not retain the previous prerelease version %s:\n%s", previous, text) + } } func TestInstallDockerProofTracksStablePatchReleaseContract(t *testing.T) { diff --git a/scripts/release_control/validate_artifact_release_line_test.py b/scripts/release_control/validate_artifact_release_line_test.py index 683c4f378..49ec3762d 100644 --- a/scripts/release_control/validate_artifact_release_line_test.py +++ b/scripts/release_control/validate_artifact_release_line_test.py @@ -63,10 +63,10 @@ class ValidateArtifactReleaseLineTest(unittest.TestCase): def test_prerelease_support_tag_does_not_require_stable_lineage(self) -> None: result = self.validate( - tag="v6.0.4-rc.1", - existing_tags={"v6.0.4-rc.1"}, + tag="v6.0.4-rc.2", + existing_tags={"v6.0.4-rc.2"}, commits={ - "v6.0.4-rc.1": "support-rc", + "v6.0.4-rc.2": "support-rc", "origin/pulse/v6-release": "branch", }, ancestors={("support-rc", "branch")},