mirror of
https://github.com/rcourtman/Pulse.git
synced 2026-09-10 02:25:56 +00:00
Prepare v6.4.0-rc.9 release
This commit is contained in:
@@ -2,9 +2,9 @@ apiVersion: v2
|
||||
name: pulse
|
||||
description: Helm chart for deploying the Pulse hub and optional Docker, Kubernetes, or OpenShift monitoring agent.
|
||||
type: application
|
||||
version: 6.4.0-rc.8
|
||||
appVersion: "6.4.0-rc.8"
|
||||
icon: https://raw.githubusercontent.com/rcourtman/Pulse/v6.4.0-rc.8/docs/images/pulse-logo.svg
|
||||
version: 6.4.0-rc.9
|
||||
appVersion: "6.4.0-rc.9"
|
||||
icon: https://raw.githubusercontent.com/rcourtman/Pulse/v6.4.0-rc.9/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.4.0-rc.8/docs/KUBERNETES.md
|
||||
url: https://github.com/rcourtman/Pulse/blob/v6.4.0-rc.9/docs/KUBERNETES.md
|
||||
- name: Support
|
||||
url: https://github.com/rcourtman/Pulse/discussions
|
||||
artifacthub.io/maintainers: |
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# pulse
|
||||
|
||||
  
|
||||
  
|
||||
|
||||
Helm chart for deploying the Pulse hub and optional Docker, Kubernetes, or OpenShift monitoring agent.
|
||||
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@ version: '3.8'
|
||||
|
||||
services:
|
||||
pulse:
|
||||
image: ${PULSE_IMAGE:-rcourtman/pulse:6.4.0-rc.8}
|
||||
image: ${PULSE_IMAGE:-rcourtman/pulse:6.4.0-rc.9}
|
||||
container_name: pulse
|
||||
restart: unless-stopped
|
||||
logging:
|
||||
|
||||
@@ -7,8 +7,8 @@ For historical v4 notes that previously lived in this repo, see:
|
||||
`docs/releases/RELEASE_NOTES_v4.md`
|
||||
|
||||
For the current v6 release candidate packet (the current v6 support release candidate packet), see:
|
||||
- `docs/releases/RELEASE_NOTES_v6.4.0-rc.8.md`
|
||||
- `docs/releases/V6_CHANGELOG_v6.4.0-rc.8.md`
|
||||
- `docs/releases/RELEASE_NOTES_v6.4.0-rc.9.md`
|
||||
- `docs/releases/V6_CHANGELOG_v6.4.0-rc.9.md`
|
||||
|
||||
For the current stable v6 packet, see:
|
||||
- `docs/releases/RELEASE_NOTES_v6.3.2.md`
|
||||
@@ -19,10 +19,12 @@ For the preceding stable v6 packet, see:
|
||||
- `docs/releases/V6_CHANGELOG_v6.3.1.md`
|
||||
|
||||
For the preceding v6.4 release candidate packet, see:
|
||||
- `docs/releases/RELEASE_NOTES_v6.4.0-rc.7.md`
|
||||
- `docs/releases/V6_CHANGELOG_v6.4.0-rc.7.md`
|
||||
- `docs/releases/RELEASE_NOTES_v6.4.0-rc.8.md`
|
||||
- `docs/releases/V6_CHANGELOG_v6.4.0-rc.8.md`
|
||||
|
||||
For earlier v6.4 release candidate packets, see:
|
||||
- `docs/releases/RELEASE_NOTES_v6.4.0-rc.7.md`
|
||||
- `docs/releases/V6_CHANGELOG_v6.4.0-rc.7.md`
|
||||
- `docs/releases/RELEASE_NOTES_v6.4.0-rc.6.md`
|
||||
- `docs/releases/V6_CHANGELOG_v6.4.0-rc.6.md`
|
||||
- `docs/releases/RELEASE_NOTES_v6.4.0-rc.5.md`
|
||||
|
||||
+6
-4
@@ -4,8 +4,8 @@ This guide covers practical upgrade steps for existing Pulse installs moving to
|
||||
|
||||
For the current v6 release candidate packet (the current v6 support release candidate packet), see:
|
||||
|
||||
- `docs/releases/RELEASE_NOTES_v6.4.0-rc.8.md`
|
||||
- `docs/releases/V6_CHANGELOG_v6.4.0-rc.8.md`
|
||||
- `docs/releases/RELEASE_NOTES_v6.4.0-rc.9.md`
|
||||
- `docs/releases/V6_CHANGELOG_v6.4.0-rc.9.md`
|
||||
|
||||
For the current stable v6 packet, see:
|
||||
|
||||
@@ -19,11 +19,13 @@ For the preceding stable v6 packet, see:
|
||||
|
||||
For the preceding v6.4 release candidate packet, see:
|
||||
|
||||
- `docs/releases/RELEASE_NOTES_v6.4.0-rc.7.md`
|
||||
- `docs/releases/V6_CHANGELOG_v6.4.0-rc.7.md`
|
||||
- `docs/releases/RELEASE_NOTES_v6.4.0-rc.8.md`
|
||||
- `docs/releases/V6_CHANGELOG_v6.4.0-rc.8.md`
|
||||
|
||||
For earlier v6.4 release candidate packets, see:
|
||||
|
||||
- `docs/releases/RELEASE_NOTES_v6.4.0-rc.7.md`
|
||||
- `docs/releases/V6_CHANGELOG_v6.4.0-rc.7.md`
|
||||
- `docs/releases/RELEASE_NOTES_v6.4.0-rc.6.md`
|
||||
- `docs/releases/V6_CHANGELOG_v6.4.0-rc.6.md`
|
||||
|
||||
|
||||
@@ -1811,12 +1811,13 @@ diagnostics. The same release workflow also executes the generated self-signed
|
||||
and custom-CA Windows installer commands through Windows PowerShell 5.1 before
|
||||
release assembly, so the first HTTPS fetch is release proof rather than a
|
||||
string-shape assertion.
|
||||
The active prerelease `v6.4.0-rc.8` cut sets the repo-root `VERSION`, repo-root
|
||||
The active prerelease `v6.4.0-rc.9` 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.4.0-rc.8` release version. It follows
|
||||
`v6.4.0-rc.7` on the published `v6.4.0` candidate line. That candidate was
|
||||
quarantined before activation, so `v6.4.0-rc.8` follows `v6.4.0-rc.6` as the
|
||||
next publicly activated candidate. This prerelease keeps
|
||||
Helm chart release metadata to the same `6.4.0-rc.9` release version. The
|
||||
`v6.4.0-rc.8` qualification attempt stopped before a public tag or GitHub
|
||||
release was created, while `v6.4.0-rc.7` remains an immutable failed candidate.
|
||||
Consequently `v6.4.0-rc.9` follows `v6.4.0-rc.6` as the next publicly activated
|
||||
candidate. This prerelease keeps
|
||||
`rollback_version=v6.3.2`, publishes a versioned public GitHub prerelease
|
||||
plus versioned Docker and Helm artifacts, and does not move stable/latest
|
||||
install pointers or stable semver aliases. The candidate makes the append-only
|
||||
@@ -1827,6 +1828,7 @@ keeps informational alert severity distinct across configuration, persistence,
|
||||
API responses, filters, email, ntfy, and mobile push presentation;
|
||||
adds rolling-window metric policy and predictive storage-capacity alerts;
|
||||
makes host SMART policy configurable without duplicating Proxmox disk risk;
|
||||
keeps empty Unraid storage slots neutral instead of degrading array health;
|
||||
converges infrastructure detail presentation; and strengthens independently
|
||||
verified Docker actions plus atomic deployment enrollment and credential
|
||||
persistence. The changes since `v6.4.0-rc.6` add the canonical `alert_fired`
|
||||
@@ -1849,10 +1851,25 @@ only after the release owner explicitly confirms that production credentials
|
||||
and certificate authorization are ready and a reviewed policy/code change
|
||||
restores it.
|
||||
|
||||
The preceding `v6.4.0-rc.8` qualification attempt used exact source SHA
|
||||
`bac7e5d9526d76a6b4e34738511b07609dda80ed`. Release run `33128595650`
|
||||
passed preparation, frontend bundle, Windows installer smoke, release smoke,
|
||||
private staging, immutable candidate assembly, and macOS signing and
|
||||
notarization, then failed the frontend gate because stale severity coverage
|
||||
treated the newly first-class `info` value as an unknown warning. Review also
|
||||
found that the overview presentation sent truly unknown severity strings to
|
||||
the informational palette instead of the contract's warning fallback. The run
|
||||
was cancelled before a public tag or GitHub release was created. Exact fix
|
||||
commit `fcf872fb5` gives `info` an explicit blue branch, fails unknown values
|
||||
safe to warning, adds canonical and coverage proof, and carries the corrected
|
||||
browser receipt. `v6.4.0-rc.9` fixes forward from that failed immutable
|
||||
qualification without moving stable install pointers or stable semver aliases
|
||||
from `v6.3.2`.
|
||||
|
||||
The preceding `v6.4.0-rc.7` publication attempt built and staged exact candidate
|
||||
artifacts from source SHA `595c369d85796f86855b4cf8335b9bb371d28462`,
|
||||
but the backend release gate failed before public activation. Its tag and
|
||||
versioned artifacts remain immutable, and `v6.4.0-rc.8` supersedes the failed
|
||||
versioned artifacts remain immutable, and `v6.4.0-rc.9` supersedes the failed
|
||||
candidate without moving stable install pointers or stable semver aliases from
|
||||
`v6.3.2`.
|
||||
|
||||
@@ -2313,8 +2330,8 @@ For the active stable `v6.1.2` cut, the repo-root compose default and
|
||||
`scripts/install-docker.sh` fallback must both pin `6.1.2` whenever the
|
||||
governed `VERSION` is that stable cut. The stable promotion guard remains in
|
||||
force and rejects leftover `-rc.` defaults.
|
||||
For the active prerelease `v6.4.0-rc.8` cut, the repo-root compose default and
|
||||
`scripts/install-docker.sh` fallback must both pin `6.4.0-rc.8` until the next
|
||||
For the active prerelease `v6.4.0-rc.9` cut, the repo-root compose default and
|
||||
`scripts/install-docker.sh` fallback must both pin `6.4.0-rc.9` until the next
|
||||
governed stable cut moves them forward. Each new release moves
|
||||
these two pins together with the repo-root `VERSION` and the Helm chart metadata
|
||||
in the same commit; a cut that leaves any of the four on a superseded value is a
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
# Pulse v6.4.0-rc.9 Release Notes
|
||||
|
||||
`v6.4.0-rc.9` strengthens alerting as an operational system. Histories survive restarts, alerts can be scheduled and routed more precisely, and new forecasting detects storage risk earlier.
|
||||
|
||||
## What's improved
|
||||
|
||||
- **Durable alert lifecycles** - Alert history and active state now rebuild from the event log after restarts, with persisted identities migrated automatically and false all-clear states prevented during hydration.
|
||||
- **Better notification control** - Alerts can be snoozed individually, maintenance can recur by scope, escalation repeats can target specific destinations, delivery routes can filter by severity, and informational events remain distinct from warnings.
|
||||
- **Earlier capacity warnings** - Rolling metric windows and predictive storage forecasts surface sustained pressure and likely exhaustion before a single threshold breach becomes an outage.
|
||||
- **More accurate host disk health** - SMART sector, media, endurance, spare, and CRC thresholds can be tuned per host, while empty Unraid slots remain neutral and Proxmox-linked agents avoid duplicate disk-risk alerts.
|
||||
- **External availability monitoring** - Dead-man checks can notify when an expected external signal stops arriving, with configuration and recovery state persisted.
|
||||
- **Clearer infrastructure details** - Resource drawers, Proxmox backup views, and alert timelines present more complete and consistent context across desktop and narrow layouts.
|
||||
- **Safer governed actions** - Docker action results now carry independently observed post-action state, while deployment enrollment and credential changes persist atomically.
|
||||
|
||||
## Before you upgrade
|
||||
|
||||
- This is a release candidate. Stable installations remain on v6.3.2 unless an operator explicitly selects this version.
|
||||
- Existing configurations remain valid. Alert identity and history migrations run automatically, with no manual data migration required.
|
||||
- Existing Pulse Mobile iOS build 12 and Android versionCode 9 remain compatible. The new `alert_fired` push uses the already-supported `view_alert` action and existing informational severity presentation, so no companion update is required for this candidate.
|
||||
- Windows Unified Agent binaries are checksum- and detached-signature-verified but are not Authenticode-signed, so Windows may show an Unknown Publisher warning.
|
||||
|
||||
## Known issues
|
||||
|
||||
- Windows Authenticode signing remains unavailable for this candidate. Use the published checksum and detached signature when verifying Windows agent downloads.
|
||||
@@ -0,0 +1,46 @@
|
||||
# Pulse v6.4.0-rc.9
|
||||
|
||||
_The `v6.4.0-rc.8` qualification attempt stopped before a public tag or GitHub release was created. This candidate therefore carries the complete customer-visible change set forward from `v6.4.0-rc.6`._
|
||||
|
||||
## Added
|
||||
|
||||
- Rolling-window metric evaluation supports sustained CPU and memory policies, including workload inheritance from host defaults.
|
||||
- Predictive storage-capacity alerts estimate exhaustion risk from retained usage history and recover when the forecast clears.
|
||||
- Per-alert snooze, recurring scoped maintenance, destination severity routing, repeatable escalation schedules, and external dead-man monitoring expand operator control over alert delivery.
|
||||
- Resolved host SMART policy covers health failure, sector counters, media errors, remaining life, NVMe spare, and CRC growth without creating duplicate Proxmox disk alerts.
|
||||
- Canonical `alert_fired` push events use the existing mobile `view_alert` navigation action.
|
||||
- Informational alerts now retain an explicit `info` severity through configuration, persistence, API responses, filtering, notification routing, and display.
|
||||
|
||||
## Changed
|
||||
|
||||
- The append-only event log is the authority for alert history and active lifecycle reconstruction, including restart recovery, acknowledgement, resolution, suppression, notification, and migration evidence.
|
||||
- Alert identities and persisted history migrate to canonical resource keys, while active state uses durable atomic snapshots and ordered recovery.
|
||||
- Escalation and delivery decisions are destination-specific, repeated holds are coalesced, and destination updates persist before the active runtime changes.
|
||||
- Resource detail drawers use shared information-card and detail-table primitives across infrastructure, Docker, storage, and Proxmox backup surfaces.
|
||||
- Docker lifecycle results distinguish command acceptance from independently observed post-action state, and deployment enrollment plus credential updates commit atomically.
|
||||
- Email, ntfy, and mobile push presentation preserve informational priority instead of elevating non-warning events to warning treatment.
|
||||
- Active-alert cards give informational severity an explicit blue presentation while preserving warning as the fail-safe for unknown values.
|
||||
|
||||
## Fixed
|
||||
|
||||
- Alert hydration no longer exposes a false all-clear state before persisted incidents are restored.
|
||||
- Restart recovery, history queries, and mock alert timelines preserve lifecycle order, observation time, and complete incident evidence.
|
||||
- Fresh rolling-window metric data remains authoritative, including when older samples or counter resets are present.
|
||||
- Offline mock hosts remain on the normal host-alert lifecycle instead of losing active incidents during refresh.
|
||||
- API token watcher updates remain ordered across successive persistence mutations.
|
||||
- Proxmox backup health, inventory refresh, offline fixtures, and drawer detail presentation retain complete current context.
|
||||
- Informational active-alert cards use the blue severity palette, while unknown severity values fail safe to warning presentation.
|
||||
- Empty Unraid storage slots no longer make an otherwise healthy array report a degraded state.
|
||||
|
||||
## Release Metadata
|
||||
|
||||
- Version: `v6.4.0-rc.9`
|
||||
- Previous qualification attempt: `v6.4.0-rc.8` (not published)
|
||||
- Previous candidate tag: `v6.4.0-rc.7`
|
||||
- Previous published candidate: `v6.4.0-rc.6`
|
||||
- Previous stable: `v6.3.2`
|
||||
- Rollback target: `v6.3.2`
|
||||
- Rollback command: `./scripts/install.sh --version v6.3.2`
|
||||
- Promotion path: exact-SHA single-build release candidate from `main`
|
||||
- Windows signing decision: prereleases publish checksum- and detached-signature-verified Windows agents without Authenticode while SignPath remains unavailable. Windows may show an Unknown Publisher warning.
|
||||
- Mobile decision: `existing-mobile-build-compatible`. Published iOS build 12 and Android versionCode 9 already route `action_type=view_alert`, accept severity as a string, and render informational severity, so no companion upload is required.
|
||||
@@ -4,8 +4,8 @@ This guide covers practical upgrade steps for existing Pulse installs moving to
|
||||
|
||||
For the current v6 release candidate packet (the current v6 support release candidate packet), see:
|
||||
|
||||
- `docs/releases/RELEASE_NOTES_v6.4.0-rc.8.md`
|
||||
- `docs/releases/V6_CHANGELOG_v6.4.0-rc.8.md`
|
||||
- `docs/releases/RELEASE_NOTES_v6.4.0-rc.9.md`
|
||||
- `docs/releases/V6_CHANGELOG_v6.4.0-rc.9.md`
|
||||
|
||||
For the current stable v6 packet, see:
|
||||
|
||||
@@ -19,11 +19,13 @@ For the preceding stable v6 packet, see:
|
||||
|
||||
For the preceding v6.4 release candidate packet, see:
|
||||
|
||||
- `docs/releases/RELEASE_NOTES_v6.4.0-rc.7.md`
|
||||
- `docs/releases/V6_CHANGELOG_v6.4.0-rc.7.md`
|
||||
- `docs/releases/RELEASE_NOTES_v6.4.0-rc.8.md`
|
||||
- `docs/releases/V6_CHANGELOG_v6.4.0-rc.8.md`
|
||||
|
||||
For earlier v6.4 release candidate packets, see:
|
||||
|
||||
- `docs/releases/RELEASE_NOTES_v6.4.0-rc.7.md`
|
||||
- `docs/releases/V6_CHANGELOG_v6.4.0-rc.7.md`
|
||||
- `docs/releases/RELEASE_NOTES_v6.4.0-rc.6.md`
|
||||
- `docs/releases/V6_CHANGELOG_v6.4.0-rc.6.md`
|
||||
|
||||
|
||||
@@ -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.4.0-rc.8"
|
||||
CANONICAL_DEFAULT_PULSE_VERSION="6.4.0-rc.9"
|
||||
|
||||
resolve_default_pulse_version() {
|
||||
if [ -n "${PULSE_IMAGE_VERSION:-}" ]; then
|
||||
|
||||
@@ -891,7 +891,7 @@ func TestCurrentPrereleasePacketTracksInstallMetadata(t *testing.T) {
|
||||
"Better notification control",
|
||||
"informational events remain distinct from warnings",
|
||||
"Earlier capacity warnings",
|
||||
"Host disk policies",
|
||||
"More accurate host disk health",
|
||||
"External availability monitoring",
|
||||
"Clearer infrastructure details",
|
||||
"Safer governed actions",
|
||||
@@ -901,12 +901,16 @@ func TestCurrentPrereleasePacketTracksInstallMetadata(t *testing.T) {
|
||||
"Unknown Publisher warning",
|
||||
)
|
||||
assertFileDoesNotContain(t, releaseNotesPath, "## Fixes")
|
||||
comparisonSummary := "This changelog describes the changes since `v" + comparisonVersion + "`"
|
||||
if version == "6.4.0-rc.9" {
|
||||
comparisonSummary = "The `v6.4.0-rc.8` qualification attempt stopped before a public tag or GitHub release was created."
|
||||
}
|
||||
assertFileContainsAllNormalized(t, changelogPath,
|
||||
"Version: `v"+version+"`",
|
||||
"Previous stable: `v"+previous+"`",
|
||||
"Rollback target: `v"+previous+"`",
|
||||
"Promotion path: exact-SHA single-build release candidate from `main`",
|
||||
"This changelog describes the changes since `v"+comparisonVersion+"`",
|
||||
comparisonSummary,
|
||||
"Rolling-window metric evaluation supports sustained CPU and memory policies",
|
||||
"Predictive storage-capacity alerts estimate exhaustion risk",
|
||||
"Per-alert snooze, recurring scoped maintenance, destination severity routing",
|
||||
@@ -3099,11 +3103,11 @@ func TestReleaseNotesGeneratorResolvesChannelSpecificComparisonRanges(t *testing
|
||||
commit("stable 6.3.2 hotfix")
|
||||
runGit("tag", "v6.3.2")
|
||||
runGit("checkout", "main")
|
||||
for rc := 1; rc <= 7; rc++ {
|
||||
for rc := 1; rc <= 8; rc++ {
|
||||
commit("release candidate " + strconv.Itoa(rc))
|
||||
runGit("tag", "v6.4.0-rc."+strconv.Itoa(rc))
|
||||
}
|
||||
commit("release candidate 8 changes")
|
||||
commit("release candidate 9 changes")
|
||||
|
||||
generator, err := filepath.Abs(repoFile("scripts", "generate-release-notes.sh"))
|
||||
if err != nil {
|
||||
@@ -3141,8 +3145,8 @@ func TestReleaseNotesGeneratorResolvesChannelSpecificComparisonRanges(t *testing
|
||||
return strings.TrimSpace(string(output))
|
||||
}
|
||||
|
||||
if got := resolve("6.4.0-rc.8"); got != "v6.4.0-rc.7" {
|
||||
t.Fatalf("RC comparison base = %q, want v6.4.0-rc.7", got)
|
||||
if got := resolve("6.4.0-rc.9"); got != "v6.4.0-rc.8" {
|
||||
t.Fatalf("RC comparison base = %q, want v6.4.0-rc.8", got)
|
||||
}
|
||||
if got := resolve("6.4.0-rc.1"); got != "v6.3.2" {
|
||||
t.Fatalf("RC1 comparison base = %q, want v6.3.2", got)
|
||||
@@ -3151,13 +3155,13 @@ func TestReleaseNotesGeneratorResolvesChannelSpecificComparisonRanges(t *testing
|
||||
t.Fatalf("GA comparison base = %q, want v6.3.2", got)
|
||||
}
|
||||
|
||||
cmd := exec.Command("bash", generator, "6.4.0-rc.8", "v6.4.0-rc.6")
|
||||
cmd := exec.Command("bash", generator, "6.4.0-rc.9", "v6.4.0-rc.7")
|
||||
cmd.Dir = repo
|
||||
output, err := cmd.CombinedOutput()
|
||||
if err == nil {
|
||||
t.Fatal("generator accepted a comparison tag older than the immediately preceding RC")
|
||||
}
|
||||
if !strings.Contains(string(output), "expected 'v6.4.0-rc.7'") {
|
||||
if !strings.Contains(string(output), "expected 'v6.4.0-rc.8'") {
|
||||
t.Fatalf("unexpected comparison-range rejection:\n%s", output)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -149,6 +149,7 @@ func TestPreviousStableForPrereleaseVersionCrossesMinorBoundaries(t *testing.T)
|
||||
{version: "6.4.0-rc.6", want: "6.3.2"},
|
||||
{version: "6.4.0-rc.7", want: "6.3.2"},
|
||||
{version: "6.4.0-rc.8", want: "6.3.2"},
|
||||
{version: "6.4.0-rc.9", want: "6.3.2"},
|
||||
}
|
||||
|
||||
for _, test := range tests {
|
||||
@@ -375,6 +376,9 @@ func TestInstallDockerProofTracksPrereleaseContract(t *testing.T) {
|
||||
} else {
|
||||
comparisonLine = "It follows `v" + comparisonVersion + "` on the published `v" + stableTarget + "` candidate line."
|
||||
}
|
||||
if version == "6.4.0-rc.9" {
|
||||
comparisonLine = "The `v6.4.0-rc.8` qualification attempt stopped before a public tag or GitHub release was created"
|
||||
}
|
||||
|
||||
assertFileContainsAllNormalized(t, repoFile("docs", "release-control", "v6", "internal", "subsystems", "deployment-installability.md"),
|
||||
"The active 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.",
|
||||
|
||||
Reference in New Issue
Block a user