Merge pull request #971 from pikasTech/fix/issue955-web-renderer-ci-dep

fix: include trace renderer in cloud web rollout plan
This commit is contained in:
Lyon
2026-06-06 10:48:34 +08:00
committed by GitHub
2 changed files with 49 additions and 1 deletions
+47
View File
@@ -253,6 +253,53 @@ test("planner scopes cloud-web runtime changes to cloud-web", async () => {
assert.deepEqual(cloudWeb.reason, ["component-path-changed"]);
});
test("v02 planner treats shared trace renderer changes as cloud-web code rollout inputs", async () => {
const repo = await createFixtureRepo();
const initialSha = (await git(repo, ["rev-parse", "HEAD"])).stdout.trim();
const initialPlan = await createG14CiPlan({
repoRoot: repo,
lane: "v02",
baseRef: "HEAD",
targetRef: initialSha,
artifactCatalogPath: "deploy/artifact-catalog.v02.json",
services: ["hwlab-cloud-api", "hwlab-cloud-web"]
});
const initialCloudWeb = initialPlan.services.find((service) => service.serviceId === "hwlab-cloud-web");
const initialHashes = Object.fromEntries(initialPlan.services.map((service) => [service.serviceId, service.componentInputHash]));
await writeFile(path.join(repo, "deploy/artifact-catalog.v02.json"), JSON.stringify(createCatalogFixture("ready", {
sourceCommitId: initialPlan.sourceCommitId,
componentInputHashes: initialHashes,
cloudWebEnvironmentInputHash: initialCloudWeb.environmentInputHash,
cloudWebCodeInputHash: initialCloudWeb.codeInputHash,
cloudWebBootCommit: initialPlan.sourceCommitId
}), null, 2));
await git(repo, ["add", "deploy/artifact-catalog.v02.json"]);
await git(repo, ["commit", "-m", "seed v02 catalog with trace renderer"]);
await mkdir(path.join(repo, "tools/src/hwlab-cli"), { recursive: true });
await writeFile(path.join(repo, "tools/src/hwlab-cli/trace-renderer.ts"), "export const traceRenderer = 2;\n");
await git(repo, ["add", "tools/src/hwlab-cli/trace-renderer.ts"]);
await git(repo, ["commit", "-m", "change shared trace renderer"]);
const plan = await createG14CiPlan({
repoRoot: repo,
lane: "v02",
baseRef: "HEAD~1",
targetRef: "HEAD",
artifactCatalogPath: "deploy/artifact-catalog.v02.json",
services: ["hwlab-cloud-api", "hwlab-cloud-web"]
});
const cloudApi = plan.services.find((service) => service.serviceId === "hwlab-cloud-api");
const cloudWeb = plan.services.find((service) => service.serviceId === "hwlab-cloud-web");
assert.deepEqual(plan.affectedServices, ["hwlab-cloud-web"]);
assert.deepEqual(plan.rolloutServices, ["hwlab-cloud-web"]);
assert.deepEqual(plan.buildServices, []);
assert.equal(cloudApi.affected, false);
assert.equal(cloudWeb.codeChanged, true);
assert.deepEqual(cloudWeb.codeChangedPaths, ["tools/src/hwlab-cli/trace-renderer.ts"]);
assert.deepEqual(cloudWeb.reason, ["code-input-changed", "component-path-changed"]);
});
test("planner ignores package script cleanup for runtime images", async () => {
const repo = await createFixtureRepo();
await writeFile(path.join(repo, "package.json"), JSON.stringify({
+2 -1
View File
@@ -86,7 +86,8 @@ const serviceSpecificPaths = Object.freeze({
"web/hwlab-cloud-web/",
"internal/dev-entrypoint/cloud-web-runtime.mjs",
"internal/dev-entrypoint/cloud-web-proxy.mjs",
"internal/dev-entrypoint/cloud-web-routes.mjs"
"internal/dev-entrypoint/cloud-web-routes.mjs",
"tools/src/hwlab-cli/trace-renderer.ts"
],
"hwlab-gateway": ["cmd/hwlab-gateway/"],
"hwlab-edge-proxy": ["cmd/hwlab-edge-proxy/", "internal/dev-entrypoint/http.mjs"],