--- /dev/null
+name: Continuous Integration Checks
+
+on:
+ push:
+
+jobs:
+ build:
+ strategy:
+ matrix:
+ toolchain: [ stable,
+ beta,
+ # 1.22.0 is MSRV for rust-lightning in general:
+ 1.22.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
+ - name: Build on Rust ${{ matrix.toolchain }}
+ if: "! matrix.build-net-tokio"
+ run: RUSTFLAGS="-C link-dead-code" cargo build --verbose -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
+ - name: Test on Rust ${{ matrix.toolchain }}
+ if: "! matrix.build-net-tokio"
+ run: RUSTFLAGS="-C link-dead-code" cargo test --verbose -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:
+ 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: Fuzz test on Rust ${{ matrix.TOOLCHAIN }}
+ run: cd fuzz && cargo test --verbose
+ - name: Generate fuzz report
+ run: cd fuzz && ./ci-fuzz.sh