on: [push, pull_request] name: CI jobs: build-test: name: Build and test runs-on: ubuntu-latest strategy: matrix: rust: - version: stable clippy: true - version: 1.57.0 # MSRV features: - --no-default-features - --all-features steps: - name: checkout uses: actions/checkout@v2 - name: Install Rust toolchain uses: actions-rs/toolchain@v1 with: toolchain: ${{ matrix.rust.version }} override: true profile: minimal - name: Rust Cache uses: Swatinem/rust-cache@v2.2.1 - name: Pin dependencies for MSRV if: matrix.rust.version == '1.57.0' run: | cargo update -p log --precise "0.4.18" cargo update -p tempfile --precise "3.6.0" cargo update -p rustls:0.21.8 --precise "0.21.1" cargo update -p rustls:0.20.9 --precise "0.20.8" cargo update -p tokio --precise "1.29.1" cargo update -p tokio-util --precise "0.7.8" cargo update -p flate2 --precise "1.0.26" cargo update -p reqwest --precise "0.11.18" cargo update -p h2 --precise "0.3.20" cargo update -p rustls-webpki:0.100.3 --precise "0.100.1" cargo update -p rustls-webpki:0.101.7 --precise "0.101.1" cargo update -p zip --precise "0.6.2" cargo update -p time --precise "0.3.13" cargo update -p byteorder --precise "1.4.3" cargo update -p webpki --precise "0.22.2" cargo update -p jobserver --precise "0.1.26" cargo update -p os_str_bytes --precise 6.5.1 cargo update -p sct --precise 0.7.0 cargo update -p cc --precise "1.0.81" - name: Build run: cargo build ${{ matrix.features }} - name: Test run: cargo test ${{ matrix.features }} check-no-std: name: Check no_std runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v2 - name: Install Rust toolchain uses: actions-rs/toolchain@v1 with: toolchain: stable override: true profile: minimal # target: "thumbv6m-none-eabi" - name: Rust Cache uses: Swatinem/rust-cache@v2.2.1 - name: Check bdk_chain working-directory: ./crates/chain # TODO "--target thumbv6m-none-eabi" should work but currently does not run: cargo check --no-default-features --features bitcoin/no-std,miniscript/no-std,hashbrown - name: Check bdk working-directory: ./crates/bdk # TODO "--target thumbv6m-none-eabi" should work but currently does not run: cargo check --no-default-features --features bitcoin/no-std,miniscript/no-std,bdk_chain/hashbrown - name: Check esplora working-directory: ./crates/esplora # TODO "--target thumbv6m-none-eabi" should work but currently does not run: cargo check --no-default-features --features bitcoin/no-std,miniscript/no-std,bdk_chain/hashbrown check-wasm: name: Check WASM runs-on: ubuntu-20.04 env: CC: clang-10 CFLAGS: -I/usr/include steps: - name: Checkout uses: actions/checkout@v2 # 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-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: actions-rs/toolchain@v1 with: toolchain: stable override: true profile: minimal target: "wasm32-unknown-unknown" - name: Rust Cache uses: Swatinem/rust-cache@v2.2.1 - name: Check bdk working-directory: ./crates/bdk run: cargo check --target wasm32-unknown-unknown --no-default-features --features bitcoin/no-std,miniscript/no-std,bdk_chain/hashbrown,dev-getrandom-wasm - name: Check esplora working-directory: ./crates/esplora run: cargo check --target wasm32-unknown-unknown --no-default-features --features bitcoin/no-std,miniscript/no-std,bdk_chain/hashbrown,async fmt: name: Rust fmt runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v2 - name: Install Rust toolchain uses: actions-rs/toolchain@v1 with: toolchain: stable override: true profile: minimal components: rustfmt - name: Check fmt run: cargo fmt --all -- --config format_code_in_doc_comments=true --check clippy_check: runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 - uses: actions-rs/toolchain@v1 with: # we pin clippy instead of using "stable" so that our CI doesn't break # at each new cargo release toolchain: "1.67.0" components: clippy override: true - name: Rust Cache uses: Swatinem/rust-cache@v2.2.1 - uses: actions-rs/clippy-check@v1 with: token: ${{ secrets.GITHUB_TOKEN }} args: --all-features --all-targets -- -D warnings