Add post-deploy installer smoke canary
Merged
JE
3mo ago+78+78+01234567890123456789-3-3-0123456789
What
A post-deploy canary for the published installer, plus two installer-scoped comment fixes from the #568 incident review.
The install endpoint serves main, so merging a change to scripts/install.sh deploys it immediately. #558 shipped a sourcing guard that broke the documented curl … | bash path under set -u; #568 fixed it and added a bats regression test that gates pre-merge. Nothing verified the published installer post-merge — this closes that gap.
The canary (.github/workflows/installer-smoke.yml)
- Triggers: nightly schedule,
workflow_dispatch, and push tomaintouchingscripts/install.sh. - Endpoint: the canonical Quick Start command from the README, cache-busted with the commit SHA (
?sha=${GITHUB_SHA}) — raw.githubusercontent.com servesmax-age=300, so a push-triggered run could otherwise fetch the pre-push installer and falsely pass. The canonical endpoint preserves the query on redirect, making each commit's request cache-distinct. - Legs:
ubuntu-latest(modern bash) andmacos-latestvia stock/bin/bash, which asserts exactly Bash 3.2 through the same interpreter that runs the install — the coverage can't silently degrade if a future runner image changes/bin/bash. - Isolation: scratch
HOME+ explicitBASECAMP_BIN_DIRcontain the installer's writes (it edits shell config and installs the baseline skill even withBASECAMP_SKIP_SETUP=1/BASECAMP_SETUP_AGENT=none). Asserts the deterministic installed path, not ambient PATH. - Hygiene:
permissions: {},timeout-minutes: 10, concurrency group; no actions used, so nothing to pin. actionlint and zizmor clean.
Comment fixes
e2e/installer.bats: the piped-execution test's PATH comment said "Keep PATH empty"; it actually points at a binary-free tmpdir.scripts/install.sh: document why the guard's:-$0fallback is required (bash from stdin or-cleavesBASH_SOURCEunset, aborting underset -u) so a future cleanup doesn't re-break piping.
Verification
bats e2e/installer.bats— 12/12 pass.bin/cigreen.- Will
workflow_dispatchthe canary after merge to confirm both legs.
Summary by cubic
Adds a post-deploy smoke canary that installs the published CLI via the Quick Start on Linux and macOS. Also updates installer comments and sets explicit workflow concurrency behavior.
-
New Features
- Adds
.github/workflows/installer-smoke.yml: runs nightly, on demand, and whenscripts/install.shchanges;permissions: {},timeout-minutes: 10, concurrency group withcancel-in-progress: false. - Installs from
https://basecamp.com/install-cli?sha=${GITHUB_SHA}to bust CDN cache; verifies the binary at the deterministic install path. - Runs on
ubuntu-latestandmacos-latest; macOS uses/bin/bashand asserts Bash 3.2; uses scratchHOMEandBASECAMP_BIN_DIRto isolate writes.
- Adds
-
Bug Fixes
- Corrects PATH comment in
e2e/installer.batsto note a binary-free tmpdir. - Documents why
${BASH_SOURCE[0]:-$0}is required inscripts/install.shto keepcurl | bashworking withset -u.
- Corrects PATH comment in