diff --git a/doc/contribute-to-core-lightning/release-checklist.md b/doc/contribute-to-core-lightning/release-checklist.md index 5464805adc76..7fb9a7a01852 100644 --- a/doc/contribute-to-core-lightning/release-checklist.md +++ b/doc/contribute-to-core-lightning/release-checklist.md @@ -45,7 +45,7 @@ Here's a checklist for the release process. 1. Update CHANGELOG.md by changing rc(N-1) to rcN. Update the changelog list with information from newly merged PRs also. 2. Update the package versions: `uv run make update-versions NEW_VERSION=vrcN` 3. Add a PR with the rcN. -4. Tag it `git pull && git tag -s vrcN && git push --tags`. +4. Tag it `git pull && git tag -s vrcN && git push origin vrcN`. 5. Pushing the tag automatically starts the "Release 🚀" CI job, creating a draft pre-release and uploading reproducible builds with their `SHA256SUMS` files signed by the project key. 6. Set up the reproducible build environment by running the script `contrib/cl-repro.sh` to generate the necessary builder images. 7. Use the command `tools/build-release.sh bin-Fedora bin-Ubuntu sign` to locally rebuild the release and generate a personal signature file for the checksums. @@ -56,13 +56,14 @@ Here's a checklist for the release process. ## Tagging the Release -1. Update the CHANGELOG.md; remove -rcN in both places, update the date and add title and namer. -2. Update the contrib/pyln package versions: `uv run make update-versions NEW_VERSION=v` -3. Add a PR with that release. -4. Merge the PR, then: - - `git pull` - - `VERSION=23.05; git tag -a -s v$VERSION -m v$VERSION` - - `git push --tags` +1. Update CHANGELOG.md: remove -rcN in both places, update the date, and add the title and namer. +2. Update project-wide package versions: `uv run make update-versions NEW_VERSION=v` +3. Create a PR with above changes. +4. After the PR is merged, create and push the release tag: + - Run `git pull`. + - Set the current release version in your shell (e.g., if the current release is `v26.03`): `VERSION=26.03` + - Create a signed, annotated tag: `git tag -a -s v$VERSION -m "v$VERSION"` + - Push the tag: `git push origin v$VERSION` 5. Pushing the tag will trigger the CI pipeline, which will draft the pre-release and upload the build artifacts with project-signed checksums. 6. Prepare the build environments by executing the `contrib/cl-repro.sh` script. 7. Run `tools/build-release.sh bin-Fedora bin-Ubuntu sign` (with `--sudo` if you need root to run Docker) to: @@ -91,7 +92,7 @@ Here's a checklist for the release process. 1. Edit the GitHub draft and include the `SHA256SUMS-v.asc` file. 2. Publish the release as not a draft. 3. Announce the final release on core-lightning's release-chat channel on Discord & Telegram. -4. Send a mail to c-lightning and lightning-dev mailing lists, using the same wording as the Release Notes in GitHub. +4. Send a mail to c-lightning mailing list (`c-lightning@lists.ozlabs.org`), using the same wording as the Release Notes in GitHub. 5. Write release blog, post it on [Blockstream](https://blog.blockstream.com/) and announce the release on Twitter. ## Post-release @@ -106,11 +107,11 @@ Here's a checklist for the release process. 1. Create a new branch named `release-.`, where each new branch is based on the commit from the previous release tag. For example, `release-.1` is based on `release-`, `release-.2` is based on `release-.1`, and so on. 2. Cherry-pick all necessary commits for the hotfix into the new branch. 3. Add entries for changes and fixed issues in `CHANGELOG.md` under a new heading for `v.`. -4. Update the python package versions by running `uv run make update-versions NEW_VERSION=.` +4. Update project package versions by running `uv run make update-versions NEW_VERSION=.` 5. Create a new commit that includes the updates from `update-versions` and `CHANGELOG.md`. 6. Tag the release with `git pull && git tag -s v.`. You will be prompted to enter a tag message, ensure this is filled out. 7. Confirm that the tag is properly set up for builds by running `git describe`. -8. Trigger the pre-release by pushing the version tag with `git push --tags`; the CI will handle drafting the release and uploading the initial signed checksums. +8. Trigger the pre-release by pushing the version tag with `git push origin v.`; the CI will handle drafting the release and uploading the initial signed checksums. 9. Generate the required builder images by running `contrib/cl-repro.sh`. 10. Sign the release locally by running `tools/build-release.sh bin-Fedora bin-Ubuntu sign` which will sign the release contents and create `SHA256SUMS-v` and `SHA256SUMS-v.asc` in the release folder. 11. Validate that your local checksums `SHA256SUMS-v` match the Draft release's, then add your signatures to the draft release's signature `SHA256SUMS-v.asc` file. diff --git a/tools/build-release.sh b/tools/build-release.sh index d59a4a7efe0c..4789db662c01 100755 --- a/tools/build-release.sh +++ b/tools/build-release.sh @@ -223,7 +223,7 @@ fi if [ -z "${TARGETS##* sign *}" ]; then echo "Signing Release" cd release/ || exit - sha256sum clightning-"$VERSION"* > SHA256SUMS-"$VERSION" + sha256sum clightning-"$VERSION"-*.tar.* clightning-"$VERSION".zip > SHA256SUMS-"$VERSION" gpg -sb --armor --default-key "$(gpgconf --list-options gpg | awk -F: '$1 == "default-key" {print $10}' | tr -d '"')" -o SHA256SUMS-"$VERSION".asc SHA256SUMS-"$VERSION" cd .. echo "Release Signed"