-
Notifications
You must be signed in to change notification settings - Fork 1
Document release workflow #41
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
WalkthroughAdds a new release workflow document at doc/release.md describing tagging, building aarch64 binaries with Zig, signing (GPG), timestamping (OTS), creating a GitHub release with assets, and updating the sysupdates repository. Changes
Sequence Diagram(s)sequenceDiagram
autonumber
actor Dev as Developer
participant Git as Git
participant Build as Zig Build
participant GPG as GPG
participant OTS as OpenTimestamps
participant GH as GitHub Release
participant SU as sysupdates repo
Dev->>Git: Create annotated tag vX.Y.Z
Dev->>Git: Push tags to origin
Dev->>Build: Init submodules, build aarch64-linux-musl (ReleaseSafe)
Build-->>Dev: ndg-vX.Y.Z-aarch64.tar.gz
Dev->>GPG: Sign tarball (.asc)
Dev->>OTS: Stamp tarball (.ots)
Dev->>GH: Create release for vX.Y.Z
Dev->>GH: Upload .tar.gz, .asc, .asc.ots
Dev->>SU: Update env/ndg version and SHA256
Note over SU,Dev: Commit to sysupdates
Estimated code review effort🎯 1 (Trivial) | ⏱️ ~3 minutes Assessment against linked issues
Poem
✨ Finishing Touches🧪 Generate unit tests
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
e0cecd5 to
420e60b
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (6)
doc/release.md (6)
7-9: Add language hints to fenced code blocks (markdownlint MD040).Mark shell snippets as bash to satisfy MD040 and improve readability.
-``` +```bash git tag -s vX.Y.Z -m "Release vX.Y.Z"-
+bash
git push origin --tags-``` +```bash git submodule update --init --recursive zig build -Dtarget=aarch64-linux-musl -Ddriver=fbev -Doptimize=ReleaseSafe -Dstrip cd zig-out/bin tar czf ndg-vX.Y.Z-aarch64.tar.gz nd ngui gpg --sign --armor --detach-sign ndg-vX.Y.Z-aarch64.tar.gz ots stamp ndg-vX.Y.Z-aarch64.tar.gz.ascAlso applies to: 15-17, 21-28 --- `15-17`: **Avoid pushing all local tags by default.** Prefer pushing just the intended tag to prevent accidentally publishing unrelated tags. ```diff -```bash -git push origin --tags -``` +```bash +git push origin vX.Y.Z +```
21-28: Generate and publish a SHA256 checksum to support Step 5.You reference a SHA256 in Step 5 but don’t show how to create it or distribute it.
```bash git submodule update --init --recursive zig build -Dtarget=aarch64-linux-musl -Ddriver=fbev -Doptimize=ReleaseSafe -Dstrip cd zig-out/bin tar czf ndg-vX.Y.Z-aarch64.tar.gz nd ngui +sha256sum ndg-vX.Y.Z-aarch64.tar.gz > ndg-vX.Y.Z-aarch64.tar.gz.sha256 gpg --sign --armor --detach-sign ndg-vX.Y.Z-aarch64.tar.gz ots stamp ndg-vX.Y.Z-aarch64.tar.gz.asc...
ndg-vX.Y.Z-aarch64.tar.gzndg-vX.Y.Z-aarch64.tar.gz.ascndg-vX.Y.Z-aarch64.tar.gz.asc.ots
+-ndg-vX.Y.Z-aarch64.tar.gz.sha256Note: on macOS, use `shasum -a 256 file > file.sha256`. Also applies to: 34-36 --- `24-26`: **Package under a versioned directory to avoid clutter on extract.** Extracting to the CWD drops `nd`/`ngui` directly. Package them inside a versioned folder. ```diff cd zig-out/bin -tar czf ndg-vX.Y.Z-aarch64.tar.gz nd ngui +mkdir -p package/ndg-vX.Y.Z-aarch64 +cp nd ngui package/ndg-vX.Y.Z-aarch64/ +tar czf ndg-vX.Y.Z-aarch64.tar.gz -C package ndg-vX.Y.Z-aarch64 gpg --sign --armor --detach-sign ndg-vX.Y.Z-aarch64.tar.gz
3-5: Add a brief prerequisites section.Call out required tools and access to reduce friction for releasers.
This document outlines the steps to create a new release for the project. Follow these steps carefully to ensure a smooth release process. +### Prerequisites + +- Zig installed (same version used in CI) +- GnuPG with the release signing key available +- OpenTimestamps client (`ots`) +- Access to create GitHub releases and to the `sysupdates` repository + ## Step 1: Tag release
11-12: Document an optional release-candidate flow.The linked issue mentions RCs. Add a short RC tagging example.
Replace `X.Y.Z` with the appropriate version number. +For a release candidate: + +```bash +git tag -s vX.Y.Z-rc.1 -m "Release candidate vX.Y.Z-rc.1" +git push origin vX.Y.Z-rc.1 +``` + ## Step 2: Push tags
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
doc/release.md(1 hunks)
🧰 Additional context used
🪛 markdownlint-cli2 (0.17.2)
doc/release.md
7-7: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
15-15: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
21-21: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: build
420e60b to
a1c8be0
Compare
Resolves #11.
Summary by CodeRabbit