fix: YAML-first 治理 CI/CD target (#919)

* docs: specify cicd yaml target governance

* fix: resolve cicd targets from yaml

---------

Co-authored-by: Codex <codex@noreply.local>
This commit is contained in:
Lyon
2026-06-26 01:14:38 +08:00
committed by GitHub
parent 3777577df4
commit edfddd2445
35 changed files with 1079 additions and 181 deletions
+7 -6
View File
@@ -1,3 +1,4 @@
// SPEC: PJ2026-01060308 cicd-yaml-targets draft-2026-06-25-cicd-yaml-targets.
import { createHash } from "node:crypto";
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
import { basename, dirname, join, normalize, relative } from "node:path";
@@ -8,7 +9,7 @@ import { coreInternalFetch } from "./microservices";
import { runSshCommandCapture, type SshCaptureResult } from "./ssh";
export interface OpsCommonOptions {
targetId: string;
targetId: string | null;
full: boolean;
raw: boolean;
}
@@ -120,10 +121,10 @@ export function shQuote(value: string): string {
return `'${value.replaceAll("'", "'\"'\"'")}'`;
}
export function parseOpsCommonOptions(args: string[], spec: OpsCommandOptionSpec = {}): OpsCommonOptions & Record<string, string | boolean> {
export function parseOpsCommonOptions(args: string[], spec: OpsCommandOptionSpec = {}): OpsCommonOptions & Record<string, string | boolean | null> {
const stringOptions = new Set(["--target", ...(spec.stringOptions ?? [])]);
const flagOptions = new Set(["--full", "--raw", ...(spec.flagOptions ?? [])]);
const values: Record<string, string | boolean> = { targetId: "G14", full: false, raw: false };
const values: Record<string, string | boolean | null> = { full: false, raw: false };
for (let index = 0; index < args.length; index += 1) {
const arg = args[index];
if (stringOptions.has(arg)) {
@@ -144,9 +145,9 @@ export function parseOpsCommonOptions(args: string[], spec: OpsCommandOptionSpec
throw new Error(`unsupported option: ${arg}`);
}
}
const targetId = String(values.targetId);
if (!/^[A-Za-z0-9._-]+$/u.test(targetId)) throw new Error("--target must be a simple target id");
return values as OpsCommonOptions & Record<string, string | boolean>;
const targetId = values.targetId === undefined ? null : String(values.targetId);
if (targetId !== null && !/^[A-Za-z0-9._-]+$/u.test(targetId)) throw new Error("--target must be a simple target id");
return { ...values, targetId } as OpsCommonOptions & Record<string, string | boolean | null>;
}
export function parseOpsApplyOptions(args: string[]): OpsApplyOptions {