Merge pull request #2147 from pikasTech/fix/pikaoa-pac-shared-repository
Pipelines as Code CI / hwlab-web-probe-sentinel-nc01- Success
Pipelines as Code CI / platform-infra-gitea-nc01- Failed
Pipelines as Code CI / unidesk-host- Failed

fix(pikaoa): 共享 PaC Repository 并隔离 release lane
This commit is contained in:
Lyon
2026-07-15 14:53:56 +08:00
committed by GitHub
3 changed files with 16 additions and 46 deletions
@@ -16,7 +16,16 @@ function rendererBinding(id = "pikaoa-test-nc01"): Parameters<typeof renderPikao
const consumer = consumers.find((item) => item.id === id);
const repository = repositories.find((item) => item.id === consumer?.repositoryRef);
if (repository === undefined || consumer === undefined) throw new Error(`PikaOA PaC fixture is required: ${id}`);
return { consumer, repository } as Parameters<typeof renderPikaoaTestDesiredPipeline>[0];
return {
consumer,
repository: {
...repository,
params: {
...(repository.params as Record<string, unknown>),
...((consumer.params as Record<string, unknown> | undefined) ?? {}),
},
},
} as Parameters<typeof renderPikaoaTestDesiredPipeline>[0];
}
function sourceFixture(): string {
@@ -27,21 +36,21 @@ function sourceFixture(): string {
}
describe("PikaOA test PaC renderer", () => {
test("keeps master test and release production consumers isolated", () => {
test("shares one PaC repository while isolating master and release consumers", () => {
const document = pacDocument();
const repositories = document.repositories as Array<Record<string, unknown>>;
const consumers = document.consumers as Array<Record<string, unknown>>;
const repository = repositories.find((item) => item.id === "pikaoa-test-nc01");
const testConsumer = consumers.find((item) => item.id === "pikaoa-test-nc01");
const productionConsumer = consumers.find((item) => item.id === "pikaoa-nc01");
const productionRepository = repositories.find((item) => item.id === "pikaoa-nc01");
const duplicateProductionRepository = repositories.find((item) => item.id === "pikaoa-nc01");
expect((repository?.params as Record<string, unknown>).source_branch).toBe("master");
expect((testConsumer?.sourceArtifact as Record<string, unknown>).pipelineRunPath).toBe(".tekton/pikaoa-test-nc01-pac.yaml");
expect((testConsumer?.sourceArtifact as Record<string, unknown>).renderer).toBe("pikaoa-test-runtime");
expect((productionConsumer?.params as Record<string, unknown>).source_branch).toBe("release");
expect((productionConsumer?.params as Record<string, unknown>).source_snapshot_prefix).toBe("refs/unidesk/snapshots/gitea-actions/pikaoa-release-nc01");
expect(productionConsumer?.repositoryRef).toBe("pikaoa-nc01");
expect((productionRepository?.params as Record<string, unknown>).source_branch).toBe("release");
expect(productionConsumer?.repositoryRef).toBe("pikaoa-test-nc01");
expect(duplicateProductionRepository).toBeUndefined();
expect((productionConsumer?.sourceArtifact as Record<string, unknown>).renderer).toBe("pikaoa-release-runtime");
expect((productionConsumer?.sourceArtifact as Record<string, unknown>).configRef).toBe("config/pikaoa.yaml#releaseRuntime.targets.NC01");
});
@@ -133,7 +133,7 @@ test("unselected parse and repository errors remain warnings while selected obje
evidence: expect.stringMatching(/^type=string,length=\d+,sha256=[0-9a-f]{64}$/u),
});
expect(validPacConsumers(isolated).some((consumer) => consumer.repositoryRef === "pikaoa-test-nc01")).toBe(false);
expect(() => parsePacConfigDocument(invalidRepositoryDocument, { consumerId: "pikaoa-nc01" })).not.toThrow();
expect(() => parsePacConfigDocument(invalidRepositoryDocument, { consumerId: "pikaoa-nc01" })).toThrow("cloneUrl");
const duplicateSelectedRepository = pacConfigDocument();
const repositories = duplicateSelectedRepository.repositories as Array<Record<string, unknown>>;