Skip to content

Commit c21aea7

Browse files
authored
Merge pull request #6328 from Jiloc/feat/add-cargo-hack-check-ci
feat: add `cargo hack check` to ci
2 parents 0f12a72 + ed151c6 commit c21aea7

File tree

5 files changed

+148
-30
lines changed

5 files changed

+148
-30
lines changed
Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
name: Cargo Hack Check
2+
3+
on:
4+
workflow_call:
5+
6+
env:
7+
RUST_BACKTRACE: full
8+
9+
concurrency:
10+
group: cargo-hack-check-${{ github.head_ref || github.ref || github.run_id }}
11+
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
12+
13+
jobs:
14+
# Setup job to prepare common dependencies
15+
setup:
16+
name: Setup
17+
runs-on: ubuntu-latest
18+
outputs:
19+
rust-toolchain: ${{ steps.toolchain.outputs.rust-toolchain }}
20+
steps:
21+
- name: Checkout
22+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
23+
with:
24+
persist-credentials: false
25+
26+
- name: Get Rust toolchain
27+
id: toolchain
28+
run: echo "rust-toolchain=$(cat ./rust-toolchain)" >> $GITHUB_OUTPUT
29+
30+
# Native targets (Windows/Linux)
31+
native-targets:
32+
name: All Crates (Windows/Linux)
33+
runs-on: ubuntu-latest
34+
needs: setup
35+
steps:
36+
- name: Checkout
37+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
38+
with:
39+
persist-credentials: false
40+
41+
- name: Setup Rust with Cache
42+
uses: actions-rust-lang/setup-rust-toolchain@11df97af8e8102fd60b60a77dfbf58d40cd843b8 # v1.10.1
43+
with:
44+
toolchain: ${{ needs.setup.outputs.rust-toolchain }}
45+
target: x86_64-pc-windows-gnu,x86_64-unknown-linux-gnu
46+
cache: true
47+
cache-key: cargo-hack-native-${{ needs.setup.outputs.rust-toolchain }}-${{ hashFiles('**/Cargo.lock') }}
48+
49+
- name: Install cargo-hack
50+
uses: taiki-e/install-action@2383334cf567d78771fc7d89b6b3802ef1412cf6 # v2.56.8
51+
with:
52+
tool: cargo-hack
53+
54+
- name: Install Windows cross-compilation tools
55+
run: |
56+
sudo apt-get update
57+
sudo apt-get install -y gcc-mingw-w64-x86-64
58+
59+
- name: Run cargo hack check
60+
run: |
61+
cargo hack check \
62+
--all \
63+
--each-feature \
64+
--no-dev-deps \
65+
--exclude-features=wasm-deterministic,wasm-web \
66+
--target x86_64-pc-windows-gnu \
67+
--target x86_64-unknown-linux-gnu
68+
69+
# WASM targets - separate cache since dependencies differ
70+
wasm-targets:
71+
name: ${{ matrix.name }}
72+
runs-on: ubuntu-latest
73+
needs: setup
74+
strategy:
75+
fail-fast: false
76+
matrix:
77+
include:
78+
- name: "Clarity & Stacks-Common WASM Web"
79+
command: |
80+
cargo hack check \
81+
-p clarity-serialization \
82+
-p stacks-common \
83+
--each-feature \
84+
--no-dev-deps \
85+
--exclude-features=default,rusqlite,ctrlc-handler,wasm-deterministic \
86+
--features=wasm-web
87+
88+
- name: "Clarity & Stacks-Common WASM Deterministic"
89+
command: |
90+
cargo hack check \
91+
-p clarity-serialization \
92+
-p stacks-common \
93+
--each-feature \
94+
--no-dev-deps \
95+
--include-features=wasm-deterministic,slog_json \
96+
--features=wasm-deterministic
97+
98+
steps:
99+
- name: Checkout
100+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
101+
with:
102+
persist-credentials: false
103+
104+
- name: Setup Rust with Cache
105+
uses: actions-rust-lang/setup-rust-toolchain@11df97af8e8102fd60b60a77dfbf58d40cd843b8 # v1.10.1
106+
with:
107+
toolchain: ${{ needs.setup.outputs.rust-toolchain }}
108+
target: wasm32-unknown-unknown
109+
cache: true
110+
cache-key: cargo-hack-wasm-${{ matrix.name }}-${{ needs.setup.outputs.rust-toolchain }}-${{ hashFiles('**/Cargo.lock') }}
111+
112+
- name: Install cargo-hack
113+
uses: taiki-e/install-action@2383334cf567d78771fc7d89b6b3802ef1412cf6 # v2.56.8
114+
with:
115+
tool: cargo-hack
116+
117+
- name: Run cargo hack check
118+
run: ${{ matrix.command }}

.github/workflows/ci.yml

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ jobs:
9393
needs:
9494
- rustfmt
9595
- check-release
96-
secrets: inherit
96+
secrets: inherit
9797
uses: ./.github/workflows/github-release.yml
9898
with:
9999
node_tag: ${{ needs.check-release.outputs.node_tag }}
@@ -145,6 +145,27 @@ jobs:
145145
- check-release
146146
uses: ./.github/workflows/stacks-core-tests.yml
147147

148+
## Validate constants dumped by stacks-inspect
149+
##
150+
## Runs when:
151+
## - it is a node or signer-only release run
152+
## or any of:
153+
## - this workflow is called manually
154+
## - PR is opened
155+
## - PR added to merge queue
156+
constants-check:
157+
if: |
158+
needs.check-release.outputs.is_node_release == 'true' ||
159+
needs.check-release.outputs.is_signer_release == 'true' ||
160+
github.event_name == 'workflow_dispatch' ||
161+
github.event_name == 'pull_request' ||
162+
github.event_name == 'merge_group'
163+
name: Constants Check
164+
needs:
165+
- rustfmt
166+
- check-release
167+
uses: ./.github/workflows/constants-check.yml
168+
148169
## Checks to run on built binaries
149170
##
150171
## Runs when:
@@ -153,18 +174,18 @@ jobs:
153174
## - this workflow is called manually
154175
## - PR is opened
155176
## - PR added to merge queue
156-
stacks-core-build-tests:
177+
cargo-hack-check:
157178
if: |
158179
needs.check-release.outputs.is_node_release == 'true' ||
159180
needs.check-release.outputs.is_signer_release == 'true' ||
160181
github.event_name == 'workflow_dispatch' ||
161182
github.event_name == 'pull_request' ||
162183
github.event_name == 'merge_group'
163-
name: Stacks Core Build Tests
184+
name: Cargo Hack Check
164185
needs:
165186
- rustfmt
166187
- check-release
167-
uses: ./.github/workflows/core-build-tests.yml
188+
uses: ./.github/workflows/cargo-hack-check.yml
168189

169190
## Checks to run on built binaries
170191
##

.github/workflows/core-build-tests.yml renamed to .github/workflows/constants-check.yml

Lines changed: 2 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
name: Core build tests
1+
name: Constants Check
22

33
# Only run when:
44
# - PRs are (re)opened against develop branch
55
on:
66
workflow_call:
7-
7+
88
jobs:
99
check-consts:
1010
name: Check the constants from stacks-inspect
@@ -26,27 +26,6 @@ jobs:
2626
with:
2727
toolchain: ${{ env.RUST_TOOLCHAIN }}
2828

29-
## run cargo check steps
30-
- name: Cargo Check
31-
id: cargo_check
32-
run: |
33-
cargo check
34-
35-
- name: Cargo Check (monitoring_prom)
36-
id: cargo_check_prom
37-
run: |
38-
cargo check --features monitoring_prom
39-
40-
- name: Cargo Check (clarity)
41-
id: cargo_check_clarity
42-
run: |
43-
cargo check -p clarity --no-default-features
44-
45-
- name: Cargo Check (stacks-common)
46-
id: cargo_check_stacks-common
47-
run: |
48-
cargo check -p stacks-common --no-default-features
49-
5029
- name: Dump constants JSON
5130
id: consts-dump
5231
run: |

clarity/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ default = ["rusqlite"]
5151
developer-mode = ["stacks_common/developer-mode"]
5252
slog_json = ["stacks_common/slog_json"]
5353
rusqlite = ["stacks_common/rusqlite", "dep:rusqlite"]
54-
testing = ["rstest", "rstest_reuse"]
54+
testing = ["rstest", "rstest_reuse", "rusqlite"]
5555
devtools = []
5656
rollback_value_check = []
5757
disable-costs = []

stacks-node/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,11 +70,11 @@ name = "stacks-events"
7070
path = "src/stacks_events.rs"
7171

7272
[features]
73-
monitoring_prom = ["stacks/monitoring_prom", "stacks-signer/monitoring_prom", "async-h1", "async-std", "http-types"]
73+
monitoring_prom = ["stacks/monitoring_prom", "async-h1", "async-std", "http-types"]
7474
slog_json = ["stacks/slog_json", "stacks-common/slog_json", "clarity/slog_json"]
7575
prod-genesis-chainstate = []
7676
default = []
77-
testing = ["stacks-common/testing", "stacks/testing", "clarity/testing", "stacks-signer/testing"]
77+
testing = ["stacks-common/testing", "stacks/testing", "clarity/testing"]
7878
build-signer-v3-1-0-0-13 = ["signer_v3_1_0_0_13", "libsigner_v3_1_0_0_13", "stacks_v3_1_00_13", "stacks_common_v3_1_00_13"]
7979

8080
[package.metadata.pinny]

0 commit comments

Comments
 (0)