Skip to content

Commit

Permalink
build: Matrix strategy for release builds ([ElementsProject#7776]).
Browse files Browse the repository at this point in the history
Also modifies the `build-release.sh` script to optionally
accept specific distribution targets for Ubuntu releases.
  • Loading branch information
s373nZ committed Nov 7, 2024
1 parent 454d6eb commit 0876ffa
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 8 deletions.
51 changes: 45 additions & 6 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ jobs:
check:
name: Check
outputs:
version: steps.capture.outputs.version
version: ${{ steps.capture.outputs.version }}
runs-on: ubuntu-24.04
steps:
- name: Git checkout
Expand All @@ -41,10 +41,18 @@ jobs:
id: capture
run: echo "version=${VERSION}" >> "$GITHUB_OUTPUT"

release:
name: Release
releases:
name: Releases
needs: check
runs-on: ubuntu-24.04
strategy:
fail-fast: false # Let each build finish.
matrix:
target:
- 'bin-Fedora-28-amd64'
- 'bin-Ubuntu-focal'
- 'bin-Ubuntu-jammy'
- 'bin-Ubuntu-noble'
steps:
- name: Git checkout
uses: actions/checkout@v4
Expand All @@ -58,13 +66,44 @@ jobs:
./configure
- name: Build environment setup
run: contrib/cl-repro.sh
run: |
distribution=$(echo ${{ matrix.target }} | cut -d'-' -f3)
echo "Building base image for ${distribution}"
sudo docker run --rm -v $(pwd):/build ubuntu:${distribution} bash -c "\
apt-get update && \
apt-get install -y debootstrap && \
debootstrap ${distribution} /build/${distribution}"
sudo tar -C ${distribution} -c . | docker import - ${distribution}
# Build Docker image
docker build -t cl-repro-${distribution} - < contrib/reprobuild/Dockerfile.${distribution}
if: contains(matrix.target, 'Ubuntu')

- name: Build release
run: tools/build-release.sh bin-Fedora-28-amd64 bin-Ubuntu
run: tools/build-release.sh ${{ matrix.target }}

- name: Upload release artifacts
- name: Upload target artifacts
uses: actions/upload-artifact@v4
with:
path: release/
name: ${{ matrix.target }}
if-no-files-found: error

artifact:
name: Construct release artifact
needs:
- check
- releases
env:
version: ${{ needs.check.outputs.version }}
runs-on: ubuntu-24.04
steps:
- name: Download target artifacts
uses: actions/download-artifact@v4
with:
path: c-lightning-${{ env.version }}
pattern: bin-*
merge-multiple: true

- name: Display target artifacts
run: ls -alh c-lightning-${{ env.version }}/
7 changes: 5 additions & 2 deletions tools/build-release.sh
Original file line number Diff line number Diff line change
Expand Up @@ -153,8 +153,11 @@ for target in $TARGETS; do
docker run --rm=true -w /build $TAG rm -rf /"$VERSION-$platform" /build
echo "Fedora Image Built"
;;
Ubuntu)
for d in focal jammy noble; do
Ubuntu*)
distributions=${platform#Ubuntu-}
echo "distributions=$distributions"
[ "$distributions" == "Ubuntu" ] && distributions="focal jammy noble"
for d in $distributions; 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"
Expand Down

0 comments on commit 0876ffa

Please sign in to comment.