--- /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 --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:
+ 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 --color always
+ - name: Generate fuzz report
+ run: cd fuzz && ./ci-fuzz.sh
- if [ "$BUILD_NET_TOKIO" == "1" ]; then RUSTFLAGS="-C link-dead-code" cargo test --verbose; fi
- if [ "$BUILD_NET_TOKIO" != "1" ]; then RUSTFLAGS="-C link-dead-code" cargo test --verbose -p lightning; fi
# Run lightning workspace fuzz tests on Rust stable
- - if [ "$(rustup show | grep default | grep stable)" != "" ]; then cd fuzz && cargo test --verbose && ./travis-fuzz.sh; fi
+ - if [ "$(rustup show | grep default | grep stable)" != "" ]; then cd fuzz && cargo test --verbose && ./ci-fuzz.sh; fi
# Generate code cov information on Rust 1.39.0
- if [ "$(rustup show | grep default | grep 1.39.0)" != "" ]; then
wget https://github.com/SimonKagstrom/kcov/archive/master.tar.gz &&
--- /dev/null
+#!/bin/bash
+set -e
+
+pushd src/msg_targets
+rm msg_*.rs
+./gen_target.sh
+[ "$(git diff)" != "" ] && exit 1
+popd
+pushd src/bin
+rm *_target.rs
+./gen_target.sh
+[ "$(git diff)" != "" ] && exit 1
+popd
+
+cargo install --force honggfuzz
+sed -i 's/lto = true//' Cargo.toml
+HFUZZ_BUILD_ARGS="--features honggfuzz_fuzz" cargo hfuzz build
+for TARGET in src/bin/*.rs; do
+ FILENAME=$(basename $TARGET)
+ FILE="${FILENAME%.*}"
+ HFUZZ_RUN_ARGS="--exit_upon_crash -v -n2"
+ if [ "$FILE" = "chanmon_consistency_target" ]; then
+ HFUZZ_RUN_ARGS="$HFUZZ_RUN_ARGS -F 64 -N100000"
+ else
+ HFUZZ_RUN_ARGS="$HFUZZ_RUN_ARGS -N1000000"
+ fi
+ export HFUZZ_RUN_ARGS
+ HFUZZ_BUILD_ARGS="--features honggfuzz_fuzz" cargo hfuzz run $FILE
+ if [ -f hfuzz_workspace/$FILE/HONGGFUZZ.REPORT.TXT ]; then
+ cat hfuzz_workspace/$FILE/HONGGFUZZ.REPORT.TXT
+ for CASE in hfuzz_workspace/$FILE/SIG*; do
+ cat $CASE | xxd -p
+ done
+ exit 1
+ fi
+done
+++ /dev/null
-#!/bin/bash
-set -e
-
-pushd src/msg_targets
-rm msg_*.rs
-./gen_target.sh
-[ "$(git diff)" != "" ] && exit 1
-popd
-pushd src/bin
-rm *_target.rs
-./gen_target.sh
-[ "$(git diff)" != "" ] && exit 1
-popd
-
-cargo install --force honggfuzz
-sed -i 's/lto = true//' Cargo.toml
-HFUZZ_BUILD_ARGS="--features honggfuzz_fuzz" cargo hfuzz build
-for TARGET in src/bin/*.rs; do
- FILENAME=$(basename $TARGET)
- FILE="${FILENAME%.*}"
- HFUZZ_RUN_ARGS="--exit_upon_crash -v -n2"
- if [ "$FILE" = "chanmon_consistency_target" ]; then
- HFUZZ_RUN_ARGS="$HFUZZ_RUN_ARGS -F 64 -N100000"
- else
- HFUZZ_RUN_ARGS="$HFUZZ_RUN_ARGS -N1000000"
- fi
- export HFUZZ_RUN_ARGS
- HFUZZ_BUILD_ARGS="--features honggfuzz_fuzz" cargo hfuzz run $FILE
- if [ -f hfuzz_workspace/$FILE/HONGGFUZZ.REPORT.TXT ]; then
- cat hfuzz_workspace/$FILE/HONGGFUZZ.REPORT.TXT
- for CASE in hfuzz_workspace/$FILE/SIG*; do
- cat $CASE | xxd -p
- done
- exit 1
- fi
-done