From 4c906e0c7b08bc21acf1ca15dbafccaeff2e5ae1 Mon Sep 17 00:00:00 2001 From: Josh Stone Date: Tue, 6 Feb 2024 11:52:05 -0800 Subject: [PATCH 1/4] ci: Switch from bors to merge queues The success job is copied from how rust-lang/miri-test-libstd does it. --- .github/workflows/ci.yaml | 21 ++++++++++++++++----- .github/workflows/pr.yaml | 15 +++++++++++++++ Cargo.toml | 2 +- bors.toml | 10 ---------- 4 files changed, 32 insertions(+), 16 deletions(-) delete mode 100644 bors.toml diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 3b66850..699c13b 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -1,9 +1,5 @@ name: CI -on: - push: - branches: - - staging - - trying +on: merge_group jobs: @@ -48,3 +44,18 @@ jobs: with: components: rustfmt - run: cargo fmt --all --check + + # One job that "summarizes" the success state of this pipeline. This can then be added to branch + # protection, rather than having to add each job separately. + success: + name: Success + runs-on: ubuntu-latest + needs: [test, no_std, fmt] + # Github branch protection is exceedingly silly and treats "jobs skipped because a dependency + # failed" as success. So we have to do some contortions to ensure the job fails if any of its + # dependencies fails. + if: always() # make sure this is never "skipped" + steps: + # Manually check the status of all dependencies. `if: failure()` does not work. + - name: check if any dependency failed + run: jq --exit-status 'all(.result == "success")' <<< '${{ toJson(needs) }}' diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml index d221a73..eb013bb 100644 --- a/.github/workflows/pr.yaml +++ b/.github/workflows/pr.yaml @@ -27,3 +27,18 @@ jobs: with: components: rustfmt - run: cargo fmt --all --check + + # One job that "summarizes" the success state of this pipeline. This can then be added to branch + # protection, rather than having to add each job separately. + success: + name: Success + runs-on: ubuntu-latest + needs: [test, fmt] + # Github branch protection is exceedingly silly and treats "jobs skipped because a dependency + # failed" as success. So we have to do some contortions to ensure the job fails if any of its + # dependencies fails. + if: always() # make sure this is never "skipped" + steps: + # Manually check the status of all dependencies. `if: failure()` does not work. + - name: check if any dependency failed + run: jq --exit-status 'all(.result == "success")' <<< '${{ toJson(needs) }}' diff --git a/Cargo.toml b/Cargo.toml index b017e3f..39de2df 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,7 +10,7 @@ name = "num-complex" repository = "https://github.com/rust-num/num-complex" version = "0.4.4" readme = "README.md" -exclude = ["/bors.toml", "/ci/*", "/.github/*"] +exclude = ["/ci/*", "/.github/*"] edition = "2018" [package.metadata.docs.rs] diff --git a/bors.toml b/bors.toml deleted file mode 100644 index 67d134f..0000000 --- a/bors.toml +++ /dev/null @@ -1,10 +0,0 @@ -status = [ - "Test (1.31.0)", - "Test (1.36.0)", - "Test (1.54.0)", - "Test (stable)", - "Test (beta)", - "Test (nightly)", - "No Std", - "Format", -] From d25fd3d05cf72086bb9d2915b3b8b1a30d09865a Mon Sep 17 00:00:00 2001 From: Josh Stone Date: Tue, 6 Feb 2024 11:52:52 -0800 Subject: [PATCH 2/4] ci: Add a registry cache for git protocol --- .github/workflows/ci.yaml | 5 +++++ .github/workflows/master.yaml | 5 +++++ .github/workflows/pr.yaml | 5 +++++ 3 files changed, 15 insertions(+) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 699c13b..123a7fa 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -18,6 +18,11 @@ jobs: ] steps: - uses: actions/checkout@v3 + - uses: actions/cache@v4 + if: startsWith(matrix.rust, '1') + with: + path: ~/.cargo/registry/index + key: cargo-${{ matrix.rust }}-git-index - uses: dtolnay/rust-toolchain@master with: toolchain: ${{ matrix.rust }} diff --git a/.github/workflows/master.yaml b/.github/workflows/master.yaml index 98e8f8e..6b7a4cb 100644 --- a/.github/workflows/master.yaml +++ b/.github/workflows/master.yaml @@ -16,6 +16,11 @@ jobs: rust: [1.31.0, stable] steps: - uses: actions/checkout@v3 + - uses: actions/cache@v4 + if: startsWith(matrix.rust, '1') + with: + path: ~/.cargo/registry/index + key: cargo-${{ matrix.rust }}-git-index - uses: dtolnay/rust-toolchain@master with: toolchain: ${{ matrix.rust }} diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml index eb013bb..303e503 100644 --- a/.github/workflows/pr.yaml +++ b/.github/workflows/pr.yaml @@ -12,6 +12,11 @@ jobs: rust: [1.31.0, stable] steps: - uses: actions/checkout@v3 + - uses: actions/cache@v4 + if: startsWith(matrix.rust, '1') + with: + path: ~/.cargo/registry/index + key: cargo-${{ matrix.rust }}-git-index - uses: dtolnay/rust-toolchain@master with: toolchain: ${{ matrix.rust }} From be7f21e52aff9476ebf98a75a76cf7ef132f05b1 Mon Sep 17 00:00:00 2001 From: Josh Stone Date: Tue, 6 Feb 2024 12:18:00 -0800 Subject: [PATCH 3/4] ci: dial back serde on older toolchains --- ci/test_full.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/ci/test_full.sh b/ci/test_full.sh index 60e9740..4b29bb7 100755 --- a/ci/test_full.sh +++ b/ci/test_full.sh @@ -40,6 +40,7 @@ check_version 1.43 || cargo update -p libm --precise 0.2.5 # Some crates moved to Rust 1.56 / 2021 check_version 1.56 || ( + cargo update -p serde --precise 1.0.185 cargo update -p quote --precise 1.0.30 cargo update -p proc-macro2 --precise 1.0.65 cargo update -p rkyv --precise 0.7.40 From 758994432ef356361c63ecc52a5172755076403c Mon Sep 17 00:00:00 2001 From: Josh Stone Date: Tue, 6 Feb 2024 12:21:36 -0800 Subject: [PATCH 4/4] ci: upgrade to actions/checkout@v4 --- .github/workflows/ci.yaml | 6 +++--- .github/workflows/master.yaml | 2 +- .github/workflows/pr.yaml | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 123a7fa..779aeb4 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -17,7 +17,7 @@ jobs: nightly ] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: actions/cache@v4 if: startsWith(matrix.rust, '1') with: @@ -34,7 +34,7 @@ jobs: name: No Std runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable with: target: thumbv6m-none-eabi @@ -44,7 +44,7 @@ jobs: name: Format runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@1.62.0 with: components: rustfmt diff --git a/.github/workflows/master.yaml b/.github/workflows/master.yaml index 6b7a4cb..68c4900 100644 --- a/.github/workflows/master.yaml +++ b/.github/workflows/master.yaml @@ -15,7 +15,7 @@ jobs: matrix: rust: [1.31.0, stable] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: actions/cache@v4 if: startsWith(matrix.rust, '1') with: diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml index 303e503..787f908 100644 --- a/.github/workflows/pr.yaml +++ b/.github/workflows/pr.yaml @@ -11,7 +11,7 @@ jobs: matrix: rust: [1.31.0, stable] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: actions/cache@v4 if: startsWith(matrix.rust, '1') with: @@ -27,7 +27,7 @@ jobs: name: Format runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@1.62.0 with: components: rustfmt