Skip to content

Commit 1f75141

Browse files
doc: Update instructions for CI workflow Release πŸš€
Changelog-None.
1 parent e34eb03 commit 1f75141

File tree

1 file changed

+42
-40
lines changed

1 file changed

+42
-40
lines changed

β€Ždoc/contribute-to-core-lightning/release-checklist.md

Lines changed: 42 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -31,29 +31,31 @@ Here's a checklist for the release process.
3131

3232
1. Merge the above PR.
3333
2. Tag it `git pull && git tag -s v<VERSION>rc1`. Note that you should get a prompt to give this tag a 'message'. Make sure you fill this in.
34-
3. Confirm that the tag will show up for builds with `git describe`. We don't push it to GitHub yet, just in case the following steps fail, and more fixes are required!
35-
4. Run the script `contrib/cl-repro.sh` for [Builder image setup](https://docs.corelightning.org/docs/repro#builder-image-setup). This will create the required builder images `cl-repro-<codename>` for the next step.
36-
5. Sign the release locally by running `tools/build-release.sh sign` which will sign the release contents and create SHA256SUMS and SHA256SUMS.asc in the release folder.
37-
6. Push the tag to remote `git push --tags` (pushing the tag will kickoff the "Release πŸš€" CI action which builds the release targets and a draft release).
38-
7. Compare your release/`c-lightning-<release tag>`.zip on GitHub.
39-
8. Check the generated draft `v<VERSION>rc1` release on Github and check `Set as a pre-release` option. Add the SHA256SUMS.asc from your local release folder to newly drafted release, replacing it.
40-
9. Announce rc1 release on core-lightning's release-chat channel on Discord & Telegram.
41-
10. Use `devtools/credit --verbose v<PREVIOUS-VERSION>` to get commits, days and contributors data for release note.
42-
11. Prepare release notes draft including information from above step, and share with the team for editing.
43-
12. Upgrade your personal nodes to the rc1, to help testing.
44-
13. Github action `Publish Python 🐍 distributions πŸ“¦ to PyPI and TestPyPI` uploads the pyln modules on test PyPI server. Make sure that the action has been triggered with RC tag and that the modules have been published on `https://test.pypi.org/project/pyln-*/#history`.
45-
14. Docker image publishing is handled by the GitHub action `Build and push multi-platform docker images`. Ensure that this action is triggered and that the RC image has been successfully uploaded to Docker Hub after the action completes. Alternatively, you can publish Docker images by running the `tools/build-release.sh docker` script. The GitHub action takes approximately 3-4 hours, while the script takes about 6-7 hours. It is highly recommended to test your Docker setup if you haven't done so before. Prior to building docker images by `tools/build-release.sh` script, ensure that `multiarch/qemu-user-static` setup is working on your system as described [here](https://docs.corelightning.org/docs/docker-images#setting-up-multiarchqemu-user-static).
34+
3. Confirm that the tag will show up for builds with `git describe`. We don't push it to GitHub yet, just in case the following steps fail, and more fixes are required!
35+
4. Run `contrib/cl-repro.sh` to generate the required `cl-repro-<codename>` builder images for the reproducible build environment.
36+
5. Execute `tools/build-release.sh bin-Ubuntu sign` to locally reproduce the release, generating a matching `SHA256SUMS-v<VERSION>` file and signing it with your GPG key.
37+
6. Push the tag to trigger the "Release πŸš€" CI action, which drafts a new `v<VERSION>rc1` pre-release on GitHub and uploads reproducible builds alongside the `SHA256SUMS-v<VERSION>` file and its signature from the `[email protected]` key.
38+
7. Verify your local `SHA256SUMS-v<VERSION>` file matches the one in the draft release, then append your local signatures to the release's `SHA256SUMS-v<VERSION>.asc` file to attest to the build's integrity.
39+
8. Announce rc1 release on core-lightning's release-chat channel on Discord & Telegram.
40+
9. Use `devtools/credit --verbose v<PREVIOUS-VERSION>` to get commits, days and contributors data for release note.
41+
10. Prepare release notes draft including information from above step, and share with the team for editing.
42+
11. Upgrade your personal nodes to the rc1, to help testing.
43+
12. Github action `Publish Python 🐍 distributions πŸ“¦ to PyPI and TestPyPI` uploads the pyln modules on test PyPI server. Make sure that the action has been triggered with RC tag and that the modules have been published on `https://test.pypi.org/project/pyln-*/#history`.
44+
13. Docker image publishing is handled by the GitHub action `Build and push multi-platform docker images`. Ensure that this action is triggered and that the RC image has been successfully uploaded to Docker Hub after the action completes. Alternatively, you can publish Docker images by running the `tools/build-release.sh docker` script. The GitHub action takes approximately 3-4 hours, while the script takes about 6-7 hours. It is highly recommended to test your Docker setup if you haven't done so before. Prior to building docker images by `tools/build-release.sh` script, ensure that `multiarch/qemu-user-static` setup is working on your system as described [here](https://docs.corelightning.org/docs/docker-images#setting-up-multiarchqemu-user-static).
4645

4746
## Releasing -rc2, ..., -rcN
4847

4948
1. Update CHANGELOG.md by changing rc(N-1) to rcN. Update the changelog list with information from newly merged PRs also.
5049
2. Update the package versions: `uv run make update-versions NEW_VERSION=v<VERSION>rcN`
5150
3. Add a PR with the rcN.
52-
4. Tag it `git pull && git tag -s v<VERSION>rcN && git push --tags`
53-
5. Draft a new `v<VERSION>rcN` pre-release on Github, upload reproducible builds, `SHA256SUMS-v<VERSION>` and `SHA256SUMS-v<VERSION>.asc`.
54-
5. Announce tagged rc release on core-lightning's release-chat channel on Discord & Telegram.
55-
6. Upgrade your personal nodes to the rcN.
56-
7. Confirm that Github actions for PyPI and Docker publishing are working as expected.
51+
4. Tag it `git pull && git tag -s v<VERSION>rcN && git push --tags`.
52+
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.
53+
6. Set up the reproducible build environment by running the script `contrib/cl-repro.sh` to generate the necessary builder images.
54+
7. Use the command `tools/build-release.sh bin-Ubuntu sign` to locally rebuild the release and generate a personal signature file for the checksums.
55+
8. After confirming the local and pre-release `SHA256SUMS-v<VERSION>` files match, append your signatures to the pre-release's `SHA256SUMS-v<VERSION>.asc` file to formally attest to the build's validity.
56+
9. Announce tagged rc release on core-lightning's release-chat channel on Discord & Telegram.
57+
10. Upgrade your personal nodes to the rcN.
58+
11. Confirm that Github actions for PyPI and Docker publishing are working as expected.
5759

5860
## Tagging the Release
5961

@@ -64,28 +66,29 @@ Here's a checklist for the release process.
6466
- `git pull`
6567
- `VERSION=23.05; git tag -a -s v$VERSION -m v$VERSION`
6668
- `git push --tags`
67-
5. Run `tools/build-release.sh` (with `--sudo` if you need root to run Docker) to:
69+
5. Pushing the tag will trigger the CI pipeline, which will draft the pre-release and upload the build artifacts with project-signed checksums.
70+
6. Prepare the build environments by executing the `contrib/cl-repro.sh` script.
71+
7. Run `tools/build-release.sh bin-Ubuntu sign` (with `--sudo` if you need root to run Docker) to:
6872
- Create reproducible zipfile
6973
- Build non-reproducible Fedora image
7074
- Build reproducible Ubuntu-v20.04, Ubuntu-v22.04 and Ubuntu-v24.04 images. Follow [link](https://docs.corelightning.org/docs/repro#building-using-the-builder-image) for manually Building Ubuntu Images.
7175
- Build Docker images for amd64 and arm64v8. Follow [link](https://docs.corelightning.org/docs/docker-images) for more details on Docker publishing.
7276
- Create and sign checksums. Follow [link](https://docs.corelightning.org/docs/repro#co-signing-the-release-manifest) for manually signing the release.
73-
6. If you used `--sudo`, the tarballs may be owned by root, so revert ownership if necessary:
77+
8. If you used `--sudo`, the tarballs may be owned by root, so revert ownership if necessary:
7478
`sudo chown ${USER}:${USER} *${VERSION}*`
75-
7. Upload the resulting files to github and save as a draft.
76-
(<https://github.com/ElementsProject/lightning/releases/>)
77-
8. Send `SHA256SUMS-v<VERSION>` & `SHA256SUMS-v<VERSION>.asc` files to the rest of the team to check and sign the release.
78-
9. Team members can verify the release with the help of `build-release.sh`:
79-
1. Copy the release captain's `SHA256SUMS-v<VERSION>` and `SHA256SUMS-v<VERSION>.asc` into the root folder (`lightning`).
80-
3. Run `tools/build-release.sh --verify`. It will create reproducible images, verify checksums and sign.
81-
4. Send your signatures from `release/SHA256SUMS-v<VERSION>.asc` to release captain.
82-
5. Or follow [link](https://docs.corelightning.org/docs/repro#verifying-a-reproducible-build) for manual verification instructions.
83-
10. Append signatures shared by the team into the `SHA256SUMS-v<VERSION>.asc` file, verify with `gpg --verify SHA256SUMS-v<VERSION>.asc` and include the file in the draft release.
84-
11. The GitHub action `Publish Python 🐍 distributions πŸ“¦ to PyPI and TestPyPI` should upload the pyln modules to pypi.org. However, this can also be done manually by running `uv run make pyln-release`. This process requires keys for each of the `pyln-client`, `pyln-proto`, and `pyln-testing` modules to be accessible to uv. You can set the key as an environment variable and build and publish each pyln release independently:
79+
9. Verify the checksums match the pre-release `SHA256SUMS-v<VERSION>`, then append your signatures to the official signature `SHA256SUMS-v<VERSION>.asc` file to confirm the build's integrity.
80+
10. Send `SHA256SUMS-v<VERSION>` & `SHA256SUMS-v<VERSION>.asc` files to the rest of the team to check and sign the release.
81+
11. Team members can verify the release with the help of `build-release.sh`:
82+
- Copy the release captain's `SHA256SUMS-v<VERSION>` and `SHA256SUMS-v<VERSION>.asc` into the root folder (`lightning`).
83+
- Run `tools/build-release.sh --verify`. It will create reproducible images, verify checksums and sign.
84+
- Send your signatures from `release/SHA256SUMS-v<VERSION>.asc` to release captain.
85+
- Or follow [link](https://docs.corelightning.org/docs/repro#verifying-a-reproducible-build) for manual verification instructions.
86+
12. Append signatures shared by the team into the `SHA256SUMS-v<VERSION>.asc` file, verify with `gpg --verify SHA256SUMS-v<VERSION>.asc` and include the file in the draft release.
87+
13. The GitHub action `Publish Python 🐍 distributions πŸ“¦ to PyPI and TestPyPI` should upload the pyln modules to pypi.org. However, this can also be done manually by running `uv run make pyln-release`. This process requires keys for each of the `pyln-client`, `pyln-proto`, and `pyln-testing` modules to be accessible to uv. You can set the key as an environment variable and build and publish each pyln release independently:
8588
- `export UV_PUBLISH_TOKEN=<pyln-client token>`
8689
- `uv run make pyln-release-client`
8790
- ... repeat for each pyln package with the appropriate token.
88-
12. Publish multi-arch Docker images (`elementsproject/lightningd:v${VERSION}` and `elementsproject/lightningd:latest`) to Docker Hub either using the GitHub action `Build and push multi-platform docker images` or by running the `tools/build-release.sh docker` script. Prior to building docker images by `tools/build-release.sh` script, ensure that `multiarch/qemu-user-static` setup is working on your system as described [here](https://docs.corelightning.org/docs/docker-images#setting-up-multiarchqemu-user-static).
91+
14. Publish multi-arch Docker images (`elementsproject/lightningd:v${VERSION}` and `elementsproject/lightningd:latest`) to Docker Hub either using the GitHub action `Build and push multi-platform docker images` or by running the `tools/build-release.sh docker` script. Prior to building docker images by `tools/build-release.sh` script, ensure that `multiarch/qemu-user-static` setup is working on your system as described [here](https://docs.corelightning.org/docs/docker-images#setting-up-multiarchqemu-user-static).
8992

9093

9194
## Performing the Release
@@ -112,13 +115,12 @@ Here's a checklist for the release process.
112115
5. Create a new commit that includes the updates from `update-versions` and `CHANGELOG.md`.
113116
6. Tag the release with `git pull && git tag -s v<VERSION>.<POINT_VERSION>`. You will be prompted to enter a tag message, ensure this is filled out.
114117
7. Confirm that the tag is properly set up for builds by running `git describe`.
115-
8. Push the tag to the remote repository `git push --tags`.
116-
9. Create a new release draft for `v<VERSION>.<POINT_VERSION>` on GitHub, ensuring to check the `Set as a pre-release` option.
117-
10. Execute the script contrib/cl-repro.sh for the [Builder image setup](https://docs.corelightning.org/docs/repro#builder-image-setup). This will generate the builder images `cl-repro-<codename>` needed for the next step.
118-
11. Run the following script to prepare the required builds `tools/build-release.sh bin-Fedora bin-Ubuntu sign`.
119-
12. Upload the reproducible builds along with `SHA256SUMS-v<VERSION>` and `SHA256SUMS-v<VERSION>.asc` files from the release folder to the newly drafted release.
120-
13. Share the `SHA256SUMS-v<VERSION>` and `SHA256SUMS-v<VERSION>.asc` files with the team for verification and signing.
121-
14. Append the signatures received from the team to the `SHA256SUMS-v<VERSION>.asc` file. Verify the file using `gpg --verify SHA256SUMS-v<VERSION>.asc`. Then re-upload the file.
122-
15. Finalize and publish the release (change it from draft to public).
123-
16. Ensure that the GitHub Actions for `Publish Python 🐍 distributions πŸ“¦ to PyPI and TestPyPI` and `Build and push multi-platform docker images` are functioning correctly. Check that the `PyPI` modules published on `https://pypi.org/project/pyln-*` and that the Docker image has been uploaded to Docker Hub.
124-
17. Announce the hotfix release in the core-lightning release-chat channel on Discord and on Telegram.
118+
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.
119+
9. Generate the required builder images by running `contrib/cl-repro.sh`.
120+
10. Sign the release locally by running `tools/build-release.sh bin-Ubuntu sign` which will sign the release contents and create `SHA256SUMS-v<VERSION>` and `SHA256SUMS-v<VERSION>.asc` in the release folder.
121+
11. Validate that your local checksums `SHA256SUMS-v<VERSION>` match the Draft release's, then add your signatures to the draft release's signature `SHA256SUMS-v<VERSION>.asc` file.
122+
12. Share the `SHA256SUMS-v<VERSION>` and `SHA256SUMS-v<VERSION>.asc` files with the team for verification and signing.
123+
13. Append the signatures received from the team to the `SHA256SUMS-v<VERSION>.asc` file. Verify the file using `gpg --verify SHA256SUMS-v<VERSION>.asc`. Then re-upload the file.
124+
14. Finalize and publish the release (change it from draft to public).
125+
15. Ensure that the GitHub Actions for `Publish Python 🐍 distributions πŸ“¦ to PyPI and TestPyPI` and `Build and push multi-platform docker images` are functioning correctly. Check that the `PyPI` modules published on `https://pypi.org/project/pyln-*` and that the Docker image has been uploaded to Docker Hub.
126+
16. Announce the hotfix release in the core-lightning release-chat channel on Discord and on Telegram.

0 commit comments

Comments
Β (0)