Repository navigation
release: draft-release pipeline, GPL source bundle and quick start - #65
Merged
Merged
Conversation
- release.yml runs on demand (or a tag), builds the application in the published devkit image, adds the source tarball, signs SHA256SUMS with the RELEASE_SIGNING_KEY secret and creates a draft release. Publishing, which creates the tag, stays manual. - scripts/gpl-source-bundle.sh: RustKVM tree + pinned SDK commit list, optionally Buildroot legal-info. - scripts/release-firmware.sh: signs local firmware checksums and attaches the images to the draft; refuses published releases. - docs/quickstart.md (flash and first boot), release notes draft for v0.1.0, release checklist and signing-key setup. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Rust-KVM
marked this pull request as ready for review
October 17, 2026 15:56
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.
Requested by 4c
Summary
Before: pushing a
vX.Y.Ztag built the application and published a release immediately. Nothing was signed, there was no source bundle, and no way to stage a release for review or attach firmware images.After: Actions → Release → Run workflow with a version builds the application in the public devkit image and creates a draft release. The draft carries the binary, a GPL source tarball and
SHA256SUMSwith a detached GPG signature. Firmware images built locally are signed and attached withscripts/release-firmware.sh. Publishing, which creates the tag, stays a manual click.How
.github/workflows/release.yml:workflow_dispatch(version input) or tag push; version must equalCargo.toml. Build job runs inghcr.io/rust-kvm/rustkvm-devkit:nightly-2026-06-14withscripts/build-app.sh, same as local. Draft job signsSHA256SUMSwith theRELEASE_SIGNING_KEYsecret (warns and stays unsigned if absent) and usesdocs/release-notes/vX.Y.Z.mdas the body when it exists.scripts/gpl-source-bundle.sh:git archiveof this commit plusSOURCES.mdlisting every pinned SDK project and commit;LEGAL_INFO=1adds Buildrootmake legal-info.scripts/release-firmware.sh: signsout/firmware/*.SHA256SUMS, uploads images to the draft, refuses a published release.docs/quickstart.md(flash and first boot for buyers),docs/release-notes/v0.1.0.mddraft,docs/firmware-release.md(release assets, checklist, signing-key setup; corrects the OTA statement, OTA is still PR OTA self-update from official releases with boot rollback #29).No private key or passphrase is in the repository; the signing key is a repository secret the maintainer sets once.
Testing
scripts/gpl-source-bundle.shrun locally: 2.1 MB tarball,SOURCES.mdlists all 14 SDK projects.bash -non the new scripts; the workflow is checked by actionlint in CI. The workflow itself only runs after merge (manual dispatch).No Rust changes.
cargo +nightly fmt --allcargo +nightly clippy --workspace --release --all-targets -- -D warningscargo +nightly test --workspaceFrontend touched:
trunk build --lockedand wasm32 clippy incrates/rkvm-web. Not applicable.Tested on an RK3588 device (describe below), or not applicable. Not applicable.
Checklist
#[allow(...)]suppressions and no newunwrap()/expect()in production pathsMissedTickBehavior::Delayrkvm-protoapp/tests/rpc_methods.txtupdatedAGENTS.mdupdated🤖 Generated with Claude Code