From 54993cdbd1625d41a25badb6726c3f1dab3f5625 Mon Sep 17 00:00:00 2001 From: "Tobin C. Harding" Date: Thu, 2 May 2024 10:24:52 +1000 Subject: [PATCH] CI: Use script from rust-bitcoin-maintainer-tools We have a CI script in the `rust-bitcoin-maintainer-tools` repository, lets use it. --- .github/workflows/rust.yml | 109 ++++++++++++++++++++++++++++-------- client/contrib/test_vars.sh | 10 ++++ contrib/crates.sh | 4 ++ contrib/pin.sh | 12 ++++ json/Cargo.toml | 1 + json/contrib/test_vars.sh | 10 ++++ 6 files changed, 122 insertions(+), 24 deletions(-) create mode 100644 client/contrib/test_vars.sh create mode 100755 contrib/crates.sh create mode 100755 contrib/pin.sh create mode 100644 json/contrib/test_vars.sh diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index eb4c0f40..8ce92a4a 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -1,37 +1,98 @@ -on: [push, pull_request] +on: + push: + branches: + - master + - 'test-ci/**' + pull_request: name: Continuous integration jobs: - tests: - name: Tests + 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: tcharding/rust-bitcoin-maintainer-tools + ref: 05-02-ci + path: maintainer-tools + - name: "Select toolchain" + uses: dtolnay/rust-toolchain@stable + - name: "Copy lock file" + 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 + runs-on: ubuntu-latest + strategy: + fail-fast: false matrix: - include: - - rust: stable - env: - RUSTFMTCHK: true - - rust: nightly - env: - RUSTFMTCHK: false - - rust: 1.56.1 - env: - RUSTFMTCHK: false + dep: [minimal, recent] steps: - - name: Checkout Crate - uses: actions/checkout@v2 - - name: Checkout Toolchain - uses: actions-rs/toolchain@v1 + - name: "Checkout repo" + uses: actions/checkout@v4 + - name: "Checkout maintainer tools" + uses: actions/checkout@v4 with: - profile: minimal - toolchain: ${{ matrix.rust }} - override: true - - name: Running test script - env: ${{ matrix.env }} - run: ./contrib/test.sh + repository: tcharding/rust-bitcoin-maintainer-tools + ref: 05-02-ci + path: maintainer-tools + - name: "Select toolchain" + uses: dtolnay/rust-toolchain@nightly + - name: "Copy lock file" + 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.56.1 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: tcharding/rust-bitcoin-maintainer-tools + ref: 05-02-ci + path: maintainer-tools + - name: "Select toolchain" + uses: dtolnay/rust-toolchain@stable + with: + toolchain: "1.56.1" + - name: "Copy lock file" + run: cp Cargo-${{ matrix.dep }}.lock Cargo.lock + - name: "Run test script" + run: ./maintainer-tools/ci/run_task.sh msrv + + Format: # 1 jobs, run cargo fmt directly. + name: Format - stable toolchain + runs-on: ubuntu-latest + strategy: + fail-fast: false + steps: + - name: "Checkout repo" + uses: actions/checkout@v4 + - name: "Select toolchain" + uses: dtolnay/rust-toolchain@stable + - name: "Check formatting" + run: cargo fmt --all -- --check - Integration: + Integration: # 1 job for each Bitcoin Core version. name: Integration tests - stable toolchain runs-on: ubuntu-latest strategy: diff --git a/client/contrib/test_vars.sh b/client/contrib/test_vars.sh new file mode 100644 index 00000000..6ff05eab --- /dev/null +++ b/client/contrib/test_vars.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash + +# Test all these features with "std" enabled. +FEATURES_WITH_STD="" + +# Test all these features without "std" enabled. +FEATURES_WITHOUT_STD="verifymessage" + +# Run these examples. +EXAMPLES="retry_client:verifymessage" diff --git a/contrib/crates.sh b/contrib/crates.sh new file mode 100755 index 00000000..88955c6b --- /dev/null +++ b/contrib/crates.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash + +# Crates in this workspace to test (excl. fuzz an integration-tests). +CRATES=("json" "client") diff --git a/contrib/pin.sh b/contrib/pin.sh new file mode 100755 index 00000000..7dc93144 --- /dev/null +++ b/contrib/pin.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env bash +# +# Do pinning as required for current MSRV. + +set -euo pipefail + +cargo update -p tempfile --precise 3.6.0 +cargo update -p cc --precise 1.0.79 +cargo update -p log --precise 0.4.18 +cargo update -p serde_json --precise 1.0.96 +cargo update -p serde --precise 1.0.156 + diff --git a/json/Cargo.toml b/json/Cargo.toml index ebf2f1d0..426503ea 100644 --- a/json/Cargo.toml +++ b/json/Cargo.toml @@ -27,3 +27,4 @@ serde = { version = "1", features = [ "derive" ] } serde_json = "1" bitcoin = { version = "0.31.0", features = ["serde", "rand-std"]} + diff --git a/json/contrib/test_vars.sh b/json/contrib/test_vars.sh new file mode 100644 index 00000000..0c25edc7 --- /dev/null +++ b/json/contrib/test_vars.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash + +# Test all these features with "std" enabled. +FEATURES_WITH_STD="" + +# Test all these features without "std" enabled. +FEATURES_WITHOUT_STD="" + +# Run these examples. +EXAMPLES=""