Offers builders for C-bindings #13178
Workflow file for this run
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 Checks | |
on: | |
push: | |
branches-ignore: | |
- master | |
pull_request: | |
branches-ignore: | |
- master | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
build: | |
strategy: | |
fail-fast: false | |
matrix: | |
platform: [ ubuntu-latest, windows-latest, macos-latest ] | |
toolchain: [ stable, beta, 1.63.0 ] # 1.63.0 is the MSRV for all crates. | |
runs-on: ${{ matrix.platform }} | |
steps: | |
- name: Checkout source code | |
uses: actions/checkout@v3 | |
- name: Install Rust ${{ matrix.toolchain }} toolchain | |
run: | | |
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile=minimal --default-toolchain ${{ matrix.toolchain }} | |
rustup override set ${{ matrix.toolchain }} | |
- name: Install no-std-check dependencies for ARM Embedded | |
if: "matrix.platform == 'ubuntu-latest'" | |
run: | | |
rustup target add thumbv7m-none-eabi | |
sudo apt-get -y install gcc-arm-none-eabi | |
- name: Check for unknown cfg tags | |
run: ci/check-cfg-flags.py | |
- name: shellcheck the CI script | |
if: "matrix.platform == 'ubuntu-latest'" | |
run: | | |
sudo apt-get -y install shellcheck | |
shellcheck ci/ci-tests.sh | |
- name: Set RUSTFLAGS to deny warnings | |
if: "matrix.toolchain == '1.63.0'" | |
run: echo "RUSTFLAGS=-D warnings" >> "$GITHUB_ENV" | |
- name: Run CI script | |
shell: bash # Default on Winblows is powershell | |
run: CI_MINIMIZE_DISK_USAGE=1 ./ci/ci-tests.sh | |
coverage: | |
strategy: | |
fail-fast: false | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout source code | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Install Rust stable toolchain | |
run: | | |
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile=minimal | |
- name: Run tests with coverage generation | |
run: | | |
cargo install cargo-llvm-cov | |
export RUSTFLAGS="-Clink-dead-code -Coverflow-checks=off" | |
cargo llvm-cov --features rest-client,rpc-client,tokio,futures,serde --codecov --hide-instantiations --output-path=target/codecov.json | |
# Could you use this to fake the coverage report for your PR? Sure. | |
# Will anyone be impressed by your amazing coverage? No | |
# Maybe if codecov wasn't broken we wouldn't need to do this... | |
bash <(curl -s https://codecov.io/bash) -f target/codecov.json -t "f421b687-4dc2-4387-ac3d-dc3b2528af57" | |
benchmark: | |
runs-on: ubuntu-latest | |
env: | |
TOOLCHAIN: stable | |
steps: | |
- name: Checkout source code | |
uses: actions/checkout@v3 | |
- name: Install Rust ${{ env.TOOLCHAIN }} toolchain | |
run: | | |
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile=minimal --default-toolchain ${{ env.TOOLCHAIN }} | |
rustup override set ${{ env.TOOLCHAIN }} | |
- name: Cache routing graph snapshot | |
id: cache-graph | |
uses: actions/cache@v3 | |
with: | |
path: lightning/net_graph-2023-01-18.bin | |
key: ldk-net_graph-v0.0.113-2023-01-18.bin | |
- name: Fetch routing graph snapshot | |
if: steps.cache-graph.outputs.cache-hit != 'true' | |
run: | | |
curl --verbose -L -o lightning/net_graph-2023-01-18.bin https://bitcoin.ninja/ldk-net_graph-v0.0.113-2023-01-18.bin | |
echo "Sha sum: $(sha256sum lightning/net_graph-2023-01-18.bin | awk '{ print $1 }')" | |
if [ "$(sha256sum lightning/net_graph-2023-01-18.bin | awk '{ print $1 }')" != "${EXPECTED_ROUTING_GRAPH_SNAPSHOT_SHASUM}" ]; then | |
echo "Bad hash" | |
exit 1 | |
fi | |
env: | |
EXPECTED_ROUTING_GRAPH_SNAPSHOT_SHASUM: da6066f2bddcddbe7d8a6debbd53545697137b310bbb8c4911bc8c81fc5ff48c | |
- name: Fetch rapid graph sync reference input | |
run: | | |
curl --verbose -L -o lightning-rapid-gossip-sync/res/full_graph.lngossip https://bitcoin.ninja/ldk-compressed_graph-285cb27df79-2022-07-21.bin | |
echo "Sha sum: $(sha256sum lightning-rapid-gossip-sync/res/full_graph.lngossip | awk '{ print $1 }')" | |
if [ "$(sha256sum lightning-rapid-gossip-sync/res/full_graph.lngossip | awk '{ print $1 }')" != "${EXPECTED_RAPID_GOSSIP_SHASUM}" ]; then | |
echo "Bad hash" | |
exit 1 | |
fi | |
env: | |
EXPECTED_RAPID_GOSSIP_SHASUM: e0f5d11641c11896d7af3a2246d3d6c3f1720b7d2d17aab321ecce82e6b7deb8 | |
- name: Test with Network Graph on Rust ${{ matrix.toolchain }} | |
run: | | |
cd lightning | |
RUSTFLAGS="--cfg=require_route_graph_test" cargo test | |
RUSTFLAGS="--cfg=require_route_graph_test" cargo test --features hashbrown | |
cd .. | |
- name: Run benchmarks on Rust ${{ matrix.toolchain }} | |
run: | | |
cd bench | |
RUSTFLAGS="--cfg=ldk_bench --cfg=require_route_graph_test" cargo bench | |
- name: Run benchmarks with hashbrown on Rust ${{ matrix.toolchain }} | |
run: | | |
cd bench | |
RUSTFLAGS="--cfg=ldk_bench --cfg=require_route_graph_test" cargo bench --features hashbrown | |
check_commits: | |
runs-on: ubuntu-latest | |
env: | |
TOOLCHAIN: stable | |
steps: | |
- name: Checkout source code | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Install Rust ${{ env.TOOLCHAIN }} toolchain | |
run: | | |
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile=minimal --default-toolchain ${{ env.TOOLCHAIN }} | |
rustup override set ${{ env.TOOLCHAIN }} | |
- name: Fetch full tree and rebase on upstream | |
run: | | |
git remote add upstream https://github.com/lightningdevkit/rust-lightning | |
git fetch upstream | |
export GIT_COMMITTER_EMAIL="[email protected]" | |
export GIT_COMMITTER_NAME="RL CI" | |
git rebase upstream/main | |
- name: For each commit, run cargo check (including in fuzz) | |
run: ci/check-each-commit.sh upstream/main | |
check_release: | |
runs-on: ubuntu-latest | |
env: | |
TOOLCHAIN: stable | |
steps: | |
- name: Checkout source code | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Install Rust ${{ env.TOOLCHAIN }} toolchain | |
run: | | |
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile=minimal --default-toolchain ${{ env.TOOLCHAIN }} | |
rustup override set ${{ env.TOOLCHAIN }} | |
- name: Run cargo check for release build. | |
run: | | |
cargo check --release | |
cargo check --no-default-features --features=no-std --release | |
cargo check --no-default-features --features=futures,std --release | |
cargo doc --release | |
- name: Run cargo check for Taproot build. | |
run: | | |
cargo check --release | |
cargo check --no-default-features --features=no-std --release | |
cargo check --no-default-features --features=futures,std --release | |
cargo doc --release | |
env: | |
RUSTFLAGS: '--cfg=taproot' | |
RUSTDOCFLAGS: '--cfg=taproot' | |
fuzz: | |
runs-on: ubuntu-latest | |
env: | |
TOOLCHAIN: 1.58 | |
steps: | |
- name: Checkout source code | |
uses: actions/checkout@v3 | |
- name: Install Rust ${{ env.TOOLCHAIN }} toolchain | |
run: | | |
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile=minimal --default-toolchain ${{ env.TOOLCHAIN }} | |
rustup override set ${{ env.TOOLCHAIN }} | |
- name: Install dependencies for honggfuzz | |
run: | | |
sudo apt-get update | |
sudo apt-get -y install build-essential binutils-dev libunwind-dev | |
- name: Sanity check fuzz targets on Rust ${{ env.TOOLCHAIN }} | |
run: cd fuzz && RUSTFLAGS="--cfg=fuzzing" cargo test --verbose --color always | |
- name: Run fuzzers | |
run: cd fuzz && ./ci-fuzz.sh && cd .. | |
- name: Run lightning-invoice fuzzers | |
run: cd lightning-invoice/fuzz && RUSTFLAGS="--cfg=fuzzing" cargo test --verbose && ./ci-fuzz.sh | |
linting: | |
runs-on: ubuntu-latest | |
env: | |
TOOLCHAIN: stable | |
steps: | |
- name: Checkout source code | |
uses: actions/checkout@v3 | |
- name: Install Rust ${{ env.TOOLCHAIN }} toolchain | |
run: | | |
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile=minimal --default-toolchain ${{ env.TOOLCHAIN }} | |
rustup override set ${{ env.TOOLCHAIN }} | |
- name: Install clippy | |
run: | | |
rustup component add clippy | |
- name: Run default clippy linting | |
run: | | |
cargo clippy -- -Aclippy::erasing_op -Aclippy::never_loop -Aclippy::if_same_then_else -Dclippy::try_err |