--- # rust-bitcoin CI: If you edit this file please update README.md on: # yamllint disable-line rule:truthy push: branches: - master - 'test-ci/**' pull_request: name: Continuous integration jobs: Prepare: runs-on: ubuntu-latest outputs: nightly_version: ${{ steps.read_toolchain.outputs.nightly_version }} steps: - name: "Checkout repo" uses: actions/checkout@v4 - name: "Read nightly version" id: read_toolchain run: echo "nightly_version=$(cat nightly-version)" >> $GITHUB_OUTPUT Stable: # 2 jobs, one per lock file. name: Test - stable toolchain runs-on: ubuntu-latest strategy: fail-fast: false matrix: dep: [minimal, recent] steps: - name: "Checkout repo" uses: actions/checkout@v4 - name: "Checkout maintainer tools" uses: actions/checkout@v4 with: repository: rust-bitcoin/rust-bitcoin-maintainer-tools ref: f92b2766865ce5327eca5cf72f86ceaa6be58ca4 path: maintainer-tools - name: "Select toolchain" uses: dtolnay/rust-toolchain@stable - name: "Set dependencies" run: cp Cargo-${{ matrix.dep }}.lock Cargo.lock - name: "Run test script" run: ./maintainer-tools/ci/run_task.sh stable Nightly: # 2 jobs, one per lock file. name: Test - nightly toolchain needs: Prepare runs-on: ubuntu-latest strategy: fail-fast: false matrix: dep: [minimal, recent] steps: - name: "Checkout repo" uses: actions/checkout@v4 - name: "Checkout maintainer tools" uses: actions/checkout@v4 with: repository: rust-bitcoin/rust-bitcoin-maintainer-tools ref: f92b2766865ce5327eca5cf72f86ceaa6be58ca4 path: maintainer-tools - name: "Select toolchain" uses: dtolnay/rust-toolchain@v1 with: toolchain: ${{ needs.Prepare.outputs.nightly_version }} - name: "Set dependencies" run: cp Cargo-${{ matrix.dep }}.lock Cargo.lock - name: "Run test script" run: ./maintainer-tools/ci/run_task.sh nightly MSRV: # 2 jobs, one per lock file. name: Test - 1.63.0 toolchain runs-on: ubuntu-latest strategy: fail-fast: false matrix: dep: [minimal, recent] steps: - name: "Checkout repo" uses: actions/checkout@v4 - name: "Checkout maintainer tools" uses: actions/checkout@v4 with: repository: rust-bitcoin/rust-bitcoin-maintainer-tools ref: f92b2766865ce5327eca5cf72f86ceaa6be58ca4 path: maintainer-tools - name: "Select toolchain" uses: dtolnay/rust-toolchain@stable with: toolchain: "1.63.0" - name: "Set dependencies" run: cp Cargo-${{ matrix.dep }}.lock Cargo.lock - name: "Run test script" run: ./maintainer-tools/ci/run_task.sh msrv Lint: name: Lint - nightly toolchain needs: Prepare runs-on: ubuntu-latest strategy: fail-fast: false matrix: dep: [recent] steps: - name: "Checkout repo" uses: actions/checkout@v4 - name: "Checkout maintainer tools" uses: actions/checkout@v4 with: repository: rust-bitcoin/rust-bitcoin-maintainer-tools ref: f92b2766865ce5327eca5cf72f86ceaa6be58ca4 path: maintainer-tools - name: "Select toolchain" uses: dtolnay/rust-toolchain@v1 with: toolchain: ${{ needs.Prepare.outputs.nightly_version }} - name: Install clippy run: rustup component add clippy - name: "Set dependencies" run: cp Cargo-${{ matrix.dep }}.lock Cargo.lock - name: "Run test script" run: ./maintainer-tools/ci/run_task.sh lint Docs: name: Docs - stable toolchain runs-on: ubuntu-latest strategy: fail-fast: false matrix: dep: [recent] steps: - name: "Checkout repo" uses: actions/checkout@v4 - name: "Checkout maintainer tools" uses: actions/checkout@v4 with: repository: rust-bitcoin/rust-bitcoin-maintainer-tools ref: f92b2766865ce5327eca5cf72f86ceaa6be58ca4 path: maintainer-tools - name: "Select toolchain" uses: dtolnay/rust-toolchain@stable - name: "Set dependencies" run: cp Cargo-${{ matrix.dep }}.lock Cargo.lock - name: "Run test script" run: ./maintainer-tools/ci/run_task.sh docs Docsrs: name: Docs - nightly toolchain needs: Prepare runs-on: ubuntu-latest strategy: fail-fast: false matrix: dep: [recent] steps: - name: "Checkout repo" uses: actions/checkout@v4 - name: "Checkout maintainer tools" uses: actions/checkout@v4 with: repository: rust-bitcoin/rust-bitcoin-maintainer-tools ref: f92b2766865ce5327eca5cf72f86ceaa6be58ca4 path: maintainer-tools - name: "Select toolchain" uses: dtolnay/rust-toolchain@v1 with: toolchain: ${{ needs.Prepare.outputs.nightly_version }} - name: "Set dependencies" run: cp Cargo-${{ matrix.dep }}.lock Cargo.lock - name: "Run test script" run: ./maintainer-tools/ci/run_task.sh docsrs Bench: name: Bench - nightly toolchain needs: Prepare runs-on: ubuntu-latest strategy: fail-fast: false matrix: dep: [recent] steps: - name: "Checkout repo" uses: actions/checkout@v4 - name: "Checkout maintainer tools" uses: actions/checkout@v4 with: repository: rust-bitcoin/rust-bitcoin-maintainer-tools ref: f92b2766865ce5327eca5cf72f86ceaa6be58ca4 path: maintainer-tools - name: "Select toolchain" uses: dtolnay/rust-toolchain@v1 with: toolchain: ${{ needs.Prepare.outputs.nightly_version }} - name: "Set dependencies" run: cp Cargo-${{ matrix.dep }}.lock Cargo.lock - name: "Run test script" run: ./maintainer-tools/ci/run_task.sh bench Format: name: Format - nightly toolchain runs-on: ubuntu-latest strategy: fail-fast: false steps: - name: "Checkout repo" uses: actions/checkout@v4 - name: "Select toolchain" uses: dtolnay/rust-toolchain@nightly - name: "Install rustfmt" run: rustup component add rustfmt - name: "Check formatting" run: cargo +nightly fmt --all -- --check ASAN: # 1 job, run sanitizer from script. name: ASAN - nightly toolchain needs: Prepare runs-on: ubuntu-latest strategy: fail-fast: false matrix: dep: [recent] steps: - name: "Checkout repo" uses: actions/checkout@v4 - name: "Select toolchain" uses: dtolnay/rust-toolchain@v1 with: toolchain: ${{ needs.Prepare.outputs.nightly_version }} - name: "Install rust-src" run: rustup component add rust-src - name: "Install xargo" run: cargo install xargo - name: "Set dependencies" run: cp Cargo-${{ matrix.dep }}.lock Cargo.lock - name: "Run sanitizer script" run: ./contrib/sanitizer.sh Arch32bit: name: Test 32-bit version runs-on: ubuntu-latest steps: - name: "Checkout repo" uses: actions/checkout@v3 - name: "Checkout toolchain" uses: dtolnay/rust-toolchain@stable - 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 WASM: name: WASM - stable toolchain runs-on: ubuntu-latest strategy: fail-fast: false # Note we do not use the recent lock file for wasm testing. steps: - name: "Checkout repo" uses: actions/checkout@v4 - name: "Select toolchain" uses: dtolnay/rust-toolchain@stable - name: "Run wasm script" run: ./contrib/wasm.sh NoStd: # 1 job, run no-std test from script. name: no-std - nightly toolchain needs: Prepare runs-on: ubuntu-latest strategy: fail-fast: false matrix: dep: [recent] steps: - name: "Checkout repo" uses: actions/checkout@v4 - name: "Select toolchain" uses: dtolnay/rust-toolchain@v1 with: toolchain: ${{ needs.Prepare.outputs.nightly_version }} - name: "Install src" run: rustup component add rust-src - name: "Install xargo" run: cargo install xargo - name: "Set dependencies" run: cp Cargo-${{ matrix.dep }}.lock Cargo.lock - name: "Run no-std-test script" run: ./contrib/no-std.sh