@absolutejs/ git (英语)
为 Bun 控制平面和 AbsoluteJS 认证 Git 源摄入量 .
软件包将一个签名的提供商 Webhook 变成一个正常的,授权的精确 校正, 在没有外壳的情况下检查校正, 剥去 Git 元数据, 应用 源大小和文件计数限制,并发出可移植出处。 没有 拥有证书,数据库,队列,构建沙盒,部署,或UI. GitHub App 安装也可以创建并更新已规范的检查运行, 这样可以 控制飞机报告精确订正的部署态势,无需手写 供应商有效载荷.
import { assertGitRevisionAuthorized, gitProvenanceFor } from "@absolutejs/git";
import { createGitCheckout } from "@absolutejs/git/checkout";
import { verifyGitHubPushWebhook } from "@absolutejs/git/github";
const event = verifyGitHubPushWebhook({
body: rawBody,
headers: request.headers,
secret: webhookSecret,
});
assertGitRevisionAuthorized(
{
allowedRefs: ["refs/heads/main"],
repository: { provider: "github", fullName: "acme/site" },
},
event.revision,
);
const checkout = await createGitCheckout({
credential: { token: installationToken },
revision: event.revision,
});
try {
await isolatedBuild(checkout.sourceRoot, gitProvenanceFor(event));
} finally {
await checkout.dispose();
}
安全边界
- 在解析 JSON 之前, 对照未激活的请求字节验证签名 .
- 衍生犬科供应商 URL 而不是信任 Webhook 克隆 URL .
- 授权寄存器身份和在退出前的完整参考.
- 获取并核实确切的承诺, 永远不要移动分支提示.
- 通过 Git 参数作为数组; 证书使用子进程环境 配置且从未被嵌入到仓库 URL 或出错中.
- 删除
.git,拒绝链接和特殊文件,并执行源边框 将一棵树交给一个构建系统. - 运行安装并建在一个单独的沙盒中,有网络,CPU,内存, 时间和产出限制。 这个政策属于主控飞机.
@absolutejs/deploy/release-artifact 仍然是不可改变的生态系统所有者
部署档案和他们的SHA-256诚信合同.