fix: reconcile PaC repository URLs through GitOps
This commit is contained in:
@@ -254,9 +254,14 @@ async function main() {
|
||||
const sourceCommit = fullCommit(option("--source-commit"), "--source-commit");
|
||||
const worktree = resolve(option("--worktree") ?? "/workspace/platform-infra-gitea-gitops");
|
||||
const moduleUrl = pathToFileURL(resolve(sourceRoot, "scripts", "src", "platform-infra-gitea.ts")).href;
|
||||
const pacModuleUrl = pathToFileURL(resolve(sourceRoot, "scripts", "src", "platform-infra-pipelines-as-code.ts")).href;
|
||||
const module = await import(moduleUrl);
|
||||
const pacModule = await import(pacModuleUrl);
|
||||
const delivery = module.readGiteaWebhookGitOpsDelivery();
|
||||
const desiredManifest = module.renderGiteaWebhookSyncDesiredManifest(delivery.targetId);
|
||||
const desiredManifest = [
|
||||
module.renderGiteaWebhookSyncDesiredManifest(delivery.targetId).trim(),
|
||||
pacModule.renderPacRepositoryDesiredFragment(delivery.targetId).trim(),
|
||||
].filter((item) => item.length > 0).join("\n---\n") + "\n";
|
||||
const result = publishPlatformInfraGiteaGitOps({ delivery, desiredManifest, sourceRoot, sourceCommit, worktree });
|
||||
process.stdout.write(`${JSON.stringify(result)}\n`);
|
||||
}
|
||||
|
||||
@@ -1366,6 +1366,40 @@ export function validPacConsumers(config: PacConfig): PacConsumer[] {
|
||||
));
|
||||
}
|
||||
|
||||
export function renderPacRepositoryDesiredFragment(targetId: string): string {
|
||||
const pac = readPacConfig();
|
||||
const targetConsumers = validPacConsumers(pac)
|
||||
.filter((consumer) => consumer.node.toLowerCase() === targetId.toLowerCase());
|
||||
const repositoryRefs = [...new Set(targetConsumers.map((consumer) => consumer.repositoryRef))];
|
||||
const repositories = repositoryRefs
|
||||
.map((repositoryRef) => resolveRepository(pac, repositoryRef))
|
||||
.sort((left, right) => `${left.namespace}/${left.name}`.localeCompare(`${right.namespace}/${right.name}`));
|
||||
return repositories.map((repository) => Bun.YAML.stringify({
|
||||
apiVersion: "pipelinesascode.tekton.dev/v1alpha1",
|
||||
kind: "Repository",
|
||||
metadata: {
|
||||
name: repository.name,
|
||||
namespace: repository.namespace,
|
||||
labels: {
|
||||
"app.kubernetes.io/managed-by": "unidesk",
|
||||
"app.kubernetes.io/part-of": "pipelines-as-code",
|
||||
"unidesk.ai/spec": pac.metadata.spec,
|
||||
},
|
||||
},
|
||||
spec: {
|
||||
url: repository.url,
|
||||
git_provider: {
|
||||
type: repository.providerType,
|
||||
url: pac.gitea.internalBaseUrl,
|
||||
secret: { name: repository.secretName, key: repository.tokenKey },
|
||||
webhook_secret: { name: repository.secretName, key: repository.webhookSecretKey },
|
||||
},
|
||||
concurrency_limit: repository.concurrencyLimit,
|
||||
params: Object.entries(repository.params).map(([name, value]) => ({ name, value })),
|
||||
},
|
||||
}).trim()).join("\n---\n") + (repositories.length > 0 ? "\n" : "");
|
||||
}
|
||||
|
||||
function plan(options: CommonOptions): Record<string, unknown> {
|
||||
const pac = readPacConfig({ consumerId: options.consumerId, selectDefault: true });
|
||||
const target = resolveTarget(pac, options.targetId);
|
||||
|
||||
Reference in New Issue
Block a user