mirror of
https://github.com/ElementsProject/lightning.git
synced 2025-03-15 11:59:16 +01:00
parent
b5d1acee45
commit
c99b72da1c
3 changed files with 141 additions and 1 deletions
66
.github/workflows/release.yml
vendored
Normal file
66
.github/workflows/release.yml
vendored
Normal file
|
@ -0,0 +1,66 @@
|
|||
---
|
||||
# https://docs.corelightning.org/docs/release-checklist
|
||||
name: "Release 🚀"
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- 'v[0-9]+.[0-9]+'
|
||||
- 'v[0-9]+.[0-9]+.[0-9]+'
|
||||
- 'v[0-9]+.[0-9]+[0-9a-z]+'
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
check:
|
||||
name: Check
|
||||
outputs:
|
||||
version: steps.capture.outputs.version
|
||||
runs-on: ubuntu-24.04
|
||||
steps:
|
||||
- name: Git checkout
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-tags: true
|
||||
|
||||
- name: Determine version from pushed tag
|
||||
if: ${{ github.ref_type == 'tag' }}
|
||||
run: echo "VERSION=${{ github.ref_name }}" >> "$GITHUB_ENV"
|
||||
|
||||
# Relevant for testing branches.
|
||||
- name: Determine version from pushed branch tag
|
||||
if: ${{ github.ref_type == 'branch' }}
|
||||
run: echo "VERSION=$(git tag --points-at HEAD)" >> "$GITHUB_ENV"
|
||||
|
||||
- name: Validate release
|
||||
run: tools/check-release.sh --version=${VERSION}
|
||||
|
||||
- name: Catpure version output
|
||||
id: capture
|
||||
run: echo "version=${VERSION}" >> "$GITHUB_OUTPUT"
|
||||
|
||||
release:
|
||||
name: Release
|
||||
needs: check
|
||||
runs-on: ubuntu-24.04
|
||||
steps:
|
||||
- name: Git checkout
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-tags: true
|
||||
|
||||
# tools/build-release.sh requires lowdown
|
||||
- name: Prepare base environment
|
||||
run: |
|
||||
sudo apt-get install -y lowdown
|
||||
./configure
|
||||
|
||||
- name: Build environment setup
|
||||
run: contrib/cl-repro.sh
|
||||
|
||||
- name: Build release
|
||||
run: tools/build-release.sh bin-Fedora-28-amd64 bin-Ubuntu
|
||||
|
||||
- name: Upload release artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
path: release/
|
||||
if-no-files-found: error
|
|
@ -158,7 +158,7 @@ for target in $TARGETS; do
|
|||
# Capitalize the first letter of distro
|
||||
D=$(echo "$d" | awk '{print toupper(substr($0,1,1))substr($0,2)}')
|
||||
echo "Building Ubuntu $D Image"
|
||||
docker run --rm -v "$(pwd)":/repo -e FORCE_MTIME="$MTIME" -e FORCE_VERSION="$VERSION" -ti cl-repro-"$d"
|
||||
docker run --rm -v "$(pwd)":/repo -e FORCE_MTIME="$MTIME" -e FORCE_VERSION="$VERSION" cl-repro-"$d"
|
||||
echo "Ubuntu $D Image Built"
|
||||
done
|
||||
;;
|
||||
|
|
74
tools/check-release.sh
Executable file
74
tools/check-release.sh
Executable file
|
@ -0,0 +1,74 @@
|
|||
#! /bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
# Checks a version tag and performs validation, to catch common release
|
||||
# tagging issues prior to build via Github Actions.
|
||||
#
|
||||
# 1. The version tag should point to the HEAD of the branch.
|
||||
# - tools/build-release.sh#67
|
||||
# 2. The pushed tag should match the branch tag at the HEAD.
|
||||
# 3. The CHANGELOG.md contains a header entry for the version tag.
|
||||
# 4. The CHANGELOG.md entry for that version tag can be parsed for a date.
|
||||
|
||||
for arg; do
|
||||
case "$arg" in
|
||||
--version=*)
|
||||
VERSION=${arg#*=}
|
||||
;;
|
||||
--help)
|
||||
echo "Usage: [--version=<ver>]"
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
echo "Unknown arg $arg" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
echo "VERSION: ${VERSION}"
|
||||
|
||||
# Version is required.
|
||||
if [ "$VERSION" = "" ]; then
|
||||
echo "The --version argument is required."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# A tag should point to the HEAD of the branch.
|
||||
HEAD_VERSION=$(git tag --points-at HEAD)
|
||||
if [ "$HEAD_VERSION" = "" ]; then
|
||||
echo "No tagged version at HEAD?" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# The version tag should match the branch tag at the HEAD.
|
||||
if [ "$HEAD_VERSION" != "$VERSION" ]; then
|
||||
echo "The HEAD tag must match the version tag." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# The version tag should match the `make version` target output.
|
||||
MAKE_VERSION=$(make version)
|
||||
echo "MAKE_VERSION=$MAKE_VERSION"
|
||||
if [ "$MAKE_VERSION" != "$VERSION" ]; then
|
||||
echo "The version tag must match the \`make version\` target output." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# The CHANGELOG.md contains a header entry for the version tag.
|
||||
CHANGELOG_TITLE=$(grep "## \[${VERSION#v}\]" CHANGELOG.md)
|
||||
if [ "$CHANGELOG_TITLE" = "" ]; then
|
||||
echo "No entry in the CHANGELOG.md found for $VERSION." >&2
|
||||
exit 1
|
||||
fi
|
||||
echo "CHANGELOG_TITLE=$CHANGELOG_TITLE"
|
||||
|
||||
# The CHANGELOG.md entry for that version tag can be parsed for a date.
|
||||
RELEASE_DATE=$(sed -n "s/^## \\[.*${VERSION#v}\\] - \\([-0-9]*\\).*/\\1/p" < CHANGELOG.md)
|
||||
echo "RELEASE_DATE=$RELEASE_DATE"
|
||||
if [ "$RELEASE_DATE" = "" ]; then
|
||||
echo "The release title in CHANGELOG.md cannot be parsed for a date." >&2
|
||||
exit 1
|
||||
fi
|
Loading…
Add table
Reference in a new issue