fix: materialize shared artifacts without prior catalog

This commit is contained in:
root
2026-07-23 02:26:30 +02:00
parent 1c67a1e88d
commit 585c6ee61a
5 changed files with 339 additions and 422 deletions
@@ -24,10 +24,21 @@ if [ -s /workspace/source/affected-services.json ] && ! node -e 'const fs=requir
node - "$(params.service-id)" <<'NODE'
const fs = require("node:fs");
const serviceId = process.argv[2];
const catalog = JSON.parse(fs.readFileSync(process.env.HWLAB_ARTIFACT_CATALOG_PATH, "utf8"));
const plan = fs.existsSync("/workspace/source/affected-services.json") ? JSON.parse(fs.readFileSync("/workspace/source/affected-services.json", "utf8")) : {};
const service = (catalog.services || []).find((item) => item.serviceId === serviceId) || {};
const planned = (plan.services || []).find((item) => item.serviceId === serviceId) || {};
const sharedEnvSourceServiceId = planned.envArtifactSourceServiceId || planned.envArtifactBuildServiceId || "";
const sharedEnvSource = (plan.services || []).find((item) => item.serviceId === sharedEnvSourceServiceId) || {};
if (planned.envReuse === true && sharedEnvSourceServiceId && sharedEnvSourceServiceId !== serviceId && sharedEnvSource.buildRequired === true) {
console.log(JSON.stringify({
event: "service-build-skip",
serviceId,
reason: "shared-env-artifact-pending",
envArtifactSourceServiceId: sharedEnvSourceServiceId
}));
process.exit(0);
}
const catalog = JSON.parse(fs.readFileSync(process.env.HWLAB_ARTIFACT_CATALOG_PATH, "utf8"));
const service = (catalog.services || []).find((item) => item.serviceId === serviceId) || {};
const envReuse = planned.runtimeMode === "env-reuse-gitea-checkout" || service.runtimeMode === "env-reuse-gitea-checkout" || planned.envReuse === true || service.envReuse === true;
const image = envReuse ? (service.environmentImage || service.image || "") : (service.image || "");
const digest = envReuse ? (service.environmentDigest || service.digest || "not_published") : (service.digest || "not_published");