From 9a6148cb4997b4fdb1cfffaf86fbdcf7cd1c58c4 Mon Sep 17 00:00:00 2001 From: Se7enZ Date: Mon, 11 Nov 2024 16:40:07 +0100 Subject: [PATCH] build: Prepare release draft in Github actions. --- .github/workflows/release.yml | 44 ++++++++++++++++--- .../release-checklist.md | 6 +-- 2 files changed, 40 insertions(+), 10 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 204b8f24c6aa..410d7b31abbd 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -13,6 +13,13 @@ on: description: Tag to release required: true type: string + create_release: + description: Create a draft release + default: no + type: choice + options: + - yes + - no jobs: check: @@ -111,7 +118,7 @@ jobs: delete-merged: true release: - name: Sign release + name: Sign and prepare release draft needs: - check - artifact @@ -139,18 +146,14 @@ jobs: trust_level: 5 - name: Set default GPG key - run: | - gpg -K - gpg --list-secret-keys - echo "default-key ${{ steps.gpg.outputs.keyid }}" >> ~/.gnupg/gpg.conf - cat ~/.gnupg/gpg.conf + run: echo "default-key ${{ steps.gpg.outputs.keyid }}" >> ~/.gnupg/gpg.conf - name: Sign release run: | sudo apt-get install -y lowdown ./configure - # TODO: configure GPG key tools/build-release.sh --without-zip sign + mv release/SHA256SUMS.asc${{ steps.gpg.outputs.keyid }} release/SHA256SUMS.asc - name: Upload signed artifact uses: actions/upload-artifact@v4 @@ -158,3 +161,30 @@ jobs: name: c-lightning-${{ env.version }} overwrite: true path: release/ + + - name: Determine release data + id: release_data + run: | + VERSION=${{ env.version }} + CHANGELOG_VERSION=${VERSION#v} + echo "CHANGELOG_VERSION=$CHANGELOG_VERSION" + echo "changelog_version=$CHANGELOG_VERSION" >> "$GITHUB_OUTPUT" + + CHANGELOG_TITLE=$(grep "## \[${CHANGELOG_VERSION}\]" CHANGELOG.md) + echo "CHANGELOG_TITLE=$CHANGELOG_TITLE" + echo "changelog_title=$CHANGELOG_TITLE" >> "$GITHUB_OUTPUT" + + RELEASE_TITLE=$(echo $CHANGELOG_TITLE | cut -d'"' -f2) + echo "RELEASE_TITLE=$RELEASE_TITLE" + echo "release_title=$RELEASE_TITLE" >> "$GITHUB_OUTPUT" + + - name: Prepare release draft + if: github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && inputs.create_release == 'yes') + uses: softprops/action-gh-release@v2 + with: + name: "${{ env.version }} ${{ steps.release_data.outputs.release_title }}" + tag_name: ${{ env.version }} + draft: true + prerelease: contains(env.version, "-rc") + files: release/* + fail_on_unmatched_files: true diff --git a/doc/contribute-to-core-lightning/release-checklist.md b/doc/contribute-to-core-lightning/release-checklist.md index ec0c79ccf6fa..f3f91a3c733f 100644 --- a/doc/contribute-to-core-lightning/release-checklist.md +++ b/doc/contribute-to-core-lightning/release-checklist.md @@ -34,9 +34,9 @@ Here's a checklist for the release process. 3. Confirm that the tag will show up for builds with `git describe` 4. Push the tag to remote `git push --tags`. 5. Pushing the tag will kickoff the "Release 🚀" CI action which builds the release targets. Verify this action completed successfully and download the artifact it produces named `c-lightning-`.zip and extract it into a directory named `release` in the root of your local repository. Ex. `unzip -d release/ ~/Downloads/c-lightning-.zip` -6. Sign the release locally by running `tools/build-release.sh --without-zip sign` which will sign the release contents and create SHA256SUMS and SHA256SUMS.asc in the release folder. -7. Draft a new `vrc1` release on Github and check `Set as a pre-release` option. -8. Upload reproducible builds, SHA256SUMS and SHA256SUMS.asc from the release folder to newly drafted release. +6. The CI will also create a draft release in Github with the assets attached. Locate the release and edit it to add the body copy, verify the settings and tweak as needed. +7. Build, verify and sign the release locally by running `tools/build-release.sh --without-zip sign` which will sign the release contents and create SHA256SUMS and SHA256SUMS.asc in the release folder. +8. Compare the signatures to those from CI and your key to the SHA256SUMS.asc file. Then, upload the SHA256SUMS.asc from your local release folder to newly drafted release, replacing it. 9. Announce rc1 release on core-lightning's release-chat channel on Discord & [BuildOnL2](https://community.corelightning.org/c/general-questions/). 10. Use `devtools/credit --verbose v` to get commits, days and contributors data for release note. 11. Prepare release notes draft including information from above step, and share with the team for editing.