Repository navigation
139 lines (112 loc) · 3.46 KB
/
Copy pathci.yml
File metadata and controls
139 lines (112 loc) · 3.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
name: CI — Build & Verify
on:
push:
branches: [main]
pull_request:
branches: [main]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
backend:
name: Backend — Rust
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
toolchain: "1.97"
components: clippy, rustfmt
- name: Cache Rust build
uses: Swatinem/rust-cache@v2
with:
workspaces: backend
shared-key: backend-${{ hashFiles('backend/Cargo.lock') }}
- name: cargo fmt --check
working-directory: backend
run: cargo fmt --all -- --check
- name: cargo check --workspace
working-directory: backend
run: cargo check --workspace --all-targets
- name: cargo clippy --workspace
working-directory: backend
run: cargo clippy --workspace --all-targets -- -D warnings
- name: Install cargo-nextest
uses: taiki-e/install-action@nextest
- name: cargo nextest run --workspace
working-directory: backend
run: cargo nextest run --workspace
env:
RUST_BACKTRACE: 1
- name: Install cargo-deny
run: cargo install cargo-deny 2>/dev/null || true
- name: cargo deny check
working-directory: backend
run: cargo deny check advisories bans licenses sources
frontend:
name: Frontend — Node/pnpm
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: 10.8.1
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: "20"
cache: pnpm
cache-dependency-path: frontend/pnpm-lock.yaml
- name: Install dependencies
working-directory: frontend
run: pnpm install --frozen-lockfile
- name: Biome lint + format check
working-directory: frontend
run: pnpm lint
- name: TypeScript check (tsc --noEmit)
working-directory: frontend
run: pnpm -r check
- name: Vitest unit tests
working-directory: frontend
run: pnpm -r test
env:
CI: true
build-verification:
name: Build — Full verification
needs: [backend, frontend]
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
toolchain: "1.97"
- name: Cache Rust build
uses: Swatinem/rust-cache@v2
with:
workspaces: backend
shared-key: backend-build-${{ hashFiles('backend/Cargo.lock') }}
- name: cargo build --release (backend binary)
working-directory: backend
run: cargo build --release --package sb-server
- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: 10.8.1
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: "20"
cache: pnpm
cache-dependency-path: frontend/pnpm-lock.yaml
- name: Install dependencies
working-directory: frontend
run: pnpm install --frozen-lockfile
- name: pnpm build (all apps + shared)
working-directory: frontend
run: pnpm build