mirror of
https://github.com/lightningdevkit/rust-lightning.git
synced 2025-01-19 05:43:55 +01:00
Replace the bulk of CI with a (much simpler) bash script
This commit is contained in:
parent
28cc71f980
commit
6558b510cf
176
.github/workflows/build.yml
vendored
176
.github/workflows/build.yml
vendored
@ -7,35 +7,21 @@ jobs:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
platform: [ ubuntu-latest ]
|
||||
toolchain: [ stable,
|
||||
beta,
|
||||
# 1.48.0 is the MSRV for all LDK crates except lightning-transaction-sync and Windows
|
||||
1.48.0]
|
||||
platform: [ ubuntu-latest, windows-latest, macos-latest ]
|
||||
toolchain: [ stable, beta ]
|
||||
include:
|
||||
- toolchain: stable
|
||||
build-tx-sync: true
|
||||
platform: ubuntu-latest
|
||||
coverage: true
|
||||
- toolchain: stable
|
||||
platform: macos-latest
|
||||
build-tx-sync: true
|
||||
- toolchain: stable
|
||||
test-custom-message: true
|
||||
- toolchain: beta
|
||||
platform: macos-latest
|
||||
build-tx-sync: true
|
||||
- toolchain: stable
|
||||
platform: windows-latest
|
||||
build-tx-sync: false
|
||||
- toolchain: beta
|
||||
platform: windows-latest
|
||||
build-tx-sync: false
|
||||
- toolchain: beta
|
||||
build-tx-sync: true
|
||||
- toolchain: beta
|
||||
test-custom-message: true
|
||||
# 1.48.0 is the MSRV for all crates except lightning-transaction-sync and Win/Mac
|
||||
- toolchain: 1.48.0
|
||||
build-tx-sync: false
|
||||
platform: ubuntu-latest
|
||||
# Windows requires 1.49.0 because that's the MSRV for supported Tokio
|
||||
- toolchain: 1.49.0
|
||||
platform: windows-latest
|
||||
# MacOS-latest requires 1.54.0 because that's what's required for linking to work properly
|
||||
- toolchain: 1.54.0
|
||||
platform: macos-latest
|
||||
runs-on: ${{ matrix.platform }}
|
||||
steps:
|
||||
- name: Checkout source code
|
||||
@ -46,140 +32,24 @@ jobs:
|
||||
toolchain: ${{ matrix.toolchain }}
|
||||
override: true
|
||||
profile: minimal
|
||||
- name: Pin tokio to 1.14 for Rust 1.45
|
||||
run: cargo update -p tokio --precise "1.14.0" --verbose
|
||||
env:
|
||||
CARGO_NET_GIT_FETCH_WITH_CLI: "true"
|
||||
- name: Pin tokio to 1.26 for Windows
|
||||
if: "matrix.platform == 'windows-latest'"
|
||||
run: cargo update -p tokio --precise "1.26.0" --verbose
|
||||
env:
|
||||
CARGO_NET_GIT_FETCH_WITH_CLI: "true"
|
||||
- name: Build on Rust ${{ matrix.toolchain }} with net-tokio
|
||||
if: "!matrix.coverage"
|
||||
run: cargo build --verbose --color always
|
||||
- name: Build on Rust ${{ matrix.toolchain }} with net-tokio, and full code-linking for coverage generation
|
||||
if: matrix.coverage
|
||||
run: RUSTFLAGS="-C link-dead-code" cargo build --verbose --color always
|
||||
- name: Build on Rust ${{ matrix.toolchain }} with all Log-Limiting features
|
||||
if: matrix.test-log-variants
|
||||
run: |
|
||||
cd lightning
|
||||
for FEATURE in $(cat Cargo.toml | grep '^max_level_' | awk '{ print $1 }'); do
|
||||
cargo build --verbose --color always --features $FEATURE
|
||||
done
|
||||
- name: Build Block Sync Clients on Rust ${{ matrix.toolchain }} with features
|
||||
if: "!matrix.coverage"
|
||||
run: |
|
||||
cd lightning-block-sync
|
||||
cargo build --verbose --color always --features rest-client
|
||||
cargo build --verbose --color always --features rpc-client
|
||||
cargo build --verbose --color always --features rpc-client,rest-client
|
||||
cargo build --verbose --color always --features rpc-client,rest-client,tokio
|
||||
- name: Build Block Sync Clients on Rust ${{ matrix.toolchain }} with features and full code-linking for coverage generation
|
||||
if: matrix.coverage
|
||||
run: |
|
||||
cd lightning-block-sync
|
||||
RUSTFLAGS="-C link-dead-code" cargo build --verbose --color always --features rest-client
|
||||
RUSTFLAGS="-C link-dead-code" cargo build --verbose --color always --features rpc-client
|
||||
RUSTFLAGS="-C link-dead-code" cargo build --verbose --color always --features rpc-client,rest-client
|
||||
RUSTFLAGS="-C link-dead-code" cargo build --verbose --color always --features rpc-client,rest-client,tokio
|
||||
- name: Build Transaction Sync Clients on Rust ${{ matrix.toolchain }} with features
|
||||
if: "matrix.build-tx-sync && !matrix.coverage"
|
||||
run: |
|
||||
cd lightning-transaction-sync
|
||||
cargo build --verbose --color always --features esplora-blocking
|
||||
cargo build --verbose --color always --features esplora-async
|
||||
cargo build --verbose --color always --features esplora-async-https
|
||||
- name: Build transaction sync clients on Rust ${{ matrix.toolchain }} with features and full code-linking for coverage generation
|
||||
if: "matrix.build-tx-sync && matrix.coverage"
|
||||
run: |
|
||||
cd lightning-transaction-sync
|
||||
RUSTFLAGS="-C link-dead-code" cargo build --verbose --color always --features esplora-blocking
|
||||
RUSTFLAGS="-C link-dead-code" cargo build --verbose --color always --features esplora-async
|
||||
RUSTFLAGS="-C link-dead-code" cargo build --verbose --color always --features esplora-async-https
|
||||
- name: Test transaction sync clients on Rust ${{ matrix.toolchain }} with features
|
||||
if: "matrix.build-tx-sync"
|
||||
run: |
|
||||
cd lightning-transaction-sync
|
||||
cargo test --verbose --color always --features esplora-blocking
|
||||
cargo test --verbose --color always --features esplora-async
|
||||
cargo test --verbose --color always --features esplora-async-https
|
||||
- name: Test backtrace-debug builds on Rust ${{ matrix.toolchain }}
|
||||
if: "matrix.toolchain == 'stable'"
|
||||
shell: bash # Default on Winblows is powershell
|
||||
run: |
|
||||
cd lightning && RUST_BACKTRACE=1 cargo test --verbose --color always --features backtrace
|
||||
- name: Test on Rust ${{ matrix.toolchain }} with net-tokio
|
||||
if: "!matrix.coverage"
|
||||
run: cargo test --verbose --color always
|
||||
- name: Test on Rust ${{ matrix.toolchain }} with net-tokio, and full code-linking for coverage generation
|
||||
if: matrix.coverage
|
||||
run: RUSTFLAGS="-C link-dead-code" cargo test --verbose --color always
|
||||
- name: Test no-std builds on Rust ${{ matrix.toolchain }}
|
||||
if: "!matrix.coverage"
|
||||
shell: bash # Default on Winblows is powershell
|
||||
run: |
|
||||
for DIR in lightning lightning-invoice lightning-rapid-gossip-sync; do
|
||||
cd $DIR
|
||||
cargo test --verbose --color always --no-default-features --features no-std
|
||||
# check if there is a conflict between no-std and the default std feature
|
||||
cargo test --verbose --color always --features no-std
|
||||
# check that things still pass without grind_signatures
|
||||
# note that outbound_commitment_test only runs in this mode, because of hardcoded signature values
|
||||
cargo test --verbose --color always --no-default-features --features std
|
||||
# check if there is a conflict between no-std and the c_bindings cfg
|
||||
RUSTFLAGS="--cfg=c_bindings" cargo test --verbose --color always --no-default-features --features=no-std
|
||||
cd ..
|
||||
done
|
||||
# check no-std compatibility across dependencies
|
||||
cd no-std-check
|
||||
cargo check --verbose --color always --features lightning-transaction-sync
|
||||
- name: Build no-std-check on Rust ${{ matrix.toolchain }} for ARM Embedded
|
||||
- name: Install no-std-check dependencies for ARM Embedded
|
||||
if: "matrix.platform == 'ubuntu-latest'"
|
||||
run: |
|
||||
cd no-std-check
|
||||
rustup target add thumbv7m-none-eabi
|
||||
sudo apt-get -y install gcc-arm-none-eabi
|
||||
cargo build --target=thumbv7m-none-eabi
|
||||
- name: Test on no-std builds Rust ${{ matrix.toolchain }} and full code-linking for coverage generation
|
||||
if: "matrix.coverage"
|
||||
- name: shellcheck the CI script
|
||||
if: "matrix.platform == 'ubuntu-latest'"
|
||||
run: |
|
||||
cd lightning
|
||||
RUSTFLAGS="-C link-dead-code" cargo test --verbose --color always --no-default-features --features no-std
|
||||
- name: Test futures builds on Rust ${{ matrix.toolchain }}
|
||||
if: "!matrix.coverage"
|
||||
shell: bash # Default on Winblows is powershell
|
||||
run: |
|
||||
cd lightning-background-processor
|
||||
cargo test --verbose --color always --no-default-features --features futures
|
||||
- name: Test futures builds on Rust ${{ matrix.toolchain }} and full code-linking for coverage generation
|
||||
if: "matrix.coverage"
|
||||
shell: bash # Default on Winblows is powershell
|
||||
run: |
|
||||
cd lightning-background-processor
|
||||
RUSTFLAGS="-C link-dead-code" cargo test --verbose --color always --no-default-features --features futures
|
||||
- name: Test Block Sync Clients on Rust ${{ matrix.toolchain }} with features
|
||||
if: "!matrix.coverage"
|
||||
run: |
|
||||
cd lightning-block-sync
|
||||
cargo test --verbose --color always --features rest-client
|
||||
cargo test --verbose --color always --features rpc-client
|
||||
cargo test --verbose --color always --features rpc-client,rest-client
|
||||
cargo test --verbose --color always --features rpc-client,rest-client,tokio
|
||||
- name: Test Block Sync Clients on Rust ${{ matrix.toolchain }} with features and full code-linking for coverage generation
|
||||
sudo apt-get -y install shellcheck
|
||||
shellcheck ci/ci-tests.sh
|
||||
- name: Run CI script with coverage generation
|
||||
if: matrix.coverage
|
||||
run: |
|
||||
cd lightning-block-sync
|
||||
RUSTFLAGS="-C link-dead-code" cargo test --verbose --color always --features rest-client
|
||||
RUSTFLAGS="-C link-dead-code" cargo test --verbose --color always --features rpc-client
|
||||
RUSTFLAGS="-C link-dead-code" cargo test --verbose --color always --features rpc-client,rest-client
|
||||
RUSTFLAGS="-C link-dead-code" cargo test --verbose --color always --features rpc-client,rest-client,tokio
|
||||
- name: Test Custom Message Macros on Rust ${{ matrix.toolchain }}
|
||||
if: "matrix.test-custom-message"
|
||||
run: |
|
||||
cd lightning-custom-message
|
||||
cargo test --verbose --color always
|
||||
shell: bash # Default on Winblows is powershell
|
||||
run: LDK_COVERAGE_BUILD=true ./ci/ci-tests.sh
|
||||
- name: Run CI script
|
||||
if: "!matrix.coverage"
|
||||
shell: bash # Default on Winblows is powershell
|
||||
run: ./ci/ci-tests.sh
|
||||
- name: Install deps for kcov
|
||||
if: matrix.coverage
|
||||
run: |
|
||||
|
91
ci/ci-tests.sh
Executable file
91
ci/ci-tests.sh
Executable file
@ -0,0 +1,91 @@
|
||||
#!/bin/bash
|
||||
set -eox pipefail
|
||||
|
||||
RUSTC_MINOR_VERSION=$(rustc --version | awk '{ split($2,a,"."); print a[2] }')
|
||||
HOST_PLATFORM="$(rustc --version --verbose | grep "host:" | awk '{ print $2 }')"
|
||||
|
||||
# Tokio MSRV on versions newer than 1.14 is rustc 1.49
|
||||
[ "$RUSTC_MINOR_VERSION" -lt 49 ] && cargo update -p tokio --precise "1.14.0" --verbose
|
||||
[ "$LDK_COVERAGE_BUILD" != "" ] && export RUSTFLAGS="-C link-dead-code"
|
||||
|
||||
export RUST_BACKTRACE=1
|
||||
|
||||
echo -e "\n\nBuilding and testing all workspace crates..."
|
||||
cargo build --verbose --color always
|
||||
cargo test --verbose --color always
|
||||
|
||||
echo -e "\n\nBuilding with all Log-Limiting features"
|
||||
pushd lightning
|
||||
grep '^max_level_' Cargo.toml | awk '{ print $1 }'| while read -r FEATURE; do
|
||||
cargo build --verbose --color always --features "$FEATURE"
|
||||
done
|
||||
popd
|
||||
|
||||
if [ "$RUSTC_MINOR_VERSION" -gt 51 ]; then # Current `object` MSRV, subject to change
|
||||
echo -e "\n\nTest backtrace-debug builds"
|
||||
pushd lightning
|
||||
cargo test --verbose --color always --features backtrace
|
||||
popd
|
||||
fi
|
||||
|
||||
echo -e "\n\nTesting no-std flags in various combinations"
|
||||
for DIR in lightning lightning-invoice lightning-rapid-gossip-sync; do
|
||||
pushd $DIR
|
||||
cargo test --verbose --color always --no-default-features --features no-std
|
||||
# check if there is a conflict between no-std and the default std feature
|
||||
cargo test --verbose --color always --features no-std
|
||||
# check that things still pass without grind_signatures
|
||||
# note that outbound_commitment_test only runs in this mode, because of hardcoded signature values
|
||||
cargo test --verbose --color always --no-default-features --features std
|
||||
# check if there is a conflict between no-std and the c_bindings cfg
|
||||
RUSTFLAGS="--cfg=c_bindings" cargo test --verbose --color always --no-default-features --features=no-std
|
||||
popd
|
||||
done
|
||||
|
||||
echo -e "\n\nTesting no-std build on a downstream no-std crate"
|
||||
# check no-std compatibility across dependencies
|
||||
pushd no-std-check
|
||||
cargo check --verbose --color always --features lightning-transaction-sync
|
||||
popd
|
||||
|
||||
if [ -f "$(which arm-none-eabi-gcc)" ]; then
|
||||
pushd no-std-check
|
||||
cargo build --target=thumbv7m-none-eabi
|
||||
popd
|
||||
fi
|
||||
|
||||
echo -e "\n\nBuilding and testing Block Sync Clients with features"
|
||||
pushd lightning-block-sync
|
||||
cargo build --verbose --color always --features rest-client
|
||||
cargo test --verbose --color always --features rest-client
|
||||
cargo build --verbose --color always --features rpc-client
|
||||
cargo test --verbose --color always --features rpc-client
|
||||
cargo build --verbose --color always --features rpc-client,rest-client
|
||||
cargo test --verbose --color always --features rpc-client,rest-client
|
||||
cargo build --verbose --color always --features rpc-client,rest-client,tokio
|
||||
cargo test --verbose --color always --features rpc-client,rest-client,tokio
|
||||
popd
|
||||
|
||||
if [[ $RUSTC_MINOR_VERSION -gt 67 && "$HOST_PLATFORM" != *windows* ]]; then
|
||||
echo -e "\n\nBuilding and testing Transaction Sync Clients with features"
|
||||
pushd lightning-transaction-sync
|
||||
cargo build --verbose --color always --features esplora-blocking
|
||||
cargo test --verbose --color always --features esplora-blocking
|
||||
cargo build --verbose --color always --features esplora-async
|
||||
cargo test --verbose --color always --features esplora-async
|
||||
cargo build --verbose --color always --features esplora-async-https
|
||||
cargo test --verbose --color always --features esplora-async-https
|
||||
popd
|
||||
fi
|
||||
|
||||
echo -e "\n\nTest futures builds"
|
||||
pushd lightning-background-processor
|
||||
cargo test --verbose --color always --no-default-features --features futures
|
||||
popd
|
||||
|
||||
if [ "$RUSTC_MINOR_VERSION" -gt 55 ]; then
|
||||
echo -e "\n\nTest Custom Message Macros"
|
||||
pushd lightning-custom-message
|
||||
cargo test --verbose --color always
|
||||
popd
|
||||
fi
|
Loading…
Reference in New Issue
Block a user