Pulse/scripts
rcourtman 065ebdb276 Add install.sh end-to-end smoke gate against published release
Across v6 rc.1 → rc.5 the published install.sh asset was the agent
installer rather than the server installer, and the README's pinned
ed25519 key did not verify what the pipeline actually signed. The first
broke `bash install.sh --version` and the in-product Update button; the
second silently failed the README's secure-install ssh-keygen step.
Neither was caught by CI because every existing gate operated on the
local release/ build, the Docker image, or the helm chart — nothing
exercised the documented LXC/systemd install commands against the
published release URL.

scripts/validate-release.sh now catches asset-identity drift at build
time. This workflow catches the rest of the regression class — anything
that breaks the actual install at runtime — by running the documented
flow end-to-end against the published release.

What it does:
- Downloads install.sh, install.sh.sshsig, and the linux-amd64 tarball
  from releases/download/<tag>/.
- Extracts the README's pinned pulse-installer ed25519 key and runs the
  exact ssh-keygen -Y verify command from the README's secure-install
  snippet against the downloaded asset.
- Re-checks the server-installer banner, the --version) arg handler, and
  the absence of the agent banner — same pins as validate-release.sh, but
  now against what GitHub is actually serving (not just what was built
  locally).
- Boots jrei/systemd-debian:12 privileged, runs
  `bash install.sh --archive <tarball> --disable-auto-updates` from
  inside, waits for systemd pulse.service to become active, hits
  /api/health, and asserts /api/version reports the expected version.

--archive mode is used rather than --version so the workflow doesn't
depend on install.sh's self-refetch loop (the re-fetched bytes are the
ones we already validated). Auto-updates are disabled to avoid the timer
unit doing anything during the smoke run.

Triggers are workflow_dispatch + workflow_call only. Wire it into
create-release.yml after the next RC validates it green.

Pinned in build_release_assets_test.go so silent deletion or weakening
of any critical assertion (signature verify, banner check, /api/health
hit, version match) trips the test.
2026-05-12 11:25:46 +01:00
..
dev Fix settings security tab navigation 2025-10-11 23:29:47 +00:00
eval chore: add evaluation scripts, CI workflow and dev tooling 2026-01-30 19:00:48 +00:00
installtests Add install.sh end-to-end smoke gate against published release 2026-05-12 11:25:46 +01:00
lib Normalize hot-dev auth defaults 2026-04-22 16:28:52 +01:00
lint-fixer feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
release_control Wire PULSE_RELAY_ENABLED and PULSE_RELAY_SERVER as real env overrides 2026-05-12 11:18:31 +01:00
systemd feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
tests Skip runtime-defaults raw-node TS imports when integration node_modules absent 2026-05-12 01:14:41 +01:00
.go-version Update pinned Go toolchain to 1.25.9 2026-04-18 10:04:34 +01:00
audit-private-boundary.sh feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
backfill-release-assets.sh Add historical release asset backfill workflow 2026-04-22 17:25:58 +01:00
build-release.sh Ship the Pulse server install.sh as the GitHub Release asset 2026-05-12 10:24:28 +01:00
bundle.manifest feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
bundle.sh feat: add shared script library system and refactor docker-agent installer 2025-10-20 15:13:38 +00:00
check-bench-regression.sh feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
check-workflow-dispatch-inputs.py fix(release): restore release helper executable bits 2026-03-26 12:26:55 +00:00
clean-mock-alerts.sh Route mock alert cleanup through managed runtime 2026-03-24 15:49:29 +00:00
cleanup.sh feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
cloud-backup.sh feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
com.pulse.hot-dev.plist.template feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
conformance-smoke.sh feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
demo_public_browser_smoke.cjs Harden demo public browser smoke readiness 2026-04-12 17:07:50 +01:00
dev-check.sh Switch script-reference integrity test from rg to git grep for portable CI 2026-05-12 00:30:43 +01:00
dev-deploy-agent.sh Harden dev agent deploy SSH host verification 2026-04-22 11:41:50 +01:00
dev-launchd-setup.sh Prefer managed runtime controls in launchd helper 2026-03-24 16:01:14 +00:00
dev-launchd-wrapper.sh Supervise launchd dev runtime through hot-dev-bg 2026-03-24 15:39:55 +00:00
docker-build.sh security: complete Phase 1 sensor proxy hardening 2025-10-20 15:13:37 +00:00
ensure_test_assets.sh feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
exclusive-lock.mjs feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
generate-release-notes.sh Clarify paid Pulse Pro runtime install path 2026-05-06 21:52:50 +01:00
generate-self-hosted-feature-catalog.go Fix RC3 backend release blockers 2026-05-01 21:36:28 +01:00
generate-types.go Fix RC3 backend release blockers 2026-05-01 21:36:28 +01:00
hot-dev-bg.sh Normalize hot-dev auth defaults 2026-04-22 16:28:52 +01:00
hot-dev.sh Normalize hot-dev auth defaults 2026-04-22 16:28:52 +01:00
install-container-agent.sh feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
install-docker.sh Bump install pins to rc.5 and refresh test fixtures for Patrol readiness + Unraid host profile tokens 2026-05-11 18:02:52 +01:00
install-go-toolchain.sh Update pinned Go toolchain to 1.25.9 2026-04-18 10:04:34 +01:00
install-mcp.ps1 Stop install-mcp scripts from linking to GitHub blob/main docs 2026-05-11 23:58:45 +01:00
install-mcp.sh Stop install-mcp scripts from linking to GitHub blob/main docs 2026-05-11 23:58:45 +01:00
install.ps1 Harden unified agent runtime and installer 2026-04-23 23:04:18 +01:00
install.sh Harden root agent service defaults 2026-05-05 13:03:13 +01:00
package-helm-chart.sh release: prepare v4.25.0 2025-10-22 10:46:18 +00:00
patrol_e2e_matrix.sh feat(patrol): implement patrol findings, evaluation, and investigation logic 2026-01-31 16:23:08 +00:00
pulse-auto-update.sh Fix v6 demo release signing key deployment 2026-05-05 21:40:14 +01:00
release_asset_common.sh Fix release key helper module path 2026-05-04 09:44:41 +01:00
release_ldflags.sh Require signed unified agent release assets 2026-04-22 02:00:29 +01:00
release_update_key.go Fix v6 demo release signing key deployment 2026-05-05 21:40:14 +01:00
remerge-parallel.sh Align v6 release branch governance 2026-03-19 10:18:45 +00:00
render_installers.go Fix RC3 backend release blockers 2026-05-01 21:36:28 +01:00
repo-boundary-paid-surface.allowlist feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
run_cloud_public_signup_smoke.sh Add Pulse Cloud public signup smoke 2026-04-23 23:09:10 +01:00
run_demo_public_browser_smoke.sh Add public browser smoke proof to demo workflows 2026-04-11 13:50:00 +01:00
run_hosted_staging_smoke.sh Auto-select hosted staging tenant 2026-04-15 12:23:57 +01:00
session-handoff.sh feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
standalone.manifest feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
sync-production-config.sh chore: update dev scripts and mock configuration 2026-01-22 22:32:45 +00:00
sync_chart_release_metadata.py fix(deploy): pin docs links to release refs 2026-03-28 21:32:11 +00:00
telemetry_adoption_report.py Harden telemetry privacy reporting contract 2026-04-14 15:06:37 +01:00
test-vm-disk.sh Update Proxmox guest agent permissions docs and tooling (refs #548) 2025-10-14 10:21:52 +00:00
toggle-mock.sh Fix mock mode legacy sidecar drift 2026-05-05 15:12:31 +01:00
trigger-release-dry-run.sh fix(release): restore release helper executable bits 2026-03-26 12:26:55 +00:00
trigger-release.sh fix(release): restore release helper executable bits 2026-03-26 12:26:55 +00:00
validate-published-release.sh Publish signed release-packet SBOM assets 2026-04-22 16:49:29 +01:00
validate-release.sh Fix stale README signature key and guard against future drift 2026-05-12 10:30:42 +01:00