CI: build cln from source #73
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Continuous Integration | |
on: | |
push: | |
branches: | |
- "main" | |
pull_request: | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
cancel-in-progress: true | |
jobs: | |
fmt-check: | |
name: Format Check | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install rust | |
run: | | |
rustup set auto-self-update disable | |
rustup toolchain install stable --profile minimal | |
- name: Install virtualenv | |
run: python -m pip install --user virtualenv | |
- name: Run Format check | |
run: make fmt-check | |
clippy: | |
name: Clippy | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install rust | |
run: | | |
rustup set auto-self-update disable | |
rustup toolchain install stable --profile minimal | |
- name: Rust cache | |
uses: Swatinem/rust-cache@v2 | |
- name: clippy | |
run: make clippy | |
compile-cln: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
cln: | |
- version: v24.08 | |
rust-version: 1.79.0 | |
- version: v24.05 | |
rust-version: 1.79.0 | |
- version: v24.02.2 | |
rust-version: 1.79.0 | |
- version: v23.11.2 | |
rust-version: 1.79.0 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
repository: ElementsProject/lightning | |
ref: ${{ matrix.cln.version }} | |
- name: Set up Python 3.8 | |
uses: actions/setup-python@v5 | |
with: | |
python-version: 3.8 | |
- name: Install dependencies | |
env: | |
RUST_VERSION: ${{ matrix.cln.rust-version }} | |
run: | | |
bash -x .github/scripts/setup.sh | |
- name: Build | |
run: | | |
set -e | |
pip3 install --user pip wheel poetry | |
poetry export -o requirements.txt --with dev --without-hashes | |
python3 -m pip install -r requirements.txt | |
./configure | |
make -j $(nproc) testpack.tar.bz2 | |
# Rename now so we don't clash | |
mv testpack.tar.bz2 cln-${{ matrix.cln.version }}.tar.bz2 | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: cln-${{ matrix.cln.version }}.tar.bz2 | |
path: cln-${{ matrix.cln.version }}.tar.bz2 | |
itest: | |
name: Integration tests | |
needs: compile-cln | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
cln-version: [ | |
v24.08, | |
v24.05, | |
v24.02.2, | |
v23.11.2, | |
] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install rust | |
run: | | |
rustup set auto-self-update disable | |
rustup toolchain install stable --profile minimal | |
- name: Rust cache | |
uses: Swatinem/rust-cache@v2 | |
- name: Install bitcoind | |
run: | | |
wget -q "https://bitcoincore.org/bin/bitcoin-core-26.1/bitcoin-26.1-x86_64-linux-gnu.tar.gz" | |
tar -xzf "bitcoin-26.1-x86_64-linux-gnu.tar.gz" | |
sudo cp -r "bitcoin-26.1/bin" "/usr/local" | |
rm -rf "bitcoin-26.1-x86_64-linux-gnu.tar.gz" "bitcoin-26.1" | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
repository: ElementsProject/lightning | |
ref: ${{ matrix.cln-version }} | |
path: cln | |
- name: Download CLN | |
uses: actions/download-artifact@v4 | |
with: | |
name: cln-${{ matrix.cln-version }}.tar.bz2 | |
path: cln | |
- name: Unpack CLN | |
working-directory: cln | |
run: tar -xaf cln-${{ matrix.cln-version }}.tar.bz2 | |
- name: Install CLN | |
working-directory: cln | |
run: make install | |
- name: Install virtualenv | |
run: python -m pip install --user virtualenv | |
- name: Integration tests | |
env: | |
TEST_DEBUG: 1 | |
SLOW_MACHINE: 1 | |
PYTEST_PAR: 10 | |
run: make itest | |
utest: | |
name: Unit tests | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install rust | |
run: | | |
rustup set auto-self-update disable | |
rustup toolchain install stable --profile minimal | |
- name: Rust cache | |
uses: Swatinem/rust-cache@v2 | |
- name: Unit tests | |
run: make utest |