Skip to content

Commit 393ad1a

Browse files
committed
ci(build): add ci workflow
Add GitHub Actions CI and adjust cargo config and mock-subtensor websocket/jsonrpc handling.
1 parent 422aaad commit 393ad1a

6 files changed

Lines changed: 94 additions & 14 deletions

File tree

.cargo/config.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[build]
22
# Use all available CPU cores for compilation.
33
# Override with CARGO_BUILD_JOBS if needed.
4-
jobs = "default"
4+
# Omit explicit jobs to allow Cargo defaults.
55

66
[env]
77
# Optional flags gated by environment variables (opt-in).

.github/workflows/ci.yml

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,24 @@ concurrency:
2929

3030
jobs:
3131
# All Rust jobs run in parallel, sharing cache from previous runs
32+
build:
33+
name: Build
34+
runs-on: platform-runner
35+
steps:
36+
- uses: actions/checkout@v4
37+
- uses: dtolnay/rust-toolchain@stable
38+
- name: Install build dependencies
39+
run: sudo apt-get update && sudo apt-get install -y bash ripgrep
40+
steps:
41+
- uses: actions/checkout@v4
42+
- uses: dtolnay/rust-toolchain@stable
43+
- name: Install build dependencies
44+
run: sudo apt-get update && sudo apt-get install -y bash ripgrep
45+
steps:
46+
- uses: actions/checkout@v4
47+
- uses: dtolnay/rust-toolchain@stable
48+
- name: Install build dependencies
49+
run: sudo apt-get update && sudo apt-get install -y bash ripgrep
3250
build:
3351
name: Build
3452
runs-on: platform-runner
@@ -42,6 +60,14 @@ jobs:
4260
shared-key: "platform-ci"
4361
- run: cargo build --release
4462

63+
clippy:
64+
name: Clippy
65+
runs-on: platform-runner
66+
steps:
67+
- uses: actions/checkout@v4
68+
- uses: dtolnay/rust-toolchain@stable
69+
- name: Install build dependencies
70+
run: sudo apt-get update && sudo apt-get install -y bash ripgrep
4571
clippy:
4672
name: Clippy
4773
runs-on: platform-runner
@@ -56,6 +82,14 @@ jobs:
5682
save-if: false
5783
- run: cargo clippy --all-targets --workspace -- -W clippy::all
5884

85+
test:
86+
name: Test
87+
runs-on: platform-runner
88+
steps:
89+
- uses: actions/checkout@v4
90+
- uses: dtolnay/rust-toolchain@stable
91+
- name: Install build dependencies
92+
run: sudo apt-get update && sudo apt-get install -y bash ripgrep
5993
test:
6094
name: Test
6195
runs-on: platform-runner
@@ -73,6 +107,15 @@ jobs:
73107
- name: Run tests
74108
run: cargo nextest run --workspace -E 'not (test(/live/) | test(/integration/) | test(/e2e/))'
75109

110+
integration:
111+
name: Integration
112+
runs-on: platform-runner
113+
needs: [build, clippy, test]
114+
steps:
115+
- uses: actions/checkout@v4
116+
- uses: dtolnay/rust-toolchain@stable
117+
- name: Install build dependencies
118+
run: sudo apt-get update && sudo apt-get install -y bash ripgrep
76119
integration:
77120
name: Integration
78121
runs-on: platform-runner
@@ -92,6 +135,15 @@ jobs:
92135
- name: Run integration tests
93136
run: cargo nextest run --workspace -E 'test(/integration/)'
94137

138+
e2e:
139+
name: E2E
140+
runs-on: platform-runner
141+
needs: [build, clippy, test]
142+
steps:
143+
- uses: actions/checkout@v4
144+
- uses: dtolnay/rust-toolchain@stable
145+
- name: Install build dependencies
146+
run: sudo apt-get update && sudo apt-get install -y bash ripgrep
95147
e2e:
96148
name: E2E
97149
runs-on: platform-runner
@@ -113,6 +165,10 @@ jobs:
113165

114166
# Coverage runs in a separate job with its own concurrency group
115167
# This prevents coverage deployment from being cancelled by new commits
168+
coverage:
169+
name: Coverage
170+
runs-on: platform-runner
171+
if: github.ref == 'refs/heads/main'
116172
coverage:
117173
name: Coverage
118174
runs-on: platform-runner
@@ -174,13 +230,29 @@ jobs:
174230
keep_files: true
175231

176232
# Docker only runs after build, clippy and test pass
233+
docker:
234+
name: Docker
235+
runs-on: platform-runner
236+
needs: [build, clippy, test]
177237
docker:
178238
name: Docker
179239
runs-on: platform-runner
180240
needs: [build, clippy, test]
181241
permissions:
182242
contents: read
183243
packages: write
244+
steps:
245+
- uses: actions/checkout@v4
246+
- name: Ensure Docker available
247+
run: scripts/install-docker.sh
248+
- name: Install build dependencies
249+
run: sudo apt-get update && sudo apt-get install -y bash ripgrep
250+
steps:
251+
- uses: actions/checkout@v4
252+
- name: Ensure Docker available
253+
run: scripts/install-docker.sh
254+
- name: Install build dependencies
255+
run: sudo apt-get update && sudo apt-get install -y bash ripgrep
184256
steps:
185257
- uses: actions/checkout@v4
186258
- name: Ensure Docker available
@@ -217,6 +289,10 @@ jobs:
217289
cache-to: type=gha,mode=max
218290

219291
# Release only on tags, after all checks pass
292+
release:
293+
name: Release
294+
runs-on: platform-runner
295+
needs: [build, clippy, test, docker]
220296
release:
221297
name: Release
222298
runs-on: platform-runner
@@ -242,6 +318,9 @@ jobs:
242318
files: platform-${{ github.ref_name }}-linux-x86_64.tar.gz
243319
generate_release_notes: true
244320

321+
nightly:
322+
name: Nightly Build & Test
323+
runs-on: platform-runner
245324
nightly:
246325
name: Nightly Build & Test
247326
runs-on: platform-runner
@@ -251,6 +330,11 @@ jobs:
251330
PLATFORM_RUST_NIGHTLY: "1"
252331
PLATFORM_NIGHTLY_RUSTFLAGS: "-Z threads=0"
253332
PLATFORM_FAST_LINKER_RUSTFLAGS: "-C link-arg=-fuse-ld=mold"
333+
steps:
334+
- uses: actions/checkout@v4
335+
- uses: dtolnay/rust-toolchain@nightly
336+
- name: Install build dependencies
337+
run: sudo apt-get update && sudo apt-get install -y bash ripgrep
254338
steps:
255339
- uses: actions/checkout@v4
256340
- uses: dtolnay/rust-toolchain@nightly
@@ -270,6 +354,9 @@ jobs:
270354
- name: Nightly tests
271355
run: cargo nextest run --workspace -E 'not (test(/live/) | test(/integration/) | test(/e2e/))'
272356

357+
docker-nightly:
358+
name: Docker Nightly Build
359+
runs-on: platform-runner
273360
docker-nightly:
274361
name: Docker Nightly Build
275362
runs-on: platform-runner

bins/mock-subtensor/src/chain.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -269,7 +269,7 @@ mod tests {
269269
fn test_block_hash_lookup() {
270270
let mut chain = Chain::new(&test_config());
271271
let block = chain.produce_block();
272-
let hash_hex = format!("0x{}", hex::encode(&block.hash));
272+
let hash_hex = format!("0x{}", hex::encode(block.hash));
273273

274274
assert!(chain.get_block_by_hash(&hash_hex).is_some());
275275
assert_eq!(chain.get_block_by_hash(&hash_hex).unwrap().header.number, 1);

bins/mock-subtensor/src/jsonrpc.rs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -869,8 +869,6 @@ impl RpcHandler {
869869
#[cfg(test)]
870870
mod tests {
871871
use super::*;
872-
use crate::chain::Chain;
873-
use crate::state::MockMetagraph;
874872

875873
fn test_state() -> Arc<AppState> {
876874
let config = crate::Config {
@@ -931,7 +929,7 @@ mod tests {
931929
let resp = handler.handle(req);
932930
assert!(resp.result.is_some());
933931
let result = resp.result.unwrap();
934-
assert!(result.as_array().unwrap().len() > 0);
932+
assert!(!result.as_array().unwrap().is_empty());
935933
}
936934

937935
#[test]

bins/mock-subtensor/src/websocket.rs

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -399,35 +399,31 @@ mod tests {
399399
let server = WsServer::new(state);
400400
let _router = server.router();
401401

402-
// Router created successfully
403-
assert!(true);
402+
let _ = _router;
404403
}
405404

406405
#[tokio::test]
407406
async fn test_health_handler() {
408407
let state = test_state();
409408
let _response = health_handler(State(state)).await;
410409

411-
// Handler returns successfully (response is impl IntoResponse)
412-
assert!(true);
410+
let _ = _response;
413411
}
414412

415413
#[tokio::test]
416414
async fn test_get_state_handler() {
417415
let state = test_state();
418416
let _response = get_state_handler(State(state)).await;
419417

420-
// Handler returns successfully
421-
assert!(true);
418+
let _ = _response;
422419
}
423420

424421
#[tokio::test]
425422
async fn test_get_metagraph_handler() {
426423
let state = test_state();
427424
let _response = get_metagraph_handler(State(state)).await;
428425

429-
// Handler returns successfully
430-
assert!(true);
426+
let _ = _response;
431427
}
432428

433429
#[tokio::test]

crates/bittensor-integration/src/client.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,6 @@ impl SubtensorClient {
133133
None
134134
}
135135

136-
#[cfg(test)]
137136
pub fn set_uid_overrides(&mut self, entries: Vec<(String, u16)>) {
138137
self.uid_overrides = entries.into_iter().collect();
139138
}

0 commit comments

Comments
 (0)