Skip to content

Commit 5f5b91e

Browse files
committed
test: wire systemd manager into root qa
1 parent 4beba8e commit 5f5b91e

5 files changed

Lines changed: 87 additions & 0 deletions

File tree

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,10 @@
4747
"test:pwsh:linux:full": "docker compose -f docker-compose.pester.yml run --rm pester-full",
4848
"test:pwsh:linux:build": "docker compose -f docker-compose.pester.yml build",
4949
"test:fnos": "vitest run --config ./linux/fnos/fnos-mount-manager/vitest.config.ts",
50+
"test:systemd-service-manager": "vitest run --config ./scripts/bash/systemd-service-manager/vitest.config.ts",
5051
"test:pwsh:all": "pnpm exec concurrently --group --names host,linux --prefix-colors blue,magenta --success all \"pnpm test:pwsh:full:assertions\" \"pnpm test:pwsh:linux:full\"",
5152
"qa:fnos": "pnpm run test:fnos",
53+
"qa:systemd-service-manager": "pnpm run test:systemd-service-manager",
5254
"qa:pwsh": "pnpm format:pwsh && pnpm test:pwsh:qa",
5355
"qa": "node ./scripts/qa.mjs changed",
5456
"qa:all": "node ./scripts/qa.mjs all",

scripts/bash/README.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,3 +169,21 @@ ALIYUN_SECURITY_TOKEN=your-sts-token
169169
- Windows 原生执行体验
170170

171171
如果需求升级到这些范围,建议直接改用 Python 或官方 SDK,而不是继续把 Bash 逻辑堆厚。
172+
173+
## systemd-service-manager
174+
175+
用于按项目目录管理 systemd `service` / `timer`,适合“像 pm2 一样做基础管理,但最终运行时仍由 systemd 承担”的场景。
176+
177+
### 当前能力
178+
179+
- `init` 生成 `deploy/systemd/` 项目骨架
180+
- `install` 渲染并安装 service / timer unit
181+
- `start``stop``restart``status``logs`
182+
- `enable``disable`
183+
- 默认 `system` scope,也支持 `user` scope
184+
185+
### 测试
186+
187+
```bash
188+
pnpm run test:systemd-service-manager
189+
```

scripts/bash/systemd-service-manager/README.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,16 @@ bash scripts/bash/systemd-service-manager/build.sh
1212

1313
- `bin/systemd-service-manager`
1414
- `scripts/bash/systemd-service-manager.sh`
15+
16+
## Test
17+
18+
```bash
19+
pnpm run test:systemd-service-manager
20+
```
21+
22+
## Quality Gate
23+
24+
```bash
25+
pnpm run qa:systemd-service-manager
26+
pnpm qa
27+
```

scripts/qa-turbo.mjs

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -351,6 +351,34 @@ function runRootFnosQa(modeValue, sinceRef) {
351351
runCommand('root-qa-fnos-changed', pnpmCommand.command, pnpmCommand.args)
352352
}
353353

354+
function runRootSystemdServiceManagerQa(modeValue, sinceRef) {
355+
const pathspecs = ['scripts/bash/systemd-service-manager', 'package.json']
356+
357+
if (modeValue === 'all') {
358+
console.log('[turbo:qa] run root qa:systemd-service-manager (all)')
359+
const pnpmCommand = buildPnpmCommand(['run', 'qa:systemd-service-manager'])
360+
runCommand(
361+
'root-qa-systemd-service-manager-all',
362+
pnpmCommand.command,
363+
pnpmCommand.args,
364+
)
365+
return
366+
}
367+
368+
if (!hasPathChanges(pathspecs, sinceRef)) {
369+
console.log('[turbo:qa] skip root qa:systemd-service-manager (no changes)')
370+
return
371+
}
372+
373+
console.log('[turbo:qa] run root qa:systemd-service-manager (changed)')
374+
const pnpmCommand = buildPnpmCommand(['run', 'qa:systemd-service-manager'])
375+
runCommand(
376+
'root-qa-systemd-service-manager-changed',
377+
pnpmCommand.command,
378+
pnpmCommand.args,
379+
)
380+
}
381+
354382
const sinceRef = mode === 'changed' ? resolveSinceRef() : null
355383

356384
if (mode === 'changed' && sinceRef) {
@@ -365,6 +393,7 @@ try {
365393
runWorkspaceQa(mode, sinceRef)
366394
runRootPwshQa(mode, sinceRef)
367395
runRootFnosQa(mode, sinceRef)
396+
runRootSystemdServiceManagerQa(mode, sinceRef)
368397
console.log('[turbo:qa] done')
369398
} catch (error) {
370399
if (error instanceof CommandFailedError) {

scripts/qa.mjs

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -395,6 +395,30 @@ function runRootFnosQa(modeValue, sinceRef) {
395395
runPnpm('root-qa-fnos-changed', ['run', 'qa:fnos'])
396396
}
397397

398+
function runRootSystemdServiceManagerQa(modeValue, sinceRef) {
399+
const pathspecs = ['scripts/bash/systemd-service-manager', 'package.json']
400+
401+
if (modeValue === 'all') {
402+
console.log('[qa] run root qa:systemd-service-manager (all)')
403+
runPnpm('root-qa-systemd-service-manager-all', [
404+
'run',
405+
'qa:systemd-service-manager',
406+
])
407+
return
408+
}
409+
410+
if (!hasPathChanges(pathspecs, sinceRef)) {
411+
console.log('[qa] skip root qa:systemd-service-manager (no changes)')
412+
return
413+
}
414+
415+
console.log('[qa] run root qa:systemd-service-manager (changed)')
416+
runPnpm('root-qa-systemd-service-manager-changed', [
417+
'run',
418+
'qa:systemd-service-manager',
419+
])
420+
}
421+
398422
const sinceRef = mode === 'changed' ? resolveSinceRef() : null
399423

400424
if (mode === 'changed' && sinceRef) {
@@ -409,6 +433,7 @@ try {
409433
runWorkspaceQa(mode, sinceRef)
410434
runRootPwshQa(mode, sinceRef)
411435
runRootFnosQa(mode, sinceRef)
436+
runRootSystemdServiceManagerQa(mode, sinceRef)
412437
console.log('[qa] done')
413438
} catch (error) {
414439
if (error instanceof CommandFailedError) {

0 commit comments

Comments
 (0)