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.7 --precise "0.21.1" cargo update -p rustls:0.20.9 --precise "0.20.8" cargo update -p tokio:1.32.0 --precise "1.29.1" cargo update -p flate2:1.0.27 --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 --precise "0.100.1" - 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