ci: Rework github actions script
Rework the github actions script in line with `rust-bitcoin`, notably: - Use dtonlay runner - Split jobs up by toolchain - Add Arch32bit job - Add Cross test job - Run linter as part of the test script - Test docs build using stable toolchain and nightly toolchain
This commit is contained in:
parent
d41bcc81d3
commit
3c1b576f47
|
@ -3,64 +3,111 @@ on: [push, pull_request]
|
||||||
name: Continuous integration
|
name: Continuous integration
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
Nightly:
|
Stable:
|
||||||
name: Nightly - ASan + Bench + Docs
|
name: Test - stable toolchain
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Checkout Crate
|
|
||||||
uses: actions/checkout@v2
|
|
||||||
- name: Install clang for ASan
|
|
||||||
run: sudo apt-get install -y clang
|
|
||||||
- name: Checkout Toolchain
|
|
||||||
uses: actions-rs/toolchain@v1
|
|
||||||
with:
|
|
||||||
profile: minimal
|
|
||||||
toolchain: nightly
|
|
||||||
override: true
|
|
||||||
components: rust-src
|
|
||||||
- name: Check formatting
|
|
||||||
env:
|
|
||||||
DO_FMT: true
|
|
||||||
run: ./contrib/test.sh
|
|
||||||
- name: Running address sanitizer
|
|
||||||
env:
|
|
||||||
DO_ASAN: true
|
|
||||||
run: ./contrib/test.sh
|
|
||||||
- name: Running benchmarks
|
|
||||||
env:
|
|
||||||
DO_BENCH: true
|
|
||||||
run: ./contrib/test.sh
|
|
||||||
- name: Building docs
|
|
||||||
env:
|
|
||||||
DO_DOCS: true
|
|
||||||
run: ./contrib/test.sh
|
|
||||||
|
|
||||||
Tests:
|
|
||||||
name: Tests
|
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
fail-fast: false
|
||||||
rust: [stable, beta, nightly, 1.48.0]
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout Crate
|
- name: Checkout Crate
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v3
|
||||||
- name: Checkout Toolchain
|
- name: Checkout Toolchain
|
||||||
uses: actions-rs/toolchain@v1
|
# https://github.com/dtolnay/rust-toolchain
|
||||||
with:
|
uses: dtolnay/rust-toolchain@stable
|
||||||
profile: minimal
|
- name: Running test script
|
||||||
toolchain: ${{ matrix.rust }}
|
env:
|
||||||
override: true
|
DO_LINT: true
|
||||||
- name: Running cargo
|
DO_DOCS: true
|
||||||
|
DO_FEATURE_MATRIX: true
|
||||||
|
run: ./contrib/test.sh
|
||||||
|
|
||||||
|
Beta:
|
||||||
|
name: Test - beta toolchain
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
steps:
|
||||||
|
- name: Checkout Crate
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
- name: Checkout Toolchain
|
||||||
|
uses: dtolnay/rust-toolchain@beta
|
||||||
|
- name: Running test script
|
||||||
|
run: ./contrib/test.sh
|
||||||
|
|
||||||
|
Nightly:
|
||||||
|
name: Test - nightly toolchain
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
steps:
|
||||||
|
- name: Checkout Crate
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
- name: Checkout Toolchain
|
||||||
|
uses: dtolnay/rust-toolchain@nightly
|
||||||
|
- name: Install src
|
||||||
|
run: rustup component add rust-src
|
||||||
|
- name: Running test script
|
||||||
|
env:
|
||||||
|
DO_FMT: true
|
||||||
|
DO_BENCH: true
|
||||||
|
DO_DOCSRS: true
|
||||||
|
DO_ASAN: true
|
||||||
|
run: ./contrib/test.sh
|
||||||
|
|
||||||
|
MSRV:
|
||||||
|
name: Test - 1.48.0 toolchain
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
steps:
|
||||||
|
- name: Checkout Crate
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
- name: Checkout Toolchain
|
||||||
|
uses: dtolnay/rust-toolchain@1.48.0
|
||||||
|
- name: Running test script
|
||||||
env:
|
env:
|
||||||
DO_FEATURE_MATRIX: true
|
DO_FEATURE_MATRIX: true
|
||||||
run: ./contrib/test.sh
|
run: ./contrib/test.sh
|
||||||
|
|
||||||
|
Arch32bit:
|
||||||
|
name: Test 32-bit version
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout Crate
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
- name: Checkout Toolchain
|
||||||
|
uses: dtolnay/rust-toolchain@stable
|
||||||
|
- name: Add architecture i386
|
||||||
|
run: sudo dpkg --add-architecture i386
|
||||||
|
- name: Install i686 gcc
|
||||||
|
run: sudo apt-get update -y && sudo apt-get install -y gcc-multilib
|
||||||
|
- name: Install target
|
||||||
|
run: rustup target add i686-unknown-linux-gnu
|
||||||
|
- name: Run test on i686
|
||||||
|
run: cargo test --target i686-unknown-linux-gnu
|
||||||
|
|
||||||
|
Cross:
|
||||||
|
name: Cross test
|
||||||
|
if: ${{ !github.event.act }}
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout Crate
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
- name: Checkout Toolchain
|
||||||
|
uses: dtolnay/rust-toolchain@stable
|
||||||
|
- name: Install target
|
||||||
|
run: rustup target add s390x-unknown-linux-gnu
|
||||||
|
- name: install cross
|
||||||
|
run: cargo install cross --locked
|
||||||
|
- name: run cross test
|
||||||
|
run: cross test --target s390x-unknown-linux-gnu
|
||||||
|
|
||||||
WASM:
|
WASM:
|
||||||
name: WASM
|
name: WASM
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout Crate
|
- name: Checkout Crate
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v3
|
||||||
- name: Install clang
|
- name: Install clang
|
||||||
run: sudo apt-get install -y clang
|
run: sudo apt-get install -y clang
|
||||||
- name: Checkout Toolchain
|
- name: Checkout Toolchain
|
||||||
|
@ -69,19 +116,3 @@ jobs:
|
||||||
env:
|
env:
|
||||||
DO_WASM: true
|
DO_WASM: true
|
||||||
run: ./contrib/test.sh
|
run: ./contrib/test.sh
|
||||||
|
|
||||||
Clippy:
|
|
||||||
name: Clippy
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v2
|
|
||||||
- uses: actions-rs/toolchain@v1
|
|
||||||
with:
|
|
||||||
profile: minimal
|
|
||||||
toolchain: stable
|
|
||||||
override: true
|
|
||||||
- run: rustup component add clippy
|
|
||||||
- uses: actions-rs/cargo@v1
|
|
||||||
with:
|
|
||||||
command: clippy
|
|
||||||
args: --features=rand-std,recovery,lowmemory,global-context --all-targets -- -D warnings
|
|
||||||
|
|
|
@ -58,9 +58,23 @@ if [ "$DO_FEATURE_MATRIX" = true ]; then
|
||||||
cargo run --example generate_keys --features=rand-std
|
cargo run --example generate_keys --features=rand-std
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ "$DO_LINT" = true ]
|
||||||
|
then
|
||||||
|
cargo clippy --all-features --all-targets -- -D warnings
|
||||||
|
cargo clippy --example sign_verify --features=bitcoin-hashes-std -- -D warnings
|
||||||
|
cargo clippy --example sign_verify_recovery --features=recovery,bitcoin-hashes-std -- -D warnings
|
||||||
|
cargo clippy --example generate_keys --features=rand-std -- -D warnings
|
||||||
|
fi
|
||||||
|
|
||||||
# Build the docs if told to (this only works with the nightly toolchain)
|
# Build the docs if told to (this only works with the nightly toolchain)
|
||||||
|
if [ "$DO_DOCSRS" = true ]; then
|
||||||
|
RUSTDOCFLAGS="--cfg docsrs -D warnings -D rustdoc::broken-intra-doc-links" cargo +nightly doc --all-features
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Build the docs with a stable toolchain, in unison with the DO_DOCSRS command
|
||||||
|
# above this checks that we feature guarded docs imports correctly.
|
||||||
if [ "$DO_DOCS" = true ]; then
|
if [ "$DO_DOCS" = true ]; then
|
||||||
RUSTDOCFLAGS="--cfg docsrs" cargo rustdoc --features="$FEATURES" -- -D rustdoc::broken-intra-doc-links -D warnings || exit 1
|
RUSTDOCFLAGS="-D warnings" cargo +stable doc --all-features
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Webassembly stuff
|
# Webassembly stuff
|
||||||
|
|
Loading…
Reference in New Issue