From e6e69f51b97cc1a8ba334242cc02b76e8a0f2142 Mon Sep 17 00:00:00 2001 From: Franck Royer Date: Wed, 22 Apr 2020 08:00:43 +1000 Subject: [PATCH 1/3] Use more generic name as it will be use in GitHub Action too --- .travis.yml | 2 +- fuzz/{travis-fuzz.sh => ci-fuzz.sh} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename fuzz/{travis-fuzz.sh => ci-fuzz.sh} (100%) diff --git a/.travis.yml b/.travis.yml index cc42b06c777..0c36806c63c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -26,7 +26,7 @@ script: - 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 && diff --git a/fuzz/travis-fuzz.sh b/fuzz/ci-fuzz.sh similarity index 100% rename from fuzz/travis-fuzz.sh rename to fuzz/ci-fuzz.sh From 355dbbcde9289666a67728797d19535f50328518 Mon Sep 17 00:00:00 2001 From: Franck Royer Date: Tue, 21 Apr 2020 20:24:39 +1000 Subject: [PATCH 2/3] 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. --- .github/workflows/build.yml | 97 +++++++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 .github/workflows/build.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 00000000000..43ed94dd9eb --- /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 From 06419a2608df4df6fc84103b00c68dcfbca85234 Mon Sep 17 00:00:00 2001 From: Franck Royer Date: Fri, 24 Apr 2020 15:06:15 +1000 Subject: [PATCH 3/3] Add a pop of colour --- .github/workflows/build.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 43ed94dd9eb..98f4f19a4d6 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -35,16 +35,16 @@ jobs: 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 + 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 -p lightning + 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 + 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 -p lightning + run: RUSTFLAGS="-C link-dead-code" cargo test --verbose --color always -p lightning - name: Install deps for kcov if: matrix.coverage run: | @@ -92,6 +92,6 @@ jobs: 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 + run: cd fuzz && cargo test --verbose --color always - name: Generate fuzz report run: cd fuzz && ./ci-fuzz.sh