rust-lightning/.github/workflows/build.yml
Valentine Wallace 0ac5697bb8
Bump MSRV to 1.30.0
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.
2020-08-19 15:39:03 -04:00

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