on: [push, pull_request] name: CI jobs: build-test: name: Build and test runs-on: ubuntu-latest strategy: matrix: rust: - version: 1.67.0 # STABLE clippy: true - version: 1.57.0 # MSRV features: - --no-default-features - --all-features - --features=default steps: - name: checkout uses: actions/checkout@v2 - name: Generate cache key run: echo "${{ matrix.rust.version }} ${{ matrix.features }}" | tee .cache_key - name: cache uses: actions/cache@v2 with: path: | ~/.cargo/registry ~/.cargo/git target key: ${{ runner.os }}-cargo-${{ hashFiles('.cache_key') }}-${{ hashFiles('**/Cargo.toml','**/Cargo.lock') }} - name: Install Rust toolchain uses: actions-rs/toolchain@v1 with: toolchain: ${{ matrix.rust.version }} override: true components: clippy profile: minimal - name: Build run: cargo build ${{ matrix.features }} - name: Clippy if: ${{ matrix.rust.clippy }} run: cargo clippy --all-targets ${{ matrix.features }} -- -D warnings - name: Test run: cargo test ${{ matrix.features }} 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 - name: Cache uses: actions/cache@v2 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: actions-rs/toolchain@v1 with: toolchain: "1.65.0" override: true profile: minimal target: "wasm32-unknown-unknown" - name: Check bdk working-directory: ./crates/bdk run: cargo check --target wasm32-unknown-unknown --features dev-getrandom-wasm - name: Check esplora working-directory: ./crates/esplora run: cargo check --target wasm32-unknown-unknown --features async --no-default-features 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: "1.65.0" override: true profile: minimal components: rustfmt - name: Check fmt run: cargo fmt --all -- --config format_code_in_doc_comments=true --check