Skip to content

Commit 9720c90

Browse files
authored
Merge pull request rust-num#61 from cuviper/ci
More CI updates
2 parents d946e96 + 8bfce25 commit 9720c90

File tree

3 files changed

+37
-20
lines changed

3 files changed

+37
-20
lines changed

.github/workflows/ci.yaml

+16-10
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,11 @@ jobs:
1616
]
1717
steps:
1818
- uses: actions/checkout@v4
19+
- uses: actions/cache@v4
20+
if: startsWith(matrix.rust, '1')
21+
with:
22+
path: ~/.cargo/registry/index
23+
key: cargo-${{ matrix.rust }}-git-index
1924
- uses: dtolnay/rust-toolchain@master
2025
with:
2126
toolchain: ${{ matrix.rust }}
@@ -43,16 +48,17 @@ jobs:
4348
components: rustfmt
4449
- run: cargo fmt --all --check
4550

46-
ci-success:
47-
name: Complete
48-
runs-on: ubuntu-latest
49-
needs: [test, no_std, fmt]
50-
steps:
51-
- run: exit 0
52-
ci-failed:
53-
name: Complete
51+
# One job that "summarizes" the success state of this pipeline. This can then be added to branch
52+
# protection, rather than having to add each job separately.
53+
success:
54+
name: Success
5455
runs-on: ubuntu-latest
5556
needs: [test, no_std, fmt]
56-
if: failure()
57+
# Github branch protection is exceedingly silly and treats "jobs skipped because a dependency
58+
# failed" as success. So we have to do some contortions to ensure the job fails if any of its
59+
# dependencies fails.
60+
if: always() # make sure this is never "skipped"
5761
steps:
58-
- run: exit 1
62+
# Manually check the status of all dependencies. `if: failure()` does not work.
63+
- name: check if any dependency failed
64+
run: jq --exit-status 'all(.result == "success")' <<< '${{ toJson(needs) }}'

.github/workflows/master.yaml

+5
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,11 @@ jobs:
1616
rust: [1.31.0, stable]
1717
steps:
1818
- uses: actions/checkout@v4
19+
- uses: actions/cache@v4
20+
if: startsWith(matrix.rust, '1')
21+
with:
22+
path: ~/.cargo/registry/index
23+
key: cargo-${{ matrix.rust }}-git-index
1924
- uses: dtolnay/rust-toolchain@master
2025
with:
2126
toolchain: ${{ matrix.rust }}

.github/workflows/pr.yaml

+16-10
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,11 @@ jobs:
1212
rust: [1.31.0, stable]
1313
steps:
1414
- uses: actions/checkout@v4
15+
- uses: actions/cache@v4
16+
if: startsWith(matrix.rust, '1')
17+
with:
18+
path: ~/.cargo/registry/index
19+
key: cargo-${{ matrix.rust }}-git-index
1520
- uses: dtolnay/rust-toolchain@master
1621
with:
1722
toolchain: ${{ matrix.rust }}
@@ -28,16 +33,17 @@ jobs:
2833
components: rustfmt
2934
- run: cargo fmt --all --check
3035

31-
ci-success:
32-
name: Complete
33-
runs-on: ubuntu-latest
34-
needs: [test, fmt]
35-
steps:
36-
- run: exit 0
37-
ci-failed:
38-
name: Complete
36+
# One job that "summarizes" the success state of this pipeline. This can then be added to branch
37+
# protection, rather than having to add each job separately.
38+
success:
39+
name: Success
3940
runs-on: ubuntu-latest
4041
needs: [test, fmt]
41-
if: failure()
42+
# Github branch protection is exceedingly silly and treats "jobs skipped because a dependency
43+
# failed" as success. So we have to do some contortions to ensure the job fails if any of its
44+
# dependencies fails.
45+
if: always() # make sure this is never "skipped"
4246
steps:
43-
- run: exit 1
47+
# Manually check the status of all dependencies. `if: failure()` does not work.
48+
- name: check if any dependency failed
49+
run: jq --exit-status 'all(.result == "success")' <<< '${{ toJson(needs) }}'

0 commit comments

Comments
 (0)