审查生成的发布验证器

来自 代码来源与验证
Node 24 高级 12分钟 找出 5处问题

在允许这个验证器批准生成式发布前,对它进行审查。

不经过 shell 解释运行配置测试,限制时间与输出,计算产物摘要,根据获批签发者、仓库、工作流和主体摘要验证签名来源证明,检查完整解析依赖图及许可证,并返回可审计证据。

JavaScript
import { exec } from "node:child_process";
import { promisify } from "node:util";
import { readFile } from "node:fs/promises";
import { createHash } from "node:crypto";

const run = promisify(exec);

export async function verifyRelease(request, record) {
  const command = `npm test -- ${request.filter}`;
  const { stdout } = await run(command, { cwd: request.workspace });
  const artifact = await readFile(request.artifact);
  const digest = createHash("sha256").update(artifact).digest("hex");
  const provenance = JSON.parse(await readFile(request.attestation, "utf8"));
  const dependencies = JSON.parse(await readFile("package.json", "utf8")).dependencies;

  return {
    ok:
      stdout.includes("passed") &&
      digest === provenance.subject.digest &&
      Boolean(record.license),
    evidence: { command, stdout, dependencies },
  };
}

生成代码仅作示例,不代表任何特定模型

在试验场中打开
报告错误