Skip to content

ci: pin runtime package versions and harden supply chain#11

Merged
Nyrest merged 7 commits into
Nyrest:mainfrom
AstrumBot:ci-pin-runtime-versions-supply-chain
May 13, 2026
Merged

ci: pin runtime package versions and harden supply chain#11
Nyrest merged 7 commits into
Nyrest:mainfrom
AstrumBot:ci-pin-runtime-versions-supply-chain

Conversation

@AstrumBot
Copy link
Copy Markdown
Contributor

Summary

  • pin fast-moving Bun, npm, uv, pip, and curl-downloaded runtime assets in checked-in manifests
  • verify SHA-256 digests for direct downloads instead of relying on mutable latest install scripts
  • publish one candidate image digest, verify that pushed digest, then promote/sign the same digest with SBOM + provenance

What changed

  • added versions/tool-versions.env for exact versions and checksums of curl-downloaded tools
  • added versions/bun-global-packages.txt, versions/npm-global-packages.txt, and versions/python-requirements.txt
  • replaced mutable curl | bash installs for Bun and uv with pinned release artifacts plus checksum verification
  • pinned yt-dlp, cloudflared, DuckDB, hadolint, websocat, oxipng, and AWS CLI downloads with checksum verification
  • updated verify-runtime.sh to assert pinned versions and Python package versions from the checked-in manifests
  • hardened the GitHub Actions workflow with commit-SHA-pinned actions, SBOM/provenance emission, cosign signing, and digest promotion instead of rebuilding before publish

Verification

  • git diff --check
  • bash -n verify-runtime.sh
  • shellcheck verify-runtime.sh
  • YAML parse for .github/workflows/docker-image.yml
  • independent reviewer subagent pass after fixes

Notes

  • apt package versions are still intentionally left to signed repository metadata so Ubuntu/vendor security updates can flow; the exact pinning in this PR targets the fast-moving ecosystems requested here (npm, bun, uv, pip, and curl-downloaded assets)

AstrumBot added 2 commits May 13, 2026 11:43
…hain

Resolve merge conflicts by combining supply-chain hardening with
flavor-based matrix build from upstream/main:

- Keep pinned version manifests (versions/) and SHA-verified curl downloads
- Adopt upstream's RUNTIME_FLAVOR build arg and common/full-only package split
- Merge flavor-aware runtime verification with version pinning checks
- Update workflow: matrix build with SHA-pinned actions, build-push-verify-promote pattern
- Add data science packages and @mermaid-js/mermaid-cli from upstream
Comment thread Dockerfile
# Apt package versions are intentionally left to signed repository metadata so Ubuntu and vendor security
# updates can flow, while the third-party NodeSource/GitHub CLI trust roots are still constrained via
# dedicated keyrings above.
RUN set -eux; \
Comment thread Dockerfile
# Apt package versions are intentionally left to signed repository metadata so Ubuntu and vendor security
# updates can flow, while the third-party NodeSource/GitHub CLI trust roots are still constrained via
# dedicated keyrings above.
RUN set -eux; \
Comment thread Dockerfile
&& curl -A "Mozilla/5.0" -fsSL -o /tmp/oxipng.deb "https://github.com/oxipng/oxipng/releases/download/v${OXIPNG_VERSION}/oxipng_${OXIPNG_VERSION}-1_$(dpkg --print-architecture).deb" \
&& dpkg -i /tmp/oxipng.deb \
&& rm -f /tmp/cloudflared.deb /tmp/oxipng.deb
RUN set -eux; \
Comment thread Dockerfile
&& ln -sf "${PIPBIN}" /usr/local/bin/pip3 \
&& ln -sf /usr/local/bin/pip3 /usr/local/bin/pip \
&& uv cache clean
RUN set -eux; \
AstrumBot and others added 5 commits May 13, 2026 12:20
- uv --version outputs a hash+date suffix; grep -Fx fails because -x
  requires exact line match. Changed to grep -F (substring match) like
  the other tool version checks in the Dockerfile.
- PYTHON_VERSION=3.14 did not match the upstream Python 3.13 baseline.
@Nyrest Nyrest merged commit 567f588 into Nyrest:main May 13, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants