66 CARGO_TERM_COLOR : always
77 RUST_BACKTRACE : 1
88 # https://releases.rs/docs/1.83.0/ release date
9- NIGHTLY_TOOLCHAIN : nightly-2024-11-28
9+ NIGHTLY_TOOLCHAIN : nightly-2025-02-20
1010
1111# Cancel in progress workflows on pull_requests.
1212# https://docs.github.com/en/actions/using-jobs/using-concurrency#example-using-a-fallback-value
@@ -15,46 +15,6 @@ concurrency:
1515 cancel-in-progress : true
1616
1717jobs :
18- # TODO move to a release ci
19- # build:
20- # runs-on: ubuntu-latest
21-
22- # steps:
23- # - name: Checkout
24- # uses: actions/checkout@v4
25- # with:
26- # path: snarkos-test
27-
28- # - name: Checkout snarkOS
29- # uses: actions/checkout@v4
30- # with:
31- # repository: AleoNet/snarkOS
32- # path: snarkos
33-
34- # - name: Checkout snarkVM
35- # uses: actions/checkout@v4
36- # with:
37- # repository: AleoNet/snarkVM
38- # path: snarkvm
39-
40- # - name: Use mold linker
41- # uses: rui314/setup-mold@v1
42-
43- # - name: Install nightly and cranelift
44- # uses: dtolnay/rust-toolchain@nightly
45- # with:
46- # toolchain: nightly
47- # components: rustc-codegen-cranelift-preview
48-
49- # - uses: Swatinem/rust-cache@v2
50- # with:
51- # key: cache-v1
52-
53- # - name: Build
54- # env:
55- # RUSTFLAGS: -Zcodegen-backend=cranelift -Zbuild-std=std,panic_abort -Zbuild-std-features=panic_immediate_abort
56- # run: cargo +${{ env.NIGHTLY_TOOLCHAIN }} build --verbose
57-
5818 fmt :
5919 runs-on : ubuntu-latest
6020
@@ -71,12 +31,63 @@ jobs:
7131 - name : 📋 Format Check
7232 run : cargo +${{ env.NIGHTLY_TOOLCHAIN }} fmt -- --check
7333
74- test :
34+ filter :
7535 runs-on : ubuntu-latest
76- permissions : read-all
77- # env:
78- # RUSTFLAGS: -Zcodegen-backend=cranelift
36+ outputs :
37+ top_toml : ${{ steps.filter.outputs.top_toml }}
38+ aot : ${{ steps.filter.outputs.aot }}
39+ checkpoint : ${{ steps.filter.outputs.checkpoint }}
40+ common : ${{ steps.filter.outputs.common }}
41+ snops : ${{ steps.filter.outputs.snops }}
42+ agent : ${{ steps.filter.outputs.agent }}
43+ scli : ${{ steps.filter.outputs.scli }}
44+ steps :
45+ - uses : actions/checkout@v4
46+ - id : filter
47+ uses : dorny/paths-filter@v3
48+ with :
49+ base : ${{ github.ref_name }}
50+ filters : |
51+ top_toml:
52+ - 'Cargo.toml'
53+ aot:
54+ - 'crates/aot/**/*'
55+ checkpoint:
56+ - 'crates/checkpoint/**/*'
57+ snops:
58+ - 'crates/controlplane/**/*'
59+ agent:
60+ - 'crates/agent/**/*'
61+ scli:
62+ - 'crates/cli/**/*'
63+ common:
64+ - 'crates/common/**/*'
7965
66+ crate-checks :
67+ runs-on : ubuntu-latest
68+ needs : [filter]
69+ env :
70+ TOP_TOML : ${{ needs.filter.outputs.top_toml }}
71+ AOT : ${{ needs.filter.outputs.aot }}
72+ CHECKPOINT : ${{ needs.filter.outputs.checkpoint }}
73+ COMMON : ${{ needs.filter.outputs.common }}
74+ SNOPS : ${{ needs.filter.outputs.snops }}
75+ AGENT : ${{ needs.filter.outputs.agent }}
76+ SCLI : ${{ needs.filter.outputs.scli }}
77+ strategy :
78+ fail-fast : false
79+ matrix :
80+ crate :
81+ - { name: "aot", package: "snarkos-aot", dir: "crates/aot" }
82+ - {
83+ name : " checkpoint" ,
84+ package : " snops-checkpoint" ,
85+ dir : " crates/checkpoint" ,
86+ }
87+ - { name: "common", package: "snops-common", dir: "crates/common" }
88+ - { name: "snops", package: "snops", dir: "crates/controlplane" }
89+ - { name: "agent", package: "snops-agent", dir: "crates/agent" }
90+ - { name: "snops-cli", package: "snops-cli", dir: "crates/cli" }
8091 steps :
8192 - name : 📥 Checkout
8293 uses : actions/checkout@v4
@@ -99,74 +110,42 @@ jobs:
99110 - name : ☁️ Install Nextest
100111 uses : taiki-e/install-action@nextest
101112
102- # - name: ☁️ Install cargo-machete
103- # run: cargo install cargo-machete
113+ - name : ☁️ Install cargo-machete
114+ uses : taiki-e/ install-action@ cargo-machete
104115
105- # - name: 📋 Clippy Check
106- # env:
107- # RUSTFLAGS: -Zcodegen-backend=cranelift
108- # run: cargo +${{ env.NIGHTLY_TOOLCHAIN }} clippy --all --all-targets -- -D warnings
116+ - name : ☁️ Install cargo-binstall
117+ uses : taiki-e/install-action@cargo-binstall
109118
110- # - name: 📋 Check Unused Deps
111- # if: always()
112- # env:
113- # RUSTFLAGS: -Zcodegen-backend=cranelift
114- # run: cargo machete
119+ - name : ☁️ Install cargo-msrv
120+ run : cargo binstall --version 0.18.1 --no-confirm cargo-msrv --force
115121
116- - uses : dorny/paths-filter@v3
117- id : changes
118- with :
119- base : ${{ github.ref_name }}
120- filters : |
121- top_toml:
122- - 'Cargo.toml'
123- aot:
124- - 'crates/aot/**/*'
125- checkpoint:
126- - 'crates/checkpoint/**/*'
127- control_plane:
128- - 'crates/controlplane/**/*'
129- agent:
130- - 'crates/agent/**/*'
131- scli:
132- - 'crates/cli/**/*'
133- common:
134- - 'crates/common/**/*'
122+ - name : ☁️ Install cargo-hack
123+ uses : taiki-e/install-action@cargo-hack
124+
125+ - name : ☁️ Install cargo-minimal-versions
126+ uses : taiki-e/install-action@cargo-minimal-versions
127+
128+ - name : 🧪 Test ${{ matrix.crate.name }}
129+ if : always() && ${{ env.TOP_TOML == 'true' || (matrix.crate.name == 'aot' && env.AOT == 'true') || (matrix.crate.name == 'checkpoint' && env.CHECKPOINT == 'true') || (matrix.crate.name == 'common' && env.COMMON == 'true') || (matrix.crate.name == 'snops' && env.CONTROL_PLANE == 'true') || (matrix.crate.name == 'agent' && env.AGENT == 'true') || (matrix.crate.name == 'scli' && env.SCLI == 'true') }}
130+ env :
131+ RUSTFLAGS : ${{ (matrix.crate.name == 'aot' || matrix.crate.name == 'checkpoint' || matrix.crate.name == 'common' || matrix.crate.name == 'snops') && '-Zcodegen-backend=cranelift' || '' }}
132+ run : cargo +${{ env.NIGHTLY_TOOLCHAIN }} nextest run -p ${{ matrix.crate.package }} --verbose --fail-fast --all-features --no-tests=warn
133+
134+ - name : 🚯 Unused Deps ${{ matrix.crate.name }}
135+ if : always() && ${{ env.TOP_TOML == 'true' || (matrix.crate.name == 'aot' && env.AOT == 'true') || (matrix.crate.name == 'checkpoint' && env.CHECKPOINT == 'true') || (matrix.crate.name == 'common' && env.COMMON == 'true') || (matrix.crate.name == 'snops' && env.CONTROL_PLANE == 'true') || (matrix.crate.name == 'agent' && env.AGENT == 'true') || (matrix.crate.name == 'scli' && env.SCLI == 'true') }}
136+ run : cd ${{ matrix.crate.dir }} && cargo +${{ env.NIGHTLY_TOOLCHAIN }} machete
137+
138+ - name : 🦀 MSRV ${{ matrix.crate.name }}
139+ if : always() && ${{ env.TOP_TOML == 'true' || (matrix.crate.name == 'aot' && env.AOT == 'true') || (matrix.crate.name == 'checkpoint' && env.CHECKPOINT == 'true') || (matrix.crate.name == 'common' && env.COMMON == 'true') || (matrix.crate.name == 'snops' && env.CONTROL_PLANE == 'true') || (matrix.crate.name == 'agent' && env.AGENT == 'true') || (matrix.crate.name == 'scli' && env.SCLI == 'true') }}
140+ run : cargo msrv --manifest-path ${{ matrix.crate.dir }}/Cargo.toml verify --output-format minimal
141+
142+ - name : 🕵️ Minimal Versions ${{ matrix.crate.name }}
143+ if : always() && ${{ env.TOP_TOML == 'true' || (matrix.crate.name == 'aot' && env.AOT == 'true') || (matrix.crate.name == 'checkpoint' && env.CHECKPOINT == 'true') || (matrix.crate.name == 'common' && env.COMMON == 'true') || (matrix.crate.name == 'snops' && env.CONTROL_PLANE == 'true') || (matrix.crate.name == 'agent' && env.AGENT == 'true') || (matrix.crate.name == 'scli' && env.SCLI == 'true') }}
144+ continue-on-error : true
145+ run : cargo +${{ env.NIGHTLY_TOOLCHAIN }} minimal-versions check -p ${{ matrix.crate.package }}
135146
136- - name : 🧪 Test All
137- if : steps.changes.outputs.top_toml == 'true'
138- run : cargo +${{ env.NIGHTLY_TOOLCHAIN }} nextest run --all --verbose --fail-fast --all-features --exclude snops-agent --exclude xtask --no-tests=warn
139-
140- - name : 🧪 Test Aot
141- if : steps.changes.outputs.aot == 'true' && steps.changes.outputs.top_toml == 'false'
142- run : cargo +${{ env.NIGHTLY_TOOLCHAIN }} nextest run -p snarkos-aot --verbose --fail-fast --all-features --no-tests=warn
143-
144- - name : 🧪 Test Checkpoint
145- # env:
146- # RUSTFLAGS: -Zcodegen-backend=cranelift
147- if : steps.changes.outputs.checkpoint == 'true' && steps.changes.outputs.top_toml == 'false'
148- run : cargo +${{ env.NIGHTLY_TOOLCHAIN }} nextest run -p snops-checkpoint --verbose --fail-fast --all-features --no-tests=warn
149-
150- - name : 🧪 Test Common
151- # env:
152- # RUSTFLAGS: -Zcodegen-backend=cranelift
153- if : steps.changes.outputs.common == 'true' && steps.changes.outputs.top_toml == 'false'
154- run : cargo +${{ env.NIGHTLY_TOOLCHAIN }} nextest run -p snops-common --verbose --fail-fast --all-features --no-tests=warn
155-
156- - name : 🧪 Test Control Plane
157- # env:
158- # RUSTFLAGS: -Zcodegen-backend=cranelift
159- if : (steps.changes.outputs.control_plane == 'true' || steps.changes.outputs.common == 'true') && steps.changes.outputs.top_toml == 'false'
160- run : cargo +${{ env.NIGHTLY_TOOLCHAIN }} nextest run -p snops --verbose --fail-fast --all-features --no-tests=warn
161-
162- - name : 🧪 Test Agent
163- # env:
164- # RUSTFLAGS: ""
165- if : (steps.changes.outputs.agent == 'true' || steps.changes.outputs.common == 'true')
166- run : cargo +${{ env.NIGHTLY_TOOLCHAIN }} nextest run -p snops-agent --verbose --fail-fast --all-features --no-tests=warn
167-
168- - name : 🧪 Test Scli
169- # env:
170- # RUSTFLAGS: -Zcodegen-backend=cranelift
171- if : (steps.changes.outputs.scli == 'true' || steps.changes.outputs.common == 'true') && steps.changes.outputs.top_toml == 'false'
172- run : cargo +${{ env.NIGHTLY_TOOLCHAIN }} nextest run -p snops-cli --verbose --fail-fast --all-features --no-tests=warn
147+ - name : 📋 Clippy ${{ matrix.crate.name }}
148+ if : always() && ${{ env.TOP_TOML == 'true' || (matrix.crate.name == 'aot' && env.AOT == 'true') || (matrix.crate.name == 'checkpoint' && env.CHECKPOINT == 'true') || (matrix.crate.name == 'common' && env.COMMON == 'true') || (matrix.crate.name == 'snops' && env.CONTROL_PLANE == 'true') || (matrix.crate.name == 'agent' && env.AGENT == 'true') || (matrix.crate.name == 'scli' && env.SCLI == 'true') }}
149+ env :
150+ RUSTFLAGS : ${{ (matrix.crate.name == 'aot' || matrix.crate.name == 'checkpoint' || matrix.crate.name == 'common' || matrix.crate.name == 'snops') && '-Zcodegen-backend=cranelift' || '' }}
151+ run : cargo +${{ env.NIGHTLY_TOOLCHAIN }} clippy -p ${{ matrix.crate.package }} --all-targets --locked -- -D warnings
0 commit comments