From: Franck Royer Date: Tue, 21 Apr 2020 10:24:39 +0000 (+1000) Subject: Add CI using GitHub Action X-Git-Tag: v0.0.12~77^2~1 X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=commitdiff_plain;h=355dbbcde9289666a67728797d19535f50328518;p=rust-lightning Add CI using GitHub Action Same setup than Travis except for removing `rm -f target/debug/lightning-*` as I do not believe such file would exist on a fresh run. I have not setup caching at this stage. The library is small so I don't think it'd be that necessary/helpful. I'd recommend to let both CI run for a bit to compare performance and stability. The CI setup is straightforward so I do not foresee any issue with GitHub actions. Once happy, Travis file can be removed and branch protection checks can be updated to block on the GitHub actions. You can also check the [Coverage report](https://codecov.io/gh/D4nte/rust-lightning/tree/752a58bc0441a49a0513f2cad979ad9e2621312a/lightning/src/chain) to ensure it is as expected. --- diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 000000000..43ed94dd9 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,97 @@ +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