Skip to content

ADR: source GitHub CLI immutably for MicroVM images - #123

Closed
gregario wants to merge 1 commit into
yc-software:mainfrom
gregario:docs/microvm-gh-cli-source
Closed

ADR: source GitHub CLI immutably for MicroVM images#123
gregario wants to merge 1 commit into
yc-software:mainfrom
gregario:docs/microvm-gh-cli-source

Conversation

@gregario

@gregario gregario commented Aug 2, 2026

Copy link
Copy Markdown
Contributor

Adds a short proposed ADR for the MicroVM GitHub CLI dependency.

It follows the build failure in #122 and asks for alignment before implementation: use versioned GitHub release artifacts with architecture-specific SHA-256 checksums rather than a versioned RPM from a rolling repository.

This PR intentionally adds only the ADR; it does not change production code.


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is disabled.

@rajpratham1 rajpratham1 left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a well-written ADR that clearly justifies moving from a mutable package repository to immutable, checksum-verified release artifacts to improve build reproducibility. There are no blocking issues.

@16francej 16francej added adr Text proposal in adrs/ per CONTRIBUTING adr-looks-generated ADR appears AI-expanded, against guidelines enhancement New feature or request labels Aug 4, 2026
@edbror

edbror commented Aug 28, 2026

Copy link
Copy Markdown

Supporting data point for this ADR: the failure it addresses recurred today on CLI 0.1.5.

The bump from #163 (gh-2.96.0-1gh-2.97.0-1) has itself expired — cli.github.com's RPM repo now serves only gh-2.98.0-1, so a fresh qm infra build-image fails with No package matches 'gh-2.97.0-1'. Details in #122 (comment).

That makes three versions in the sequence 2.96.0 → 2.97.0 → 2.98.0, each valid only until the next gh release. It supports the framing in this ADR: the problem is not the specific version but sourcing from a rolling repository that retains a single build, so every pin has a bounded lifetime and bumping resets the timer rather than resolving it.

Two observations that may be worth folding in:

  1. The failure is undiagnosable on AWS. Lambda MicroVM image builds report only The container image build failed. and create no CloudWatch log streams, so there is nothing to inspect in the account. I only identified the cause by rebuilding the generated Dockerfile locally against the pinned base image. That raises the cost of each recurrence well above a normal broken build — the operator's visible symptom is a stalled deploy with no error.

  2. The proposed approach is already the local idiom. awscli and litestream are installed a few lines below in the same Dockerfile via versioned release artifacts with SHA-256 checksums and an arch case statement. Applying the same pattern to gh would make that file internally consistent as well as immutable.

@16francej

Copy link
Copy Markdown
Contributor

Thanks for the ADR. This landed in #717 (immutable GitHub CLI install for the MicroVM image, versioned release artifacts with checksums instead of the RPM pin). Closing in its favor.

@16francej 16francej closed this Sep 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

adr Text proposal in adrs/ per CONTRIBUTING adr-looks-generated ADR appears AI-expanded, against guidelines enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants