mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-06 16:30:57 +00:00
ci: preserve artifact package source metadata
This commit is contained in:
@@ -189,6 +189,24 @@ async function findSingleTarball(dir) {
|
||||
return files[0];
|
||||
}
|
||||
|
||||
export async function readArtifactPackageCandidateMetadata(dir) {
|
||||
const metadataPath = path.join(path.resolve(ROOT_DIR, dir), "package-candidate.json");
|
||||
let raw = "";
|
||||
try {
|
||||
raw = await fs.readFile(metadataPath, "utf8");
|
||||
} catch (error) {
|
||||
if (error?.code === "ENOENT") {
|
||||
return {};
|
||||
}
|
||||
throw error;
|
||||
}
|
||||
const parsed = JSON.parse(raw);
|
||||
if (parsed == null || typeof parsed !== "object" || Array.isArray(parsed)) {
|
||||
throw new Error(`artifact package-candidate.json must contain a JSON object`);
|
||||
}
|
||||
return parsed;
|
||||
}
|
||||
|
||||
async function revParseTrustedInputRef(ref) {
|
||||
const candidates = [ref, `refs/remotes/origin/${ref}`, `refs/tags/${ref}`];
|
||||
for (const candidate of candidates) {
|
||||
@@ -362,6 +380,7 @@ async function resolveCandidate(options) {
|
||||
let packageSourceSha = "";
|
||||
let packageTrustedReason = "";
|
||||
let packageWorktreeDir = "";
|
||||
let artifactMetadata = {};
|
||||
|
||||
try {
|
||||
if (options.source === "ref") {
|
||||
@@ -411,6 +430,17 @@ async function resolveCandidate(options) {
|
||||
if (!options.artifactDir) {
|
||||
throw new Error("source=artifact requires --artifact-dir");
|
||||
}
|
||||
artifactMetadata = await readArtifactPackageCandidateMetadata(options.artifactDir);
|
||||
packageRef =
|
||||
typeof artifactMetadata.packageRef === "string" ? artifactMetadata.packageRef : "";
|
||||
packageSourceSha =
|
||||
typeof artifactMetadata.packageSourceSha === "string"
|
||||
? artifactMetadata.packageSourceSha
|
||||
: "";
|
||||
packageTrustedReason =
|
||||
typeof artifactMetadata.packageTrustedReason === "string"
|
||||
? artifactMetadata.packageTrustedReason
|
||||
: "";
|
||||
const input = await findSingleTarball(options.artifactDir);
|
||||
await fs.copyFile(input, target);
|
||||
} else {
|
||||
@@ -422,7 +452,8 @@ async function resolveCandidate(options) {
|
||||
}
|
||||
}
|
||||
|
||||
const digest = await assertExpectedSha256(target, options.packageSha256);
|
||||
const artifactSha256 = typeof artifactMetadata.sha256 === "string" ? artifactMetadata.sha256 : "";
|
||||
const digest = await assertExpectedSha256(target, options.packageSha256 || artifactSha256);
|
||||
console.error(`Checking OpenClaw package tarball: ${target}`);
|
||||
const checkStartedAt = Date.now();
|
||||
await run("node", ["scripts/check-openclaw-package-tarball.mjs", target], {
|
||||
|
||||
Reference in New Issue
Block a user