@numa-tech/numa 1.12.7 → 1.12.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +139 -43
- package/dist/ai-registry/bridge.d.ts +8 -0
- package/dist/ai-registry/bridge.js +63 -0
- package/dist/ai-registry/bridge.js.map +1 -0
- package/dist/ai-registry/client.d.ts +29 -3
- package/dist/ai-registry/client.js +112 -8
- package/dist/ai-registry/client.js.map +1 -1
- package/dist/ai-registry/commands.js +367 -112
- package/dist/ai-registry/commands.js.map +1 -1
- package/dist/ai-registry/errors.d.ts +2 -1
- package/dist/ai-registry/errors.js +12 -1
- package/dist/ai-registry/errors.js.map +1 -1
- package/dist/ai-registry/mcp-installer.d.ts +1 -0
- package/dist/ai-registry/mcp-installer.js +4 -0
- package/dist/ai-registry/mcp-installer.js.map +1 -1
- package/dist/ai-registry/namespace.d.ts +17 -0
- package/dist/ai-registry/namespace.js +53 -0
- package/dist/ai-registry/namespace.js.map +1 -0
- package/dist/ai-registry/schemas.d.ts +127 -2
- package/dist/ai-registry/schemas.js +42 -2
- package/dist/ai-registry/schemas.js.map +1 -1
- package/dist/ai-registry/sync.d.ts +23 -0
- package/dist/ai-registry/sync.js +276 -0
- package/dist/ai-registry/sync.js.map +1 -0
- package/dist/ai-registry/tui.d.ts +2 -0
- package/dist/ai-registry/tui.js +140 -0
- package/dist/ai-registry/tui.js.map +1 -0
- package/dist/ai-registry/workspace.d.ts +191 -0
- package/dist/ai-registry/workspace.js +167 -0
- package/dist/ai-registry/workspace.js.map +1 -0
- package/dist/app-config.d.ts +3 -2
- package/dist/app-config.js +5 -3
- package/dist/app-config.js.map +1 -1
- package/dist/cli.js +25 -3
- package/dist/cli.js.map +1 -1
- package/dist/command-catalog.d.ts +1 -0
- package/dist/command-catalog.js +97 -10
- package/dist/command-catalog.js.map +1 -1
- package/dist/config-page.js +2 -0
- package/dist/config-page.js.map +1 -1
- package/dist/config.d.ts +1 -0
- package/dist/config.js +1 -0
- package/dist/config.js.map +1 -1
- package/dist/pipeline/client.d.ts +10 -6
- package/dist/pipeline/client.js +7 -4
- package/dist/pipeline/client.js.map +1 -1
- package/dist/pipeline/commands.d.ts +5 -1
- package/dist/pipeline/commands.js +89 -18
- package/dist/pipeline/commands.js.map +1 -1
- package/dist/pipeline/schemas.d.ts +7 -7
- package/dist/pipeline/schemas.js +2 -2
- package/dist/pipeline/schemas.js.map +1 -1
- package/dist/platform-profile.d.ts +8 -2
- package/dist/platform-profile.js +5 -2
- package/dist/platform-profile.js.map +1 -1
- package/dist/web-console-page.d.ts +3 -3
- package/dist/web-console-page.js +75 -20
- package/dist/web-console-page.js.map +1 -1
- package/dist/web-console.d.ts +1 -1
- package/dist/web-console.js +46 -0
- package/dist/web-console.js.map +1 -1
- package/package.json +8 -5
- package/skills/numa-ai-registry/SKILL.md +25 -19
- package/skills/numa-ai-registry/evals/evals.json +10 -10
- package/skills/numa-ai-registry/references/command-contract.md +41 -6
package/dist/command-catalog.js
CHANGED
|
@@ -73,6 +73,24 @@ export const COMMAND_CATALOG = [
|
|
|
73
73
|
access: "authenticated",
|
|
74
74
|
examples: ["numa registry tui"]
|
|
75
75
|
},
|
|
76
|
+
{
|
|
77
|
+
command: "registry capabilities",
|
|
78
|
+
summary: "列出授权 namespace、环境、动作、Router 和客户端适配器",
|
|
79
|
+
access: "authenticated",
|
|
80
|
+
examples: ["numa registry capabilities --json"]
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
command: "registry init --namespace <key>",
|
|
84
|
+
summary: "创建项目级 .numa/registry.json",
|
|
85
|
+
access: "authenticated",
|
|
86
|
+
examples: ["numa registry init --namespace team-ai --json"]
|
|
87
|
+
},
|
|
88
|
+
...["lock", "sync", "upgrade"].map((action) => ({
|
|
89
|
+
command: `registry ${action}`,
|
|
90
|
+
summary: action === "lock" ? "把项目 Registry 标签解析为精确版本锁" : action === "sync" ? "严格按 lock 同步安装且不隐式升级" : "显式升级跟踪标签并更新 lock",
|
|
91
|
+
access: "authenticated",
|
|
92
|
+
examples: [`numa registry ${action} --json`]
|
|
93
|
+
})),
|
|
76
94
|
{
|
|
77
95
|
command: "registry instances list",
|
|
78
96
|
summary: "列出数据库中的 Nacos 实例与凭据配置状态,不返回 secret",
|
|
@@ -81,13 +99,13 @@ export const COMMAND_CATALOG = [
|
|
|
81
99
|
},
|
|
82
100
|
{
|
|
83
101
|
command: "registry instances create <json>",
|
|
84
|
-
summary: "创建 Nacos
|
|
102
|
+
summary: "创建 Nacos 实例及 namespace-scoped READER/MAINTAINER 双凭据",
|
|
85
103
|
access: "authenticated",
|
|
86
104
|
examples: ["numa registry instances create ./nacos-instance.json --json"]
|
|
87
105
|
},
|
|
88
106
|
{
|
|
89
107
|
command: "registry instances update <id-or-code> <json>",
|
|
90
|
-
summary: "
|
|
108
|
+
summary: "以乐观锁更新实例与只写式双凭据;省略凭据表示保留",
|
|
91
109
|
access: "authenticated",
|
|
92
110
|
examples: ["numa registry instances update cluster-a ./nacos-instance.json --json"]
|
|
93
111
|
},
|
|
@@ -145,6 +163,12 @@ export const COMMAND_CATALOG = [
|
|
|
145
163
|
access: "authenticated",
|
|
146
164
|
examples: ["numa registry skill inspect release-helper --namespace team-ai --json"]
|
|
147
165
|
},
|
|
166
|
+
{
|
|
167
|
+
command: "registry skill draft <name>",
|
|
168
|
+
summary: "从指定版本创建团队 Skill 草稿",
|
|
169
|
+
access: "authenticated",
|
|
170
|
+
examples: ["numa registry skill draft release-helper --from-version 1.0.0 --json"]
|
|
171
|
+
},
|
|
148
172
|
{
|
|
149
173
|
command: "registry skill install <name>",
|
|
150
174
|
summary: "校验 SHA-256 和 ZIP 后原子安装到 AI 客户端 Skills 目录",
|
|
@@ -157,7 +181,7 @@ export const COMMAND_CATALOG = [
|
|
|
157
181
|
access: "authenticated",
|
|
158
182
|
examples: ["numa registry skill upload ./release-helper.zip --namespace team-ai --json"]
|
|
159
183
|
},
|
|
160
|
-
...["submit", "publish", "online", "offline", "scope", "tags", "delete"].map((action) => ({
|
|
184
|
+
...["submit", "publish", "online", "offline", "scope", "tags", "labels", "delete"].map((action) => ({
|
|
161
185
|
command: `registry skill ${action} <name>`,
|
|
162
186
|
summary: `执行 Skill ${action} 治理操作(服务端 edit Scope)`,
|
|
163
187
|
access: "authenticated",
|
|
@@ -175,6 +199,12 @@ export const COMMAND_CATALOG = [
|
|
|
175
199
|
access: "authenticated",
|
|
176
200
|
examples: ["numa registry mcp inspect internal-docs --namespace team-ai --json"]
|
|
177
201
|
},
|
|
202
|
+
{
|
|
203
|
+
command: "registry mcp bridge",
|
|
204
|
+
summary: "用 Numa 登录刷新能力把企业 Router 桥接为 stdio MCP",
|
|
205
|
+
access: "authenticated",
|
|
206
|
+
examples: ["numa registry mcp bridge --namespace team-ai"]
|
|
207
|
+
},
|
|
178
208
|
{
|
|
179
209
|
command: "registry mcp install <name>",
|
|
180
210
|
summary: "安装 MCP Server 到 ChatGPT、Codex、Claude、Cursor、WorkBuddy 或 OpenClaw",
|
|
@@ -187,6 +217,48 @@ export const COMMAND_CATALOG = [
|
|
|
187
217
|
access: "authenticated",
|
|
188
218
|
examples: [`numa registry mcp ${action} --help`]
|
|
189
219
|
})),
|
|
220
|
+
...["online", "offline", "tags"].map((action) => ({
|
|
221
|
+
command: `registry mcp ${action} <name>`,
|
|
222
|
+
summary: `执行 MCP ${action} 治理操作(服务端授权)`,
|
|
223
|
+
access: "authenticated",
|
|
224
|
+
examples: [`numa registry mcp ${action} internal-docs --namespace team-ai --json`]
|
|
225
|
+
})),
|
|
226
|
+
...["enable", "disable"].map((action) => ({
|
|
227
|
+
command: `registry mcp tool ${action} <mcp-name> <tool-name>`,
|
|
228
|
+
summary: `${action === "enable" ? "启用" : "禁用"}指定 MCP 工具并使用乐观锁`,
|
|
229
|
+
access: "authenticated",
|
|
230
|
+
examples: [`numa registry mcp tool ${action} internal-docs search --version 3 --json`]
|
|
231
|
+
})),
|
|
232
|
+
{
|
|
233
|
+
command: "registry approvals submit <type> <name>",
|
|
234
|
+
summary: "提交 Skill 或 MCP 精确版本进入两人制发布流程",
|
|
235
|
+
access: "authenticated",
|
|
236
|
+
examples: ["numa registry approvals submit skill release-helper --resource-version 1.2.0 --reason 'ready' --json"]
|
|
237
|
+
},
|
|
238
|
+
{
|
|
239
|
+
command: "registry approvals list",
|
|
240
|
+
summary: "列出当前 namespace 的发布申请收件箱",
|
|
241
|
+
access: "authenticated",
|
|
242
|
+
examples: ["numa registry approvals list --state SUBMITTED --json"]
|
|
243
|
+
},
|
|
244
|
+
...["review", "publish"].map((action) => ({
|
|
245
|
+
command: `registry approvals ${action} <request-id>`,
|
|
246
|
+
summary: action === "review" ? "以 Reviewer 身份审核发布申请(禁止自审)" : "发布已批准的申请",
|
|
247
|
+
access: "authenticated",
|
|
248
|
+
examples: [`numa registry approvals ${action} rr_123 --json`]
|
|
249
|
+
})),
|
|
250
|
+
...["inspect", "connect", "health", "reconcile"].map((action) => ({
|
|
251
|
+
command: `registry router ${action}`,
|
|
252
|
+
summary: `执行 namespace Router ${action} 操作`,
|
|
253
|
+
access: "authenticated",
|
|
254
|
+
examples: [`numa registry router ${action} --namespace team-ai --json`]
|
|
255
|
+
})),
|
|
256
|
+
{
|
|
257
|
+
command: "registry audit",
|
|
258
|
+
summary: "查询追加式 Registry 审计事件",
|
|
259
|
+
access: "authenticated",
|
|
260
|
+
examples: ["numa registry audit --namespace team-ai --json"]
|
|
261
|
+
},
|
|
190
262
|
{
|
|
191
263
|
command: "media capabilities",
|
|
192
264
|
summary: "查询平台媒体 API、Provider 和版本能力",
|
|
@@ -209,36 +281,51 @@ export const COMMAND_CATALOG = [
|
|
|
209
281
|
command: "pipeline builds [--app <code>] [--tier <tier>] [--branch <name>] [--state <state>] [--cursor <cursor>] [--limit <number>]",
|
|
210
282
|
summary: "检索当前用户可见的 Jenkins 构建记录",
|
|
211
283
|
access: "authenticated",
|
|
284
|
+
operationalNotes: ["用于在未保存 requestId 时按应用、环境、分支或状态找回构建记录。"],
|
|
212
285
|
examples: ["numa pipeline builds --app mci-devops-platform --state running --json"]
|
|
213
286
|
},
|
|
214
287
|
{
|
|
215
|
-
command: "pipeline build <application> --tier <tier> [--branch <name>] [--param <KEY=VALUE>...] [--idempotency-key <key>] [--wait]",
|
|
216
|
-
summary: "
|
|
288
|
+
command: "pipeline build <application> --tier <tier> [--branch <name>] [--param <KEY=VALUE>...] [--idempotency-key <key>] [--approve-id <id>] [--production-reason <text>] [--wait]",
|
|
289
|
+
summary: "通过平台授权触发 Jenkins 构建;生产要求 ops-admin 及审批依据",
|
|
217
290
|
access: "authenticated",
|
|
218
|
-
|
|
291
|
+
operationalNotes: [
|
|
292
|
+
"requestId 由平台生成,用于 status、log、stop 和 retry;idempotency-key 由调用者标识同一次提交。",
|
|
293
|
+
"不传 idempotency-key 时 CLI 自动生成并在成功结果中返回;生产和自动化建议显式提供,结果不明时复用原值。",
|
|
294
|
+
"--wait 约每 2 秒轮询至终态且无默认超时;Ctrl+C 或网络中断只结束本地等待,不会停止 Jenkins 构建。",
|
|
295
|
+
"--wait 仅在 SUCCESS 时返回退出码 0,其他终态返回非零。",
|
|
296
|
+
"approveId 由平台审计并仅在生产 trigger/retry 时映射为 Jenkins APPROVE_ID;productionReason 不转发。"
|
|
297
|
+
],
|
|
298
|
+
examples: ["numa pipeline build mci-devops-platform --tier production --approve-id APPROVAL-2026-001 --wait --json"]
|
|
219
299
|
},
|
|
220
300
|
{
|
|
221
301
|
command: "pipeline status <request-or-build-id> [--watch]",
|
|
222
302
|
summary: "查询或持续观察 Jenkins 构建状态",
|
|
223
303
|
access: "authenticated",
|
|
304
|
+
operationalNotes: [
|
|
305
|
+
"优先使用 build 返回的 requestId,也接受已分配的 Jenkins build number。",
|
|
306
|
+
"--watch 约每 2 秒轮询至终态且无默认超时;Ctrl+C 只停止观察,不停止构建。"
|
|
307
|
+
],
|
|
224
308
|
examples: ["numa pipeline status req_01ABC --watch --json"]
|
|
225
309
|
},
|
|
226
310
|
{
|
|
227
311
|
command: "pipeline log <request-or-build-id> [--follow] [--offset <number>] [--limit <number>]",
|
|
228
312
|
summary: "按 progressiveText 游标读取或跟随构建日志",
|
|
229
313
|
access: "authenticated",
|
|
314
|
+
operationalNotes: ["--follow 可用 Ctrl+C 停止本地日志跟随,不会停止 Jenkins 构建。"],
|
|
230
315
|
examples: ["numa pipeline log req_01ABC --follow"]
|
|
231
316
|
},
|
|
232
317
|
{
|
|
233
|
-
command: "pipeline stop <request-or-build-id> --yes",
|
|
234
|
-
summary: "
|
|
318
|
+
command: "pipeline stop <request-or-build-id> --yes [--approve-id <id>] [--production-reason <text>]",
|
|
319
|
+
summary: "停止排队中或运行中的构建;生产要求审批依据",
|
|
235
320
|
access: "authenticated",
|
|
321
|
+
operationalNotes: ["--yes 仅确认本次停止操作;生产任务仍由服务端要求 ops-admin 及审批依据。"],
|
|
236
322
|
examples: ["numa pipeline stop req_01ABC --yes --json"]
|
|
237
323
|
},
|
|
238
324
|
{
|
|
239
|
-
command: "pipeline retry <request-or-build-id> --yes [--param <KEY=VALUE>...]",
|
|
240
|
-
summary: "
|
|
325
|
+
command: "pipeline retry <request-or-build-id> --yes [--param <KEY=VALUE>...] [--approve-id <id>] [--production-reason <text>]",
|
|
326
|
+
summary: "重试构建;生产要求新的审批依据",
|
|
241
327
|
access: "authenticated",
|
|
328
|
+
operationalNotes: ["retry 创建新的构建请求;生产任务必须提供新的有效审批依据,敏感参数必须重新提供。"],
|
|
242
329
|
examples: ["numa pipeline retry req_01ABC --yes --param DEPLOY_TOKEN=value --json"]
|
|
243
330
|
},
|
|
244
331
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-catalog.js","sourceRoot":"","sources":["../src/command-catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"command-catalog.js","sourceRoot":"","sources":["../src/command-catalog.ts"],"names":[],"mappings":"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"}
|
package/dist/config-page.js
CHANGED
|
@@ -50,6 +50,7 @@ export async function openConfigPage() {
|
|
|
50
50
|
const apiBaseUrl = await ask("内部研发平台 API 地址", current.apiBaseUrl, validateHttpUrl);
|
|
51
51
|
const profileUrl = await ask("公开 client profile URL", current.profileUrl, validateProfileUrl);
|
|
52
52
|
const profileId = await ask("锁定 profile ID(可留空)", current.profileId);
|
|
53
|
+
const aiRegistryDefaultNamespaceKey = await ask("AI Registry 用户默认 namespace(可留空)", current.aiRegistryDefaultNamespaceKey);
|
|
53
54
|
const registryUrl = await ask("npm registry", current.registryUrl, validateHttpUrl);
|
|
54
55
|
const checkUpdatesText = await ask("启动时检查更新 (true/false)", String(current.checkUpdates), (value) => ["true", "false"].includes(value) ? undefined : "可选值: true, false");
|
|
55
56
|
const saved = await saveAppConfig({
|
|
@@ -59,6 +60,7 @@ export async function openConfigPage() {
|
|
|
59
60
|
apiBaseUrl,
|
|
60
61
|
profileUrl,
|
|
61
62
|
profileId,
|
|
63
|
+
aiRegistryDefaultNamespaceKey,
|
|
62
64
|
registryUrl,
|
|
63
65
|
checkUpdates: checkUpdatesText === "true"
|
|
64
66
|
});
|
package/dist/config-page.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-page.js","sourceRoot":"","sources":["../src/config-page.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"config-page.js","sourceRoot":"","sources":["../src/config-page.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
CHANGED
|
@@ -13,6 +13,7 @@ export interface AuthConfig {
|
|
|
13
13
|
redirectPath: string;
|
|
14
14
|
openBrowser: boolean;
|
|
15
15
|
backendBaseUrl?: string;
|
|
16
|
+
capabilityUrl?: string;
|
|
16
17
|
allowAbsoluteBackendUrls: boolean;
|
|
17
18
|
}
|
|
18
19
|
export declare const DEFAULT_DISCOVERY_URL = "https://kc.mcisaas.com/auth/realms/numa-realm/.well-known/openid-configuration";
|
package/dist/config.js
CHANGED
|
@@ -107,6 +107,7 @@ export function loadConfig(serviceKey = "platform") {
|
|
|
107
107
|
redirectPath: redirectPathFromEnv(),
|
|
108
108
|
openBrowser: envBoolean("NUMA_AUTH_OPEN_BROWSER", true),
|
|
109
109
|
backendBaseUrl: process.env.NUMA_BACKEND_BASE_URL || selected?.service.baseUrl || appConfig.apiBaseUrl || undefined,
|
|
110
|
+
capabilityUrl: selected?.service.capabilityUrl,
|
|
110
111
|
allowAbsoluteBackendUrls: envBoolean("NUMA_BACKEND_ALLOW_ABSOLUTE_URLS", false)
|
|
111
112
|
};
|
|
112
113
|
}
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAA2B,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,7 +15,11 @@ export interface ListBuildOptions extends ListPipelineOptions {
|
|
|
15
15
|
cursor?: string;
|
|
16
16
|
limit?: number;
|
|
17
17
|
}
|
|
18
|
-
export interface
|
|
18
|
+
export interface ProductionApprovalInput {
|
|
19
|
+
approveId?: string;
|
|
20
|
+
productionReason?: string;
|
|
21
|
+
}
|
|
22
|
+
export interface TriggerBuildInput extends ProductionApprovalInput {
|
|
19
23
|
applicationCode: string;
|
|
20
24
|
tier: PipelineTier;
|
|
21
25
|
branch?: string;
|
|
@@ -42,7 +46,7 @@ export declare class PipelineClient {
|
|
|
42
46
|
nextCursor: string | null;
|
|
43
47
|
stale: boolean;
|
|
44
48
|
lastSuccessfulSyncAt: string | null;
|
|
45
|
-
requestId?: string | undefined;
|
|
49
|
+
requestId?: string | null | undefined;
|
|
46
50
|
}>;
|
|
47
51
|
inspectPipeline(applicationCode: string): Promise<{
|
|
48
52
|
[x: string]: unknown;
|
|
@@ -70,7 +74,7 @@ export declare class PipelineClient {
|
|
|
70
74
|
nextCursor: string | null;
|
|
71
75
|
stale: boolean;
|
|
72
76
|
lastSuccessfulSyncAt: string | null;
|
|
73
|
-
requestId?: string | undefined;
|
|
77
|
+
requestId?: string | null | undefined;
|
|
74
78
|
}>;
|
|
75
79
|
triggerBuild(input: TriggerBuildInput): Promise<{
|
|
76
80
|
[x: string]: unknown;
|
|
@@ -94,7 +98,7 @@ export declare class PipelineClient {
|
|
|
94
98
|
queueId?: number | null | undefined;
|
|
95
99
|
pollUrl?: string | undefined;
|
|
96
100
|
}>;
|
|
97
|
-
stopBuild(identifier: string): Promise<{
|
|
101
|
+
stopBuild(identifier: string, approval?: ProductionApprovalInput): Promise<{
|
|
98
102
|
[x: string]: unknown;
|
|
99
103
|
requestId?: string | undefined;
|
|
100
104
|
buildNumber?: number | null | undefined;
|
|
@@ -105,7 +109,7 @@ export declare class PipelineClient {
|
|
|
105
109
|
queueId?: number | null | undefined;
|
|
106
110
|
pollUrl?: string | undefined;
|
|
107
111
|
}>;
|
|
108
|
-
retryBuild(identifier: string, parameters: Record<string, string
|
|
112
|
+
retryBuild(identifier: string, parameters: Record<string, string>, approval?: ProductionApprovalInput): Promise<{
|
|
109
113
|
[x: string]: unknown;
|
|
110
114
|
requestId?: string | undefined;
|
|
111
115
|
buildNumber?: number | null | undefined;
|
|
@@ -121,6 +125,6 @@ export declare class PipelineClient {
|
|
|
121
125
|
text: string;
|
|
122
126
|
nextOffset: number;
|
|
123
127
|
moreData: boolean;
|
|
124
|
-
requestId?: string | undefined;
|
|
128
|
+
requestId?: string | null | undefined;
|
|
125
129
|
}>;
|
|
126
130
|
}
|
package/dist/pipeline/client.js
CHANGED
|
@@ -90,12 +90,15 @@ export class PipelineClient {
|
|
|
90
90
|
getBuild(identifier) {
|
|
91
91
|
return this.json(`/api/v1/jenkins/builds/${encodeURIComponent(identifier)}`, BuildSchema);
|
|
92
92
|
}
|
|
93
|
-
stopBuild(identifier) {
|
|
94
|
-
|
|
93
|
+
stopBuild(identifier, approval = {}) {
|
|
94
|
+
const body = approval.approveId || approval.productionReason ? JSON.stringify(approval) : undefined;
|
|
95
|
+
return this.json(`/api/v1/jenkins/builds/${encodeURIComponent(identifier)}/stop`, BuildSchema, {
|
|
96
|
+
method: "POST", ...(body ? { body } : {})
|
|
97
|
+
}, [200, 202]);
|
|
95
98
|
}
|
|
96
|
-
retryBuild(identifier, parameters) {
|
|
99
|
+
retryBuild(identifier, parameters, approval = {}) {
|
|
97
100
|
return this.json(`/api/v1/jenkins/builds/${encodeURIComponent(identifier)}/retry`, BuildSchema, {
|
|
98
|
-
method: "POST", body: JSON.stringify({ parameters })
|
|
101
|
+
method: "POST", body: JSON.stringify({ parameters, ...approval })
|
|
99
102
|
}, [200, 202]);
|
|
100
103
|
}
|
|
101
104
|
getLog(identifier, offset = 0, limit) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/pipeline/client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,yBAAyB,EAA8B,MAAM,aAAa,CAAC;AACvG,OAAO,EACL,cAAc,EACd,eAAe,EACf,cAAc,EACd,WAAW,EACX,oBAAoB,EACpB,kBAAkB,EAGnB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/pipeline/client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,yBAAyB,EAA8B,MAAM,aAAa,CAAC;AACvG,OAAO,EACL,cAAc,EACd,eAAe,EACf,cAAc,EACd,WAAW,EACX,oBAAoB,EACpB,kBAAkB,EAGnB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAoBhE,SAAS,aAAa,CAAC,QAAkB,EAAE,IAAa;IACtD,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,WAAW,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,SAAS,CAAC;IACzH,OAAO,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,SAAS,CAAC;AAC3D,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,QAAkB;IAC5C,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IACnC,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IACrB,IAAI,CAAC;QAAC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAY,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,IAAI,CAAC;IAAC,CAAC;AACpE,CAAC;AAED,SAAS,UAAU,CAAC,QAAkB,EAAE,IAAa;IACnD,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO;QAC5B,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,QAAQ,CAAC,UAAU,IAAI,sCAAsC;QACtF,CAAC,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,IAAI,sCAAsC,CAAC;IACpG,OAAO,IAAI,aAAa,CACtB,6BAA6B,QAAQ,CAAC,MAAM,KAAK,kBAAkB,CAAC,OAAO,CAAC,EAAE,EAC9E,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,mBAAmB,CAAC,CAAC,CAAC,mBAAmB,EAC9E,QAAQ,CAAC,MAAM,EACf,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,CAC9B,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,IAAY,EAAE,OAAoD;IACnF,MAAM,KAAK,GAAG,IAAI,eAAe,EAAE,CAAC;IACpC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;QAAE,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,EAAE;YAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACrH,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3D,CAAC;AAED,MAAM,OAAO,cAAc;IAII,MAAM;IAHlB,SAAS,CAAe;IACxB,aAAa,CAAwB;IAEtD,YAA6B,MAAkB,EAAE,YAAY,GAA+B,EAAE;sBAAjE,MAAM;QACjC,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC,KAAK,IAAI,KAAK,CAAC;QAC7C,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC,aAAa,IAAI,iBAAiB,CAAC;IACvE,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAC,IAAY,EAAE,IAAI,GAAgB,EAAE;QACnE,MAAM,GAAG,GAAG,iBAAiB,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACpE,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;QAC1C,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI;YAAE,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;QACvE,OAAO,yBAAyB,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE;YAC/E,KAAK,EAAE,IAAI,CAAC,SAAS;YACrB,aAAa,EAAE,IAAI,CAAC,aAAa;SAClC,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,IAAI,CAChB,IAAY,EACZ,MAAkH,EAClH,IAAI,GAAgB,EAAE,EACtB,gBAA2B;QAE3B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC3D,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,CAAC;QAC1C,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,MAAM,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,gBAAgB,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACpE,MAAM,IAAI,aAAa,CACrB,sCAAsC,QAAQ,CAAC,MAAM,cAAc,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EACnG,0BAA0B,EAC1B,QAAQ,CAAC,MAAM,EACf,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,CAC9B,CAAC;QACJ,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,aAAa,CACrB,sDAAsD,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,EAC5E,0BAA0B,EAC1B,QAAQ,CAAC,MAAM,EACf,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,CAC9B,CAAC;QACJ,CAAC;QACD,OAAO,MAAM,CAAC,IAAI,CAAC;IACrB,CAAC;IAED,aAAa,CAAC,OAAO,GAAwB,EAAE;QAC7C,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,2BAA2B,EAAE;YACtD,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM;SAC7E,CAAC,EAAE,kBAAkB,CAAC,CAAC;IAC1B,CAAC;IAED,eAAe,CAAC,eAAuB;QACrC,OAAO,IAAI,CAAC,IAAI,CAAC,6BAA6B,kBAAkB,CAAC,eAAe,CAAC,EAAE,EAAE,oBAAoB,CAAC,CAAC;IAC7G,CAAC;IAED,UAAU,CAAC,OAAO,GAAqB,EAAE;QACvC,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,wBAAwB,EAAE;YACnD,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM;YAC5E,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK;SACnE,CAAC,EAAE,eAAe,CAAC,CAAC;IACvB,CAAC;IAED,YAAY,CAAC,KAAwB;QACnC,OAAO,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,WAAW,EAAE;YACtD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,iBAAiB,EAAE,KAAK,CAAC,cAAc,EAAE;YACpD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;SAC5B,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IACjB,CAAC;IAED,QAAQ,CAAC,UAAkB;QACzB,OAAO,IAAI,CAAC,IAAI,CAAC,0BAA0B,kBAAkB,CAAC,UAAU,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;IAC5F,CAAC;IAED,SAAS,CAAC,UAAkB,EAAE,QAAQ,GAA4B,EAAE;QAClE,MAAM,IAAI,GAAG,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACpG,OAAO,IAAI,CAAC,IAAI,CAAC,0BAA0B,kBAAkB,CAAC,UAAU,CAAC,OAAO,EAAE,WAAW,EAAE;YAC7F,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1C,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IACjB,CAAC;IAED,UAAU,CAAC,UAAkB,EAAE,UAAkC,EAAE,QAAQ,GAA4B,EAAE;QACvG,OAAO,IAAI,CAAC,IAAI,CAAC,0BAA0B,kBAAkB,CAAC,UAAU,CAAC,QAAQ,EAAE,WAAW,EAAE;YAC9F,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,GAAG,QAAQ,EAAE,CAAC;SAClE,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IACjB,CAAC;IAED,MAAM,CAAC,UAAkB,EAAE,MAAM,GAAG,CAAC,EAAE,KAAc;QACnD,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,0BAA0B,kBAAkB,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,cAAc,CAAC,CAAC;IACjI,CAAC;CACF"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Command } from "commander";
|
|
2
|
-
import { PipelineClient } from "./client.js";
|
|
2
|
+
import { PipelineClient, type ProductionApprovalInput } from "./client.js";
|
|
3
3
|
import { type PipelineBuild, type PipelineTier } from "./schemas.js";
|
|
4
4
|
export interface PipelineCommandDependencies {
|
|
5
5
|
clientFactory?: () => PipelineClient;
|
|
@@ -8,6 +8,10 @@ export interface PipelineCommandDependencies {
|
|
|
8
8
|
}
|
|
9
9
|
export declare function parsePipelineTier(value: string): PipelineTier;
|
|
10
10
|
export declare function parseBuildParameters(expressions?: string[]): Record<string, string>;
|
|
11
|
+
export declare function parseProductionApproval(input: {
|
|
12
|
+
approveId?: string;
|
|
13
|
+
productionReason?: string;
|
|
14
|
+
}, required?: boolean): ProductionApprovalInput;
|
|
11
15
|
export declare function waitForBuild(client: Pick<PipelineClient, "getBuild">, initial: PipelineBuild, options?: {
|
|
12
16
|
sleep?: (milliseconds: number, signal?: AbortSignal) => Promise<void>;
|
|
13
17
|
random?: () => number;
|
|
@@ -7,8 +7,12 @@ import { PipelineError, sanitizePipelineOutput } from "./errors.js";
|
|
|
7
7
|
import { BuildStateSchema, PipelineTierSchema } from "./schemas.js";
|
|
8
8
|
const TERMINAL_STATES = new Set(["SUCCESS", "FAILED", "ABORTED", "CANCELLED", "NOT_BUILT"]);
|
|
9
9
|
const SUCCESS_STATE = "SUCCESS";
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
const APPROVE_ID = /^[A-Za-z0-9][A-Za-z0-9._:/-]{0,159}$/u;
|
|
11
|
+
function addExamples(command, examples, notes = []) {
|
|
12
|
+
const noteSection = notes.length
|
|
13
|
+
? `\n说明:\n${notes.map((item) => ` - ${item}`).join("\n")}\n`
|
|
14
|
+
: "";
|
|
15
|
+
return command.addHelpText("after", `${noteSection}\nExamples:\n${examples.map((item) => ` ${item}`).join("\n")}\n`);
|
|
12
16
|
}
|
|
13
17
|
function snakeCase(key) {
|
|
14
18
|
return key.replace(/([a-z0-9])([A-Z])/gu, "$1_$2").toLowerCase();
|
|
@@ -76,6 +80,9 @@ export function parseBuildParameters(expressions = []) {
|
|
|
76
80
|
if (!/^[A-Za-z_][A-Za-z0-9_.-]{0,127}$/u.test(key)) {
|
|
77
81
|
throw new PipelineError(`Build parameter must use KEY=VALUE syntax with a valid key: ${expression}`, "JENKINS_PARAMETER_INVALID");
|
|
78
82
|
}
|
|
83
|
+
if (key.toUpperCase() === "APPROVE_ID") {
|
|
84
|
+
throw new PipelineError("APPROVE_ID is reserved; use --approve-id so the platform can validate and audit it.", "JENKINS_PARAMETER_INVALID");
|
|
85
|
+
}
|
|
79
86
|
if (Object.hasOwn(parameters, key)) {
|
|
80
87
|
throw new PipelineError(`Duplicate build parameter: ${key}`, "JENKINS_PARAMETER_INVALID");
|
|
81
88
|
}
|
|
@@ -83,6 +90,26 @@ export function parseBuildParameters(expressions = []) {
|
|
|
83
90
|
}
|
|
84
91
|
return parameters;
|
|
85
92
|
}
|
|
93
|
+
export function parseProductionApproval(input, required = false) {
|
|
94
|
+
const approveId = input.approveId?.trim() || undefined;
|
|
95
|
+
const productionReason = input.productionReason?.trim() || undefined;
|
|
96
|
+
if (approveId && !APPROVE_ID.test(approveId)) {
|
|
97
|
+
throw new PipelineError("approve-id must start with a letter or number, use only letters, numbers, . _ : / -, and be at most 160 characters.", "JENKINS_PRODUCTION_APPROVAL_INVALID");
|
|
98
|
+
}
|
|
99
|
+
if (productionReason && productionReason.length > 800) {
|
|
100
|
+
throw new PipelineError("production-reason must not exceed 800 characters.", "JENKINS_PRODUCTION_APPROVAL_INVALID");
|
|
101
|
+
}
|
|
102
|
+
if (!approveId && productionReason && productionReason.length < 10) {
|
|
103
|
+
throw new PipelineError("production-reason must contain at least 10 characters when approve-id is absent.", "JENKINS_PRODUCTION_APPROVAL_INVALID");
|
|
104
|
+
}
|
|
105
|
+
if (required && !approveId && !productionReason) {
|
|
106
|
+
throw new PipelineError("Production operations require --approve-id or --production-reason.", "JENKINS_PRODUCTION_APPROVAL_REQUIRED");
|
|
107
|
+
}
|
|
108
|
+
return {
|
|
109
|
+
...(approveId ? { approveId } : {}),
|
|
110
|
+
...(productionReason ? { productionReason } : {})
|
|
111
|
+
};
|
|
112
|
+
}
|
|
86
113
|
function defaultSleep(milliseconds, signal) {
|
|
87
114
|
return new Promise((resolve, reject) => {
|
|
88
115
|
if (signal?.aborted) {
|
|
@@ -135,7 +162,18 @@ export function registerPipelineCommands(program, dependencies = {}) {
|
|
|
135
162
|
const client = () => dependencies.clientFactory?.() ?? new PipelineClient(loadConfig("pipeline"));
|
|
136
163
|
const sleep = dependencies.sleep ?? defaultSleep;
|
|
137
164
|
const random = dependencies.random ?? Math.random;
|
|
138
|
-
const pipeline = program.command("pipeline")
|
|
165
|
+
const pipeline = program.command("pipeline")
|
|
166
|
+
.description("通过平台 Keycloak 权限查询和操作 Jenkins 流水线")
|
|
167
|
+
.addHelpText("after", `
|
|
168
|
+
核心概念:
|
|
169
|
+
requestId 平台生成的构建任务标识,用于 status、log、stop 和 retry。
|
|
170
|
+
idempotency-key 调用者定义的提交标识;同一次提交重试时复用,新部署使用新值。
|
|
171
|
+
approve-id 生产审批依据;不是任务标识,也不能通过 --param APPROVE_ID 绕过治理。
|
|
172
|
+
|
|
173
|
+
恢复流程:
|
|
174
|
+
已保存 requestId: numa pipeline status <requestId> --watch
|
|
175
|
+
未保存 requestId: numa pipeline builds --app <application> --tier <tier> --json
|
|
176
|
+
`);
|
|
139
177
|
addExamples(pipeline.command("list")
|
|
140
178
|
.description("列出当前用户可见的应用流水线")
|
|
141
179
|
.option("--app <code>", "按 Application code 过滤")
|
|
@@ -173,22 +211,29 @@ export function registerPipelineCommands(program, dependencies = {}) {
|
|
|
173
211
|
limit: positiveInteger(options.limit, "limit", 20, 100)
|
|
174
212
|
});
|
|
175
213
|
await output(command, { ok: true, builds: result }, result.items.map(buildLine).join("\n") || "没有找到构建记录");
|
|
176
|
-
}), ["numa pipeline builds --app mci-devops-platform --state running --json"]
|
|
214
|
+
}), ["numa pipeline builds --app mci-devops-platform --state running --json"], [
|
|
215
|
+
"用于在未保存 requestId 时按应用、环境、分支或状态找回构建记录。",
|
|
216
|
+
"--cursor 使用上一页响应返回的游标;--limit 控制每页条数,不是页码。"
|
|
217
|
+
]);
|
|
177
218
|
addExamples(pipeline.command("build <application>")
|
|
178
|
-
.description("
|
|
219
|
+
.description("触发流水线构建;生产要求 ops-admin 及审批 ID 或具体说明")
|
|
179
220
|
.requiredOption("--tier <tier>", "develop|staging|production")
|
|
180
221
|
.option("--branch <name>", "分支名称")
|
|
181
222
|
.option("-p, --param <KEY=VALUE>", "构建参数,可重复", collect, [])
|
|
182
|
-
.option("--idempotency-key <key>", "
|
|
183
|
-
.option("--
|
|
223
|
+
.option("--idempotency-key <key>", "可选;同一提交重试时复用,不传则自动生成并随成功结果返回")
|
|
224
|
+
.option("--approve-id <id>", "生产审批 ID;由平台审计并映射为 Jenkins APPROVE_ID")
|
|
225
|
+
.option("--production-reason <text>", "无审批 ID 时填写至少 10 个字符的生产操作说明")
|
|
226
|
+
.option("--wait", "约每 2 秒轮询至终态;无默认超时,Ctrl+C 只停止本地等待")
|
|
184
227
|
.action(async (application, options, command) => {
|
|
185
228
|
const idempotencyKey = options.idempotencyKey ? identifier(options.idempotencyKey, "idempotency-key") : randomUUID();
|
|
229
|
+
const tier = parsePipelineTier(options.tier);
|
|
186
230
|
const request = {
|
|
187
231
|
applicationCode: identifier(application, "application"),
|
|
188
|
-
tier
|
|
232
|
+
tier,
|
|
189
233
|
branch: options.branch,
|
|
190
234
|
parameters: parseBuildParameters(options.param),
|
|
191
|
-
idempotencyKey
|
|
235
|
+
idempotencyKey,
|
|
236
|
+
...parseProductionApproval(options, tier === "PRODUCTION")
|
|
192
237
|
};
|
|
193
238
|
const pipelineClient = client();
|
|
194
239
|
let result = await pipelineClient.triggerBuild(request);
|
|
@@ -199,11 +244,18 @@ export function registerPipelineCommands(program, dependencies = {}) {
|
|
|
199
244
|
process.exitCode = 1;
|
|
200
245
|
}), [
|
|
201
246
|
"numa pipeline build mci-devops-platform --tier develop --branch develop --param SONAR_SCAN=false --json",
|
|
247
|
+
"numa pipeline build mci-devops-platform --tier production --branch main --approve-id APPROVAL-2026-001 --wait --json",
|
|
202
248
|
"numa pipeline build mci-devops-platform --tier develop --wait"
|
|
249
|
+
], [
|
|
250
|
+
"requestId 由平台生成,用于后续查询和操作;idempotency-key 标识是否为同一次提交。",
|
|
251
|
+
"生产和自动化建议显式提供 idempotency-key;网络结果不明时复用原值重提,不要生成新值。",
|
|
252
|
+
"--wait 无默认超时。Ctrl+C 或网络中断只结束本地等待,不会停止 Jenkins 构建。",
|
|
253
|
+
"--wait 仅在 SUCCESS 时返回退出码 0,FAILED、ABORTED、CANCELLED、NOT_BUILT 返回非零。",
|
|
254
|
+
"approveId 由平台审计并在生产 trigger/retry 时映射为 Jenkins APPROVE_ID;productionReason 不转发。"
|
|
203
255
|
]);
|
|
204
256
|
addExamples(pipeline.command("status <request-or-build-id>")
|
|
205
257
|
.description("查询构建状态,可持续观察至终态")
|
|
206
|
-
.option("--watch", "
|
|
258
|
+
.option("--watch", "约每 2 秒轮询至终态;无默认超时,Ctrl+C 只停止观察")
|
|
207
259
|
.action(async (value, options, command) => {
|
|
208
260
|
const pipelineClient = client();
|
|
209
261
|
const useJson = await jsonEnabled(command);
|
|
@@ -215,7 +267,10 @@ export function registerPipelineCommands(program, dependencies = {}) {
|
|
|
215
267
|
process.stderr.write(`${sanitizePipelineOutput(buildLine(item))}\n`); }
|
|
216
268
|
}));
|
|
217
269
|
await output(command, { ok: true, build: result }, buildLine(result));
|
|
218
|
-
}), ["numa pipeline status req_01ABC --watch --json"]
|
|
270
|
+
}), ["numa pipeline status req_01ABC --watch --json"], [
|
|
271
|
+
"优先使用 build 返回的 requestId,也接受已经分配的 Jenkins build number。",
|
|
272
|
+
"不带 --watch 只查询一次;--watch 无默认超时。中断观察不会停止 Jenkins 构建。"
|
|
273
|
+
]);
|
|
219
274
|
addExamples(pipeline.command("log <request-or-build-id>")
|
|
220
275
|
.description("读取构建日志,follow 模式持续读取 progressiveText 游标")
|
|
221
276
|
.option("--follow", "持续读取直到构建终止且日志耗尽")
|
|
@@ -259,25 +314,41 @@ export function registerPipelineCommands(program, dependencies = {}) {
|
|
|
259
314
|
await output(command, { ok: true, log: { ...latest, text: chunks.join("") } }, "");
|
|
260
315
|
else if (!latest.text && chunks.length === 1)
|
|
261
316
|
process.stdout.write("\n");
|
|
262
|
-
}), ["numa pipeline log req_01ABC --follow", "numa pipeline log 1842 --offset 4096 --json"]
|
|
317
|
+
}), ["numa pipeline log req_01ABC --follow", "numa pipeline log 1842 --offset 4096 --json"], [
|
|
318
|
+
"Ctrl+C 只停止本地日志跟随,不会停止 Jenkins 构建;真正停止任务请使用 pipeline stop。"
|
|
319
|
+
]);
|
|
263
320
|
addExamples(pipeline.command("stop <request-or-build-id>")
|
|
264
|
-
.description("
|
|
321
|
+
.description("停止排队中或运行中的构建;生产要求审批依据")
|
|
265
322
|
.option("--yes", "确认停止")
|
|
323
|
+
.option("--approve-id <id>", "生产审批 ID")
|
|
324
|
+
.option("--production-reason <text>", "无审批 ID 时填写至少 10 个字符的生产操作说明")
|
|
266
325
|
.action(async (value, options, command) => {
|
|
267
326
|
if (!options.yes)
|
|
268
327
|
throw new PipelineError("Stopping a build requires --yes.", "JENKINS_CONFIRMATION_REQUIRED");
|
|
269
|
-
const result = await client().stopBuild(identifier(value, "request-or-build-id"));
|
|
328
|
+
const result = await client().stopBuild(identifier(value, "request-or-build-id"), parseProductionApproval(options));
|
|
270
329
|
await output(command, { ok: true, build: result }, buildLine(result));
|
|
271
|
-
}), [
|
|
330
|
+
}), [
|
|
331
|
+
"numa pipeline stop req_01ABC --yes --json",
|
|
332
|
+
"numa pipeline stop req_01ABC --yes --approve-id APPROVAL-STOP-001 --json"
|
|
333
|
+
], [
|
|
334
|
+
"--yes 只确认本次停止操作;生产任务仍由服务端要求 ops-admin 及审批依据。"
|
|
335
|
+
]);
|
|
272
336
|
addExamples(pipeline.command("retry <request-or-build-id>")
|
|
273
|
-
.description("
|
|
337
|
+
.description("重试构建;生产要求新的审批依据,敏感参数必须重新提供")
|
|
274
338
|
.option("--yes", "确认重试")
|
|
275
339
|
.option("-p, --param <KEY=VALUE>", "重新提供或覆盖构建参数,可重复", collect, [])
|
|
340
|
+
.option("--approve-id <id>", "生产审批 ID")
|
|
341
|
+
.option("--production-reason <text>", "无审批 ID 时填写至少 10 个字符的生产操作说明")
|
|
276
342
|
.action(async (value, options, command) => {
|
|
277
343
|
if (!options.yes)
|
|
278
344
|
throw new PipelineError("Retrying a build requires --yes.", "JENKINS_CONFIRMATION_REQUIRED");
|
|
279
|
-
const result = await client().retryBuild(identifier(value, "request-or-build-id"), parseBuildParameters(options.param));
|
|
345
|
+
const result = await client().retryBuild(identifier(value, "request-or-build-id"), parseBuildParameters(options.param), parseProductionApproval(options));
|
|
280
346
|
await output(command, { ok: true, build: result }, buildLine(result));
|
|
281
|
-
}), [
|
|
347
|
+
}), [
|
|
348
|
+
"numa pipeline retry req_01ABC --yes --param DEPLOY_TOKEN=secret --json",
|
|
349
|
+
"numa pipeline retry req_01ABC --yes --production-reason 'Retry after verified rollback' --json"
|
|
350
|
+
], [
|
|
351
|
+
"retry 创建新的构建请求;生产任务必须提供新的有效审批依据,敏感参数必须重新提供。"
|
|
352
|
+
]);
|
|
282
353
|
}
|
|
283
354
|
//# sourceMappingURL=commands.js.map
|