banger/scripts
Thales Maciel 3c29af55a2
Add curl|bash installer + wire upload into publish script
scripts/install.sh is the one-command installer end users run as

  curl -fsSL https://releases.thaloco.com/banger/install.sh | bash

Design choices:

* Runs as the invoking user. All network work + signature verification
  happens unprivileged; sudo is only re-execed for the actual install
  step that writes to /usr/local and creates systemd units.
* Right before the sudo prompt, the script prints a plain-language
  summary of exactly what's about to happen — the file paths it will
  create and a one-line "why sudo" — so the user authorises a known
  scope rather than the whole pipeline. Detail link in the docs.
* Uses openssl (universally available) for signature verification, not
  cosign. cosign is needed only by the *signer*, never the verifier.
* No jq dependency. The latest_stable field is extracted from the
  manifest with grep+sed, since the manifest shape is well-defined and
  we control it.
* /dev/tty fallback for the confirmation prompt so it works through
  the curl|bash pipe.
* --yes for non-interactive CI use, --user for installing into
  ~/.local/bin without touching system paths, --version vX.Y.Z to pin.

publish-banger-release.sh now uploads install.sh to the bucket root
on every publish, so the curl URL is stable but the script logic
matches the latest verified release. It also runs a key-drift check:
if scripts/install.sh's embedded cosign public key differs from the
one in internal/updater/verify_signature.go, publishing aborts. The
two copies must stay in sync or one of them ends up rejecting every
release.

README's Quick start now leads with the installer one-liner and
documents the audit-first variant alongside it; building from source
moves below.

Smoke-tested end to end against the live bucket with --user mode:
manifest fetch → tarball download → cosign signature verify → hash
verify → extract → install. The installed binary reports v0.1.0 at
commit 6fdebd9, matching the published artifact.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-29 14:06:34 -03:00
..
install.sh Add curl|bash installer + wire upload into publish script 2026-04-29 14:06:34 -03:00
make-generic-kernel.sh supply chain: verify signatures and pins across image + kernel builds 2026-04-21 19:38:13 -03:00
make-golden-bundle.sh scripts: bundle-based golden image pipeline 2026-04-17 15:38:04 -03:00
publish-banger-release.sh Add curl|bash installer + wire upload into publish script 2026-04-29 14:06:34 -03:00
publish-golden-image.sh publish-golden-image: content-addressed tarball names 2026-04-18 15:26:57 -03:00
publish-kernel.sh Phase 5: kernel catalog publish flow + docs 2026-04-16 15:56:56 -03:00
repro-restart-bug.sh daemon: fix vm start (on a stopped VM) + regression coverage 2026-04-23 12:01:46 -03:00
smoke.sh smoke: smol VMs by default + JOBS auto-detects nproc 2026-04-27 17:36:17 -03:00