on: [push, pull_request] name: Continuous integration jobs: Tests: name: Tests runs-on: ubuntu-latest strategy: fail-fast: false matrix: include: - rust: stable env: DO_COV: true DO_LINT: true AS_DEPENDENCY: true DO_NO_STD: true DO_FEATURE_MATRIX: true # Currently only used in hashes crate. DO_SCHEMARS_TESTS: true # Currently only used in hashes crate. - rust: beta env: AS_DEPENDENCY: true DO_NO_STD: true - rust: nightly env: DO_BENCH: true AS_DEPENDENCY: true DO_NO_STD: true DO_DOCS: true - rust: 1.41.1 env: AS_DEPENDENCY: true - rust: 1.47 env: AS_DEPENDENCY: true DO_NO_STD: true steps: - name: Checkout Crate uses: actions/checkout@v2 - name: Checkout Toolchain uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: ${{ matrix.rust }} override: true - name: Running test script env: ${{ matrix.env }} run: ./contrib/test.sh Arch32bit: name: Testing 32-bit version runs-on: ubuntu-latest steps: - name: Checkout Crate uses: actions/checkout@v2 - name: Checkout Toolchain uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: stable override: true - 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 testing if: ${{ !github.event.act }} runs-on: ubuntu-latest steps: - name: Checkout Crate uses: actions/checkout@v2 - name: Checkout Toolchain uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: stable override: true - name: Install target run: rustup target add s390x-unknown-linux-gnu - name: install cross run: cargo install cross - name: run cross test run: cross test --target s390x-unknown-linux-gnu Embedded: runs-on: ubuntu-latest env: RUSTFLAGS: "-C link-arg=-Tlink.x" CARGO_TARGET_THUMBV7M_NONE_EABI_RUNNER: "qemu-system-arm -cpu cortex-m3 -machine mps2-an385 -nographic -semihosting-config enable=on,target=native -kernel" steps: - name: Checkout uses: actions/checkout@v2 - name: Set up QEMU run: sudo apt update && sudo apt install -y qemu-system-arm gcc-arm-none-eabi - name: Checkout Toolchain uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: nightly override: true components: rust-src target: thumbv7m-none-eabi - name: Run bitcoin/embedded run: cd bitcoin/embedded && cargo run --target thumbv7m-none-eabi - name: Run hashes/embedded no alloc run: cd hashes/embedded && cargo run --target thumbv7m-none-eabi - name: Run hashes/embedded with alloc run: cd hashes/embedded && cargo run --target thumbv7m-none-eabi --features=alloc ASAN: name: Address sanitizer # hashes crate only. runs-on: ubuntu-latest steps: - name: Checkout Crate uses: actions/checkout@v2 - name: Checkout Toolchain uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: nightly override: true components: rust-src - name: Running address sanitizer env: DO_ASAN: true run: ./hashes/contrib/test.sh WASM: name: WebAssembly Build # hashes crate only. runs-on: ubuntu-latest steps: - name: Checkout Crate uses: actions/checkout@v2 - name: Checkout Toolchain uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: stable override: true - name: Running WASM build env: DO_WASM: true run: ./hashes/contrib/test.sh