Repository navigation
205 lines (172 loc) · 6.97 KB
/
Copy pathci.yml
File metadata and controls
205 lines (172 loc) · 6.97 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
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
name: CI
on:
push:
branches: [main]
paths-ignore:
- 'docs/**'
- '**.md'
- 'dev-diary/**'
- 'install.sh'
- '.gitignore'
- '.github/workflows/deploy-docs.yml'
pull_request:
paths-ignore:
- 'docs/**'
- '**.md'
- 'dev-diary/**'
- 'install.sh'
- '.gitignore'
- '.github/workflows/deploy-docs.yml'
env:
CARGO_TERM_COLOR: always
jobs:
build:
runs-on: ubuntu-latest
steps:
# actions/checkout v7.0.1
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
# dtolnay/rust-toolchain master; installs the version pinned in rust-toolchain.toml
- uses: dtolnay/rust-toolchain@6c977a6ca4077a0ceb28ffbe03f59d46e9ac8772
with:
toolchain: "1.97.1"
components: clippy, rustfmt
- name: Format
run: cargo fmt --check
# linux-native-sync-persistent pulls dbus-secret-service, which links
# against libdbus. ubuntu-latest does not ship the headers.
- name: Install dbus headers
run: sudo apt-get update && sudo apt-get install -y libdbus-1-dev pkg-config
- name: Build
run: cargo build --locked
- name: Test
run: cargo test
- name: Clippy
run: cargo clippy -- -D warnings
- name: File size cap (1500 lines)
run: |
over=$(wc -l $(git ls-files '*.rs') | awk '$NF != "total" && $1 > 1500')
if [ -n "$over" ]; then
echo "::error::Files exceed the 1500-line cap:"
echo "$over"
exit 1
fi
# The spec names macOS a target platform, and for months nothing verified
# that. The first run on a Mac found THREE defects the Linux job could not
# see, all of them platform semantics rather than logic:
#
# * macOS `$TMPDIR` lives under `/var -> private/var`, and `secure_path`
# refuses symlinked components — 35 of 212 tests failed.
# * The companion mock detected a cancelled client by a failed write; on
# macOS loopback the remaining frames land in the socket buffer first,
# so the cancellation test failed deterministically.
# * Vault fixtures named directories by `subsec_nanos()`; macOS's realtime
# clock ticks in microseconds, so parallel tests collided.
#
# Do NOT set TMPDIR in this job. The first defect is only reachable through
# the platform's own temp path, so overriding it makes this guard vacuous.
macos:
runs-on: macos-latest
steps:
# actions/checkout v7.0.1
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
# dtolnay/rust-toolchain master; installs the version pinned in rust-toolchain.toml
- uses: dtolnay/rust-toolchain@6c977a6ca4077a0ceb28ffbe03f59d46e9ac8772
with:
toolchain: "1.97.1"
components: clippy
# No dbus here: macOS builds the `apple-native` keyring backend, which
# links system frameworks rather than libdbus (see Cargo.toml's
# per-target keyring dependency).
- name: Build
run: cargo build --locked
- name: Test
run: cargo test
- name: Clippy
run: cargo clippy -- -D warnings
# M8 bootstrap ingester: offline seam tests only (no Google, no Cloud SQL).
ingester:
runs-on: ubuntu-latest
steps:
# actions/checkout v7.0.1
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
# actions/setup-python v5 (pinned by tag SHA)
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065
with:
python-version: "3.13"
- name: Install ingester deps
# Exact pins, mirrored from ingester/pyproject.toml — reproducible installs.
run: pip install ./mooshik-common pytest==9.1.1 mcp==2.1.1 google-genai==2.20.0 google-adk==2.7.1
- name: Test (offline)
run: pytest ingester/tests -q
# M10 news MCP server: offline seam tests only (no Google, no network).
# The shared ground every Python component imports. Runs first in spirit:
# a break here breaks the ingester and the news server together, which is
# the cost of having one copy instead of three.
mooshik-common:
runs-on: ubuntu-latest
steps:
# actions/checkout v7.0.1
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
# actions/setup-python v5 (pinned by tag SHA)
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065
with:
python-version: "3.13"
- name: Install shared package
run: pip install ./mooshik-common pytest==9.1.1
- name: Test (offline)
run: pytest mooshik-common/tests -q
news-mcp:
runs-on: ubuntu-latest
steps:
# actions/checkout v7.0.1
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
# actions/setup-python v5 (pinned by tag SHA)
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065
with:
python-version: "3.13"
- name: Install news MCP deps
# Exact pins, mirrored from mcp-servers/news/pyproject.toml. No
# google-adk: an MCP tool call is one request/response, so this server
# drives google-genai directly rather than running an ADK Runner.
run: pip install ./mooshik-common pytest==9.1.1 mcp==2.1.1 google-genai==2.20.0
- name: Test (offline)
run: pytest mcp-servers/news/tests -q
# M9 measurement harness: offline seam tests only (no Cloud SQL).
measurement:
runs-on: ubuntu-latest
steps:
# actions/checkout v7.0.1
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
# actions/setup-python v5 (pinned by tag SHA)
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065
with:
python-version: "3.13"
- name: Install measurement deps
# Exact pins mirrored from measurement/pyproject.toml. psycopg is
# imported lazily, so the offline suite does not even need it — but
# installing it here keeps the pin honest.
run: pip install pytest==9.1.1 'psycopg[binary]==3.2.13'
- name: Test (offline)
run: pytest measurement/tests -q
artifacts-mcp:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065
with:
python-version: "3.13"
- name: Install artifacts MCP deps
run: pip install ./mooshik-common pytest==9.1.1 mcp==2.1.1 google-genai==2.20.0 google-adk==2.7.1
- name: Test (offline)
run: pytest mcp-servers/artifacts/tests -q
coder-mcp:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065
with:
python-version: "3.13"
- name: Install coder MCP deps
run: pip install ./mooshik-common pytest==9.1.1 mcp==2.1.1
- name: Test (offline)
run: pytest mcp-servers/coder/tests -q