mirror of
https://github.com/daywalker90/cln-nip47.git
synced 2026-08-13 12:33:43 +02:00
188 lines
6.6 KiB
YAML
188 lines
6.6 KiB
YAML
name: CI
|
|
|
|
# Cancel duplicate jobs
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
on:
|
|
workflow_call:
|
|
inputs:
|
|
cln-version:
|
|
required: true
|
|
type: string
|
|
pyln-version:
|
|
required: true
|
|
type: string
|
|
tagged-release:
|
|
required: true
|
|
type: boolean
|
|
|
|
jobs:
|
|
build:
|
|
name: Test CLN=${{ inputs.cln-version }}, OS=${{ matrix.os }}, PY=${{ matrix.python-version }}, BCD=${{ matrix.bitcoind-version }}, EXP=${{ matrix.experimental }}, DEP=${{ matrix.deprecated }}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
bitcoind-version: ["28.0"]
|
|
experimental: [1]
|
|
deprecated: [0]
|
|
python-version: ["3.8", "3.11"]
|
|
os: ["ubuntu-24.04"]
|
|
|
|
runs-on: ${{ matrix.os }}
|
|
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Create cache paths
|
|
run: |
|
|
sudo mkdir /usr/local/libexec
|
|
sudo mkdir /usr/local/libexec/c-lightning
|
|
sudo mkdir /usr/local/libexec/c-lightning/plugins
|
|
sudo chown -R $USER /usr/local/libexec
|
|
|
|
- name: Set up Python ${{ matrix.python-version }}
|
|
uses: actions/setup-python@v5
|
|
with:
|
|
python-version: ${{ matrix.python-version }}
|
|
|
|
- name: Extract exact python and os version
|
|
id: exact_versions
|
|
run: |
|
|
PYTHON_VERSION=$(python --version 2>&1 | grep -oP '(?<=Python )\d+\.\d+(\.\d+)?')
|
|
echo "Python version: $PYTHON_VERSION"
|
|
echo "python_version=$PYTHON_VERSION" >> "$GITHUB_OUTPUT"
|
|
OS_VERSION=$(lsb_release -rs)
|
|
echo "OS version: $OS_VERSION"
|
|
echo "os_version=$OS_VERSION" >> $GITHUB_OUTPUT
|
|
|
|
- name: Cache CLN
|
|
id: cache-cln
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: |
|
|
/usr/local/bin/lightning*
|
|
/usr/local/libexec/c-lightning
|
|
key: cache-cln-${{ inputs.cln-version }}-${{ steps.exact_versions.outputs.os_version }}
|
|
|
|
- name: Cache bitcoind
|
|
id: cache-bitcoind
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: /usr/local/bin/bitcoin*
|
|
key: cache-bitcoind-${{ matrix.bitcoind-version }}-${{ steps.exact_versions.outputs.os_version }}
|
|
|
|
- name: Cache python dependencies
|
|
id: cache-python
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: venv
|
|
key: cache-python-${{ steps.exact_versions.outputs.python_version }}-${{ steps.exact_versions.outputs.os_version }}-${{ inputs.pyln-version }}-${{ hashFiles('tests/requirements.txt') }}
|
|
|
|
- name: Download Bitcoin ${{ matrix.bitcoind-version }} & install binaries
|
|
if: ${{ steps.cache-bitcoind.outputs.cache-hit != 'true' }}
|
|
run: |
|
|
export BITCOIND_VERSION=${{ matrix.bitcoind-version }}
|
|
if [[ "${{ matrix.os }}" =~ "ubuntu" ]]; then
|
|
export TARGET_ARCH="x86_64-linux-gnu"
|
|
fi
|
|
if [[ "${{ matrix.os }}" =~ "macos" ]]; then
|
|
export TARGET_ARCH="x86_64-apple-darwin"
|
|
fi
|
|
wget https://bitcoincore.org/bin/bitcoin-core-${BITCOIND_VERSION}/bitcoin-${BITCOIND_VERSION}-${TARGET_ARCH}.tar.gz
|
|
tar -xzf bitcoin-${BITCOIND_VERSION}-${TARGET_ARCH}.tar.gz
|
|
sudo mv bitcoin-${BITCOIND_VERSION}/bin/* /usr/local/bin
|
|
rm -rf bitcoin-${BITCOIND_VERSION}-${TARGET_ARCH}.tar.gz bitcoin-${BITCOIND_VERSION}
|
|
|
|
- name: Download Core Lightning ${{ inputs.cln-version }} & install binaries
|
|
if: ${{ contains(matrix.os, 'ubuntu') && steps.cache-cln.outputs.cache-hit != 'true' }}
|
|
run: |
|
|
url=$(curl -s https://api.github.com/repos/ElementsProject/lightning/releases/tags/${{ inputs.cln-version }} \
|
|
| jq '.assets[] | select(.name | contains("22.04")) | .browser_download_url' \
|
|
| tr -d '\"')
|
|
wget $url
|
|
sudo tar -xvf ${url##*/} -C /usr/local --strip-components=2
|
|
echo "CLN_VERSION=$(lightningd --version)" >> "$GITHUB_OUTPUT"
|
|
|
|
- name: Set up Rust
|
|
if: ${{ inputs.tagged-release == false}}
|
|
uses: dtolnay/rust-toolchain@stable
|
|
|
|
- name: Set up protoc
|
|
if: ${{ inputs.tagged-release == false}} || contains(matrix.os, 'macos') && ${{ steps.cache-cln.outputs.cache-hit != 'true' }}
|
|
uses: arduino/setup-protoc@v3
|
|
with:
|
|
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Checkout Core Lightning ${{ inputs.cln-version }}
|
|
if: ${{ contains(matrix.os, 'macos') && steps.cache-cln.outputs.cache-hit != 'true' }}
|
|
uses: actions/checkout@v4
|
|
with:
|
|
repository: 'ElementsProject/lightning'
|
|
path: 'lightning'
|
|
ref: ${{ inputs.cln-version }}
|
|
submodules: 'recursive'
|
|
|
|
- name: Install System dependencies
|
|
run: |
|
|
if [[ "${{ matrix.os }}" =~ "macos" ]]; then
|
|
brew install autoconf automake libtool gnu-sed gettext libsodium sqlite
|
|
fi
|
|
|
|
- name: Install Python dependencies
|
|
if: ${{ steps.cache-python.outputs.cache-hit != 'true' }}
|
|
run: |
|
|
python -m venv venv
|
|
source venv/bin/activate
|
|
python -m pip install -U pip poetry wheel
|
|
pip3 install "pyln-proto<=${{ inputs.pyln-version }}" "pyln-client<=${{ inputs.pyln-version }}" "pyln-testing<=${{ inputs.pyln-version }}"
|
|
pip3 install pytest-xdist pytest-test-groups pytest-timeout
|
|
if [ -f "tests/requirements.txt" ]; then
|
|
pip3 install -r tests/requirements.txt
|
|
fi
|
|
|
|
- name: Compile Core Lightning ${{ inputs.cln-version }} & install binaries
|
|
if: ${{ contains(matrix.os, 'macos') && steps.cache-cln.outputs.cache-hit != 'true' }}
|
|
run: |
|
|
export EXPERIMENTAL_FEATURES=${{ matrix.experimental }}
|
|
export COMPAT=${{ matrix.deprecated }}
|
|
export VALGRIND=0
|
|
source venv/bin/activate
|
|
|
|
cd lightning
|
|
|
|
poetry lock
|
|
poetry install
|
|
./configure --disable-valgrind
|
|
poetry run make
|
|
sudo make install
|
|
|
|
- name: Get plugin binary
|
|
run: |
|
|
source venv/bin/activate
|
|
if ${{ inputs.tagged-release }}; then
|
|
cd tests
|
|
./setup.sh
|
|
cd ..
|
|
else
|
|
if [ -d "proto" ]; then
|
|
python -m grpc_tools.protoc --proto_path="proto" --python_out="tests" --grpc_python_out="tests" proto/*.proto
|
|
fi
|
|
|
|
cargo build
|
|
fi
|
|
|
|
- name: Run tests
|
|
run: |
|
|
export CLN_PATH=${{ github.workspace }}/lightning
|
|
export COMPAT=${{ matrix.deprecated }}
|
|
export EXPERIMENTAL_FEATURES=${{ matrix.experimental }}
|
|
export SLOW_MACHINE=1
|
|
export TEST_DEBUG=1
|
|
export TRAVIS=1
|
|
export VALGRIND=0
|
|
export PYTEST_TIMEOUT=600
|
|
source venv/bin/activate
|
|
pytest -n=5 tests/test_*.py
|