Files
Pulse/docs/RELEASE.md
rcourtman 4f3de7b8e3 docs: update documentation for v4.24.0 features
Updates documentation to reflect features implemented in recent commits:

**Security & API Enhancements:**
- Rate limit headers (X-RateLimit-Limit, X-RateLimit-Remaining, Retry-After)
- Audit logging for rollback actions and scheduler health
- Runtime logging configuration tracking

**Scheduler Health API:**
- Document new v4.24.0 endpoint features
- Per-instance circuit breaker status
- Dead-letter queue tracking
- Staleness metrics
- Enhanced response format with backward compatibility

**Version & Health Endpoints:**
- Updated /api/version response fields
- Optional health endpoint fields
- Deployment type and update availability

**Configuration & Installation:**
- HTTP config fetch via PULSE_INIT_CONFIG_URL
- Updated environment variable documentation
- Enhanced FAQ entries

**Monitoring & Operations:**
- Adaptive polling architecture documentation
- Rollback procedure references
- Production deployment guidance

All documentation changes align with implemented features from commits:
- 656ae0d25 (PMG test fix)
- dec85a4ef (PBS/PMG stubs + HTTP config)
- Earlier commits: scheduler health API, rollback, rate limiting
2025-10-20 16:08:10 +00:00

4.1 KiB

Pulse Release Checklist

Use this checklist when preparing and publishing a new Pulse release.

Pre-release

  • Ensure VERSION is set to 4.24.0 and matches the tag you plan to cut (format 4.x.y)
  • Confirm the Helm chart renders and installs locally:
    helm lint deploy/helm/pulse --strict
    helm template pulse deploy/helm/pulse \
      --set persistence.enabled=false \
      --set server.secretEnv.create=true \
      --set server.secretEnv.data.API_TOKENS=dummy-token
    
  • (Optional) Run the Kind-based integration test locally:
    kind create cluster
    helm upgrade --install pulse ./deploy/helm/pulse \
      --namespace pulse \
      --create-namespace \
      --set persistence.enabled=false \
      --set server.secretEnv.create=true \
      --set server.secretEnv.data.API_TOKENS=dummy-token \
      --wait
    kubectl -n pulse get pods
    kind delete cluster
    
  • Confirm adaptive polling, scheduler health API, rollback UI, logging runtime controls, and rate-limit header documentation are updated before tagging v4.24.0
  • Smoke-test updates rollback: apply a test update via Settings → System → Updates, trigger a rollback, and verify journal entries document the rollback event

Publishing

  1. Tag the release (git tag v4.x.y && git push origin v4.x.y) or draft a GitHub release.

  2. Package the Helm chart locally so you can preview the artifact (the GitHub workflow performs the same command, but local packaging provides an explicit hand-off):

    ./scripts/package-helm-chart.sh 4.x.y
    # Optional: push to GHCR after authenticating
    # helm registry login ghcr.io
    # ./scripts/package-helm-chart.sh 4.x.y --push
    

    The script emits dist/pulse-4.x.y.tgz, and scripts/build-release.sh copies the tarball into release/ alongside the binary archives. Uploading can be handled manually with the --push flag or delegated to the automated workflow described below.

    scripts/build-release.sh automatically runs the same packaging step (unless you export SKIP_HELM_PACKAGE=1) so release archives and chart tarballs are produced together.

  3. If you rely on automation, monitor the Publish Helm Chart workflow (triggered by the release) to ensure it finishes successfully. When running entirely locally, skip this step and verify the push command completed.

  4. (Optional) Sign release/checksums.txt by exporting SIGNING_KEY_ID=<gpg-key-id> before running scripts/build-release.sh, or re-run the signing step manually:

    SIGNING_KEY_ID=<gpg-key-id> ./scripts/build-release.sh
    # or sign later
    gpg --detach-sign --armor --local-user <gpg-key-id> release/checksums.txt
    

    Publish both checksums.txt and checksums.txt.asc so users can verify artifacts:

    gpg --verify checksums.txt.asc checksums.txt
    
  5. Update the release notes to include an upgrade/install snippet pointing at GHCR, for example:

    helm install pulse oci://ghcr.io/rcourtman/pulse-chart \
      --version 4.x.y \
      --namespace pulse \
      --create-namespace
    

    For v4.24.0 specifically, highlight these features in the release notes:

    • Adaptive polling (now GA)
    • Scheduler health API with rich instance metadata
    • Updates rollback workflow
    • Shared script library system (now GA)
    • X-RateLimit-* headers for all API responses
    • Runtime logging configuration (no restart required)
  6. Mention any chart-breaking changes (new values, migrations) in the release notes.

Post-release

  • Verify helm show chart oci://ghcr.io/rcourtman/pulse-chart --version 4.x.y shows the expected metadata (version, appVersion, icon)
  • Run helm install against a test cluster (Kind/k3s) using the published OCI artifact
  • Run curl -s http://<host>:7655/api/monitoring/scheduler/health | jq to ensure the scheduler health endpoint is live
  • Verify the Updates view reports rollback metadata and X-RateLimit-* headers appear in API responses
  • Announce the release with links to both the GitHub release and the Helm installation instructions (docs/KUBERNETES.md)
  • Verify signatures: gpg --verify checksums.txt.asc checksums.txt