feat: versioning, release pipeline, and install-from-release#17
Merged
miguelgila merged 5 commits intomainfrom Feb 18, 2026
Merged
feat: versioning, release pipeline, and install-from-release#17miguelgila merged 5 commits intomainfrom
miguelgila merged 5 commits intomainfrom
Conversation
- Add build.rs to inject git hash and build date into binaries at compile time - Both binaries now report version: `reaper-runtime 0.1.0 (abc1234 2026-02-18)` - Add --version flag to containerd-shim-reaper-v2 (reaper-runtime already had it via clap) - Remove unused dummy `reaper` binary target and src/main.rs - Add GitHub Actions release workflow (.github/workflows/release.yml): triggered by v* tags, builds x86_64+aarch64 static musl binaries, packages tarballs, generates SHA-256 checksums, creates GitHub Release - Add --release flag to install-reaper.sh for downloading pre-built binaries from GitHub Releases with checksum verification - Add docs/RELEASING.md with step-by-step release process - Add docs/VERSIONING_PLAN.md tracking the design and implementation Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Shim now calls `reaper-runtime --version` at startup and compares with its own version string (includes git hash). On mismatch, all container creation is refused with FAILED_PRECONDITION — surfaces clearly in `kubectl describe pod`. Release workflow signs checksums-sha256.txt with cosign keyless (GitHub OIDC). Install script verifies the signature automatically when cosign is available. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Unit tests (10 new in shim): - version_string format and content - parse_runtime_version with/without prefix, whitespace, empty - check_version_compatibility: match, mismatch, nonexistent binary, failing binary Integration tests (4 new in tests/integration_version.rs): - Both binaries report matching versions from same build - Version output contains Cargo.toml version - Version output contains valid git hash and build date - Fake runtime script detected as version mismatch Also refactors version check logic into testable functions: parse_runtime_version() and check_version_compatibility(). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Every PR merge to main triggers a patch release automatically via auto-release.yml. Major/minor bumps are available via manual-release.yml from the Actions UI. Both use a RELEASE_TOKEN PAT to ensure tag pushes trigger the existing release.yml build/sign/publish workflow. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
cargo-tarpaulin's dependency native-tls v0.2.17 fails to compile with the latest Rust toolchain (missing Protocol::Tlsv13 match arm). Using taiki-e/install-action downloads a pre-built binary, avoiding the issue. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #17 +/- ##
==========================================
+ Coverage 85.44% 86.20% +0.76%
==========================================
Files 5 4 -1
Lines 158 174 +16
==========================================
+ Hits 135 150 +15
- Misses 23 24 +1 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
build.rsinjects git hash + build date into both binaries (reaper-runtime 0.1.0 (abc1234 2026-02-18))release.ymltriggers onv*tags — builds static musl binaries (x86_64 + aarch64), signs checksums with cosign, publishes GitHub Releaseauto-release.ymlbumps patch on every PR merge to main (skip withskip-releaselabel);manual-release.ymlsupports major/minor/patch from Actions UIinstall-reaper.sh --release v0.1.1downloads pre-built binaries with checksum + cosign verificationTest plan
cargo testpasses (unit tests + version integration tests)cargo clippypassesv0.1.1RELEASE_TOKENsecret is configured before merge🤖 Generated with Claude Code