feat(LinuxTentacleE2E): Phase 12.M.L.A.6 — install-tentacle.sh latest-version path E2E
Summary
Pins the documented operator one-liner default:
curl -fsSL .../install-tentacle.sh | sudo bash
No --version → VERSION defaults to "latest" → .sh uses a DIFFERENT URL form than --version X.Y.Z:
${DOWNLOAD_BASE}/latest/download/${BINARY_NAME}-${RID}.tar.gz
Single URL attempt, no v-prefix retry. This pattern matches GitHub's /releases/latest/download/ redirect.
Why critical
This is THE most-used install path in fleet bootstrap automation (cloud-init / Ansible / Salt). The tagged-version path is for reproducibility-sensitive operators; the LATEST path is "give me whatever's current".
Why not covered by J.M.L.A.2 (--version 1.6.0)
| Aspect |
--version 1.6.0 (J.M.L.A.2) |
--version latest (this PR) |
|---|---|---|
| URL pattern | /download/${VERSION}/ |
/latest/download/ |
| Retry logic | plain + v-prefix retry | single attempt |
| Optimistic APT/RPM | skipped | triggered (when NO_PKG_INSTALL!=1) |
Different code branch — needs its own pin.
Regressions this prevents
-
VERSIONdefault changes from"latest"→ fleet bootstrap suddenly requires--versionarg (deployment automation breaks) - Latest URL pattern changes (e.g.
/latest/download/→/releases/latest/) → air-gap mirror compatibility breaks -
VERSION=latestaccidentally falls through to the tagged-version URL branch → wrong URL pattern attempted
Assertions
| Assertion | Pins |
|---|---|
exitCode == 0 |
Latest path completes successfully |
stdout contains "/latest/download/squid-tentacle-"
|
Latest URL pattern unchanged |
stdout does NOT contain "retrying with 'v..."
|
No v-prefix retry on latest (single-attempt contract) |
stdout contains "Installation Complete"
|
Success banner is path-agnostic |
INSTALL_DIR/Squid.Tentacle exists |
Binary installed via latest URL |
/usr/local/bin/squid-tentacle symlink exists |
Post-extract steps ran same way as tagged-version paths |
Fidelity tier
.sh + real bash + real curl + real LocalReleaseMirror. Reuses J.M.L.A.2's fixture + tarball builder; only the version arg differs.
Test class is in LinuxTentacleHostStateCollection (serializes against upgrade + service-fixture tests).
Expected runtime: ~1-2s.
Test plan
-
Linux E2E workflow runs (manual workflow_dispatchafter merge) -
A1hDefault_LatestVersion_DownloadsViaLatestUrlPatternpasses within ~5s -
No regression on existing 25 Linux E2E tests