2.7 KiB
Release Process
Prerequisites
- Git signing configured via SSH:
git config set gpg.format ssh git config set user.signingKey "key::$(rad self --ssh-key)" - Working
podmansetup (see Podman Setup below) - Required tools:
podman,rad,sha256sum
Prepare Release
-
Create release branch:
git checkout -b releases/<version> -
Bump version in
radicle-httpd/Cargo.toml -
Update lockfiles:
cargo build -
Generate changelog:
radicle-httpd/build/changelog >> radicle-httpd/CHANGELOG.md -
Edit changelog and remove irrelevant entries
-
Commit release:
git commit -m "httpd: Release <version>" -
Push for review:
git push rad HEAD:refs/patches
Review & Merge
- Wait for delegate approvals
- Merge patch into
master
Tag Release
Create and sign the release tag:
build/tag <version>
Publish the tag to Radicle:
git push rad --tags
Request delegate approval to make the tag canonical:
rad sync
git push -f self <username>/tags/releases/<version>:refs/tags/releases/<version>
Build Artifacts
Run the reproducible build (Linux x86_64 or macOS):
build/build
Note: Artifacts are written to
build/artifacts/. A tagged commit is required; versioning usesgit describe.
Upload Artifacts
SSH_LOGIN=<username> build/upload
Warning: Uploading immediately publishes the release.
Announce Release
-
Mark the previous release as resolved in Zulip
#Announcements -
Create a new announcement with the following template:
Topic:
radicle-httpd <version>Message:
# 👾 radicle-httpd <version> `radicle-httpd` <version> (<build-id>) is released. ## Installation Download binaries from: - https://files.radicle.dev/releases/radicle-httpd/<version> - https://radicle.dev/download ## Changelog <copy output from radicle-httpd/build/changelog> ## Checksums ``` <copy output from radicle-httpd/build/checksums> ``` :info: This release was built on <platform>. Build reproducibility across platforms is unsupported; checksums may differ if rebuilt elsewhere.
Notes
Important:
- macOS binaries are unsigned and not notarized; download via CLI only
- Build reproducibility across platforms is not guaranteed
Podman Setup
We use podman for reproducible builds across machines. It's preferred over Docker because it runs without a daemon and doesn't require root access.
On first run, you may need to configure UID/GID ranges:
sudo usermod --add-subuids 100000-165535 --add-subgids 100000-165535 $USER
podman system migrate