ci: switch to dtolnay/rust-toolchain #1362
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
on: | |
push: | |
branches: | |
- 'master' | |
- 'release/*' | |
pull_request: | |
branches: | |
- 'master' | |
- 'release/*' | |
name: CI | |
jobs: | |
build-test: | |
name: Build and test | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
rust: | |
- version: stable | |
clippy: true | |
- version: 1.63.0 # MSRV | |
features: | |
- default | |
- minimal | |
- all-keys | |
- minimal,use-esplora-blocking | |
- key-value-db | |
- electrum | |
- compact_filters | |
- use-esplora-blocking,key-value-db,electrum | |
- compiler | |
- rpc | |
- verify | |
- async-interface | |
- use-esplora-async | |
- sqlite | |
- sqlite-bundled | |
steps: | |
- name: checkout | |
uses: actions/checkout@v4 | |
- name: Generate cache key | |
run: echo "${{ matrix.rust.version }} ${{ matrix.features }}" | tee .cache_key | |
- name: cache | |
uses: actions/cache@v4 | |
with: | |
path: | | |
~/.cargo/registry | |
~/.cargo/git | |
target | |
key: ${{ runner.os }}-cargo-${{ hashFiles('.cache_key') }}-${{ hashFiles('**/Cargo.toml','**/Cargo.lock') }} | |
- name: Install Rust toolchain | |
uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: ${{ matrix.rust.version }} | |
components: clippy | |
- name: Pin dependencies for MSRV | |
if: matrix.rust.version == '1.63.0' | |
run: | | |
cargo update -p tokio --precise "1.38.1" | |
cargo update -p tokio-util --precise "0.7.11" | |
cargo update -p home --precise "0.5.5" | |
cargo update -p regex --precise "1.7.3" | |
cargo update -p security-framework-sys --precise "2.11.1" | |
- name: Build | |
run: cargo build --features bitcoin/std,miniscript/std,${{ matrix.features }} --no-default-features | |
- name: Clippy | |
if: ${{ matrix.rust.clippy }} | |
run: cargo clippy --all-targets --features bitcoin/std,miniscript/std,${{ matrix.features }} --no-default-features -- -D warnings | |
- name: Test | |
run: cargo test --features bitcoin/std,miniscript/std,${{ matrix.features }} --no-default-features | |
test-readme-examples: | |
name: Test README.md examples | |
runs-on: ubuntu-latest | |
steps: | |
- name: checkout | |
uses: actions/checkout@v4 | |
- name: cache | |
uses: actions/cache@v4 | |
with: | |
path: | | |
~/.cargo/registry | |
~/.cargo/git | |
target | |
key: ${{ runner.os }}-cargo-test-md-docs-${{ hashFiles('**/Cargo.toml','**/Cargo.lock') }} | |
- name: Install Rust toolchain | |
uses: dtolnay/rust-toolchain@nightly | |
with: | |
components: clippy | |
- name: Test | |
run: cargo test --features bitcoin/std,miniscript/std,test-md-docs --no-default-features -- doctest::ReadmeDoctests | |
test-blockchains: | |
name: Blockchain ${{ matrix.blockchain.features }} | |
if: false # disabled | |
runs-on: ubuntu-20.04 | |
strategy: | |
fail-fast: false | |
max-parallel: 1 | |
matrix: | |
blockchain: | |
- name: electrum | |
testprefix: blockchain::electrum::test | |
features: test-electrum,verify,bitcoin/std,miniscript/std | |
- name: rpc | |
testprefix: blockchain::rpc::test | |
features: test-rpc,bitcoin/std,miniscript/std | |
- name: rpc-legacy | |
testprefix: blockchain::rpc::test | |
features: test-rpc-legacy,bitcoin/std,miniscript/std | |
- name: esplora | |
testprefix: esplora | |
features: test-esplora,use-esplora-async,verify,bitcoin/std,miniscript/std | |
- name: esplora | |
testprefix: esplora | |
features: test-esplora,use-esplora-blocking,verify,bitcoin/std,miniscript/std | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Cache | |
uses: actions/cache@v4 | |
with: | |
path: | | |
~/.cargo/registry | |
~/.cargo/git | |
target | |
key: ${{ runner.os }}-cargo-${{ github.job }}-${{ hashFiles('**/Cargo.toml','**/Cargo.lock') }} | |
- name: Install Rust toolchain | |
uses: dtolnay/rust-toolchain@stable | |
- name: Test | |
run: cargo test --no-default-features --features bitcoin/std,miniscript/std,${{ matrix.blockchain.features }} ${{ matrix.blockchain.testprefix }}::bdk_blockchain_tests -- --test-threads=1 | |
check-wasm: | |
name: Check WASM | |
runs-on: ubuntu-20.04 | |
env: | |
CC: clang-10 | |
CFLAGS: -I/usr/include | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Cache | |
uses: actions/cache@v4 | |
with: | |
path: | | |
~/.cargo/registry | |
~/.cargo/git | |
target | |
key: ${{ runner.os }}-cargo-${{ github.job }}-${{ hashFiles('**/Cargo.toml','**/Cargo.lock') }} | |
# Install a recent version of clang that supports wasm32 | |
- run: wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - || exit 1 | |
- run: sudo apt-add-repository "deb http://apt.llvm.org/focal/ llvm-toolchain-focal-10 main" || exit 1 | |
- run: sudo apt-get update || exit 1 | |
- run: sudo apt-get install -y libclang-common-10-dev clang-10 libc6-dev-i386 || exit 1 | |
- name: Install Rust toolchain | |
uses: dtolnay/rust-toolchain@stable | |
- name: Add target wasm32 | |
run: rustup target add wasm32-unknown-unknown | |
- name: Check | |
run: cargo check --target wasm32-unknown-unknown --features bitcoin/no-std,miniscript/no-std,async-interface,use-esplora-async,dev-getrandom-wasm --no-default-features | |
fmt: | |
name: Rust fmt | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install Rust toolchain | |
uses: dtolnay/rust-toolchain@stable | |
with: | |
components: rustfmt | |
- name: Check fmt | |
run: cargo fmt --all -- --config format_code_in_doc_comments=true --check | |
test_hardware_wallet: | |
runs-on: ubuntu-20.04 | |
strategy: | |
matrix: | |
rust: | |
- version: stable | |
- version: 1.63.0 # MSRV | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Build simulator image | |
run: docker build -t hwi/ledger_emulator ./ci -f ci/Dockerfile.ledger | |
- name: Run simulator image | |
run: docker run --name simulator --network=host hwi/ledger_emulator & | |
- name: Install Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: '3.9' | |
- name: Install python dependencies | |
run: pip install hwi==2.1.1 protobuf==3.20.1 | |
- name: Install Rust toolchain | |
uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: ${{ matrix.rust.version }} | |
- name: Pin dependencies for MSRV | |
if: matrix.rust.version == '1.63.0' | |
run: | | |
cargo update -p tokio --precise "1.38.1" | |
cargo update -p tokio-util --precise "0.7.11" | |
cargo update -p home --precise "0.5.5" | |
cargo update -p regex --precise "1.7.3" | |
cargo update -p security-framework-sys --precise "2.11.1" | |
- name: Test | |
run: cargo test --features test-hardware-signer |