mirror of
https://github.com/lightningdevkit/rust-lightning.git
synced 2025-02-25 07:17:40 +01:00
We wanted to bump to 1.29 to continue to support mrustc bootstrapping, but on 1.29 there's a bug preventing us from compiling the lightning package only, thus parts of lightning-net-tokio cause a compilation error. The advantage of bumping the MSRV is an improved borrow checker which should enable improved code quality, and not having jump through weird hoops sometimes to get 1.22 working.
100 lines
3.7 KiB
YAML
100 lines
3.7 KiB
YAML
name: Continuous Integration Checks
|
|
|
|
on: [push, pull_request]
|
|
|
|
jobs:
|
|
build:
|
|
strategy:
|
|
matrix:
|
|
toolchain: [ stable,
|
|
beta,
|
|
# 1.30.0 is MSRV for Rust-Lightning
|
|
1.30.0,
|
|
# 1.34.2 is Debian stable
|
|
1.34.2,
|
|
# 1.39.0 is MSRV for lightning-net-tokio and generates coverage
|
|
1.39.0]
|
|
include:
|
|
- toolchain: stable
|
|
build-net-tokio: true
|
|
- toolchain: beta
|
|
build-net-tokio: true
|
|
- toolchain: 1.39.0
|
|
build-net-tokio: true
|
|
coverage: true
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout source code
|
|
uses: actions/checkout@v2
|
|
- name: Install Rust ${{ matrix.toolchain }} toolchain
|
|
uses: actions-rs/toolchain@v1
|
|
with:
|
|
toolchain: ${{ matrix.toolchain }}
|
|
override: true
|
|
profile: minimal
|
|
- name: Build on Rust ${{ matrix.toolchain }} with net-tokio
|
|
if: matrix.build-net-tokio
|
|
run: RUSTFLAGS="-C link-dead-code" cargo build --verbose --color always
|
|
- name: Build on Rust ${{ matrix.toolchain }}
|
|
if: "! matrix.build-net-tokio"
|
|
run: RUSTFLAGS="-C link-dead-code" cargo build --verbose --color always -p lightning
|
|
- name: Test on Rust ${{ matrix.toolchain }} with net-tokio
|
|
if: matrix.build-net-tokio
|
|
run: RUSTFLAGS="-C link-dead-code" cargo test --verbose --color always
|
|
- name: Test on Rust ${{ matrix.toolchain }}
|
|
if: "! matrix.build-net-tokio"
|
|
run: RUSTFLAGS="-C link-dead-code" cargo test --verbose --color always -p lightning
|
|
- name: Install deps for kcov
|
|
if: matrix.coverage
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get -y install binutils-dev libcurl4-openssl-dev zlib1g-dev libdw-dev libiberty-dev
|
|
- name: Install kcov
|
|
if: matrix.coverage
|
|
run: |
|
|
wget https://github.com/SimonKagstrom/kcov/archive/master.tar.gz
|
|
tar xzf master.tar.gz
|
|
cd kcov-master && mkdir build && cd build
|
|
cmake ..
|
|
make
|
|
make install DESTDIR=../../kcov-build
|
|
cd ../.. && rm -rf kcov-master master.tar.gz
|
|
- name: Generate coverage report
|
|
if: matrix.coverage
|
|
run: |
|
|
for file in target/debug/lightning-*; do
|
|
[ -x "${file}" ] || continue;
|
|
mkdir -p "target/cov/$(basename $file)";
|
|
./kcov-build/usr/local/bin/kcov --exclude-pattern=/.cargo,/usr/lib --verify "target/cov/$(basename $file)" "$file";
|
|
done
|
|
- name: Upload coverage
|
|
if: matrix.coverage
|
|
uses: codecov/codecov-action@v1
|
|
with:
|
|
# 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...
|
|
token: f421b687-4dc2-4387-ac3d-dc3b2528af57
|
|
fail_ci_if_error: true
|
|
|
|
fuzz:
|
|
runs-on: ubuntu-latest
|
|
env:
|
|
TOOLCHAIN: stable
|
|
steps:
|
|
- name: Checkout source code
|
|
uses: actions/checkout@v2
|
|
- name: Install Rust ${{ env.TOOLCHAIN }} toolchain
|
|
uses: actions-rs/toolchain@v1
|
|
with:
|
|
toolchain: ${{ env.TOOLCHAIN }}
|
|
override: true
|
|
profile: minimal
|
|
- 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 && cargo test --verbose --color always
|
|
- name: Run fuzzers
|
|
run: cd fuzz && ./ci-fuzz.sh
|