diff options
author | Elizabeth Hunt <me@liz.coffee> | 2025-06-20 14:53:38 -0700 |
---|---|---|
committer | Elizabeth Hunt <me@liz.coffee> | 2025-06-20 14:53:38 -0700 |
commit | d4791f3d357634daf506fb8f91cc5332a794c421 (patch) | |
tree | 1bb01d2d4d8fa74d83bb6f99f2c8aa4146ca2d11 /.ci/ci.ts | |
parent | d7e8d31c94cd713a2f4cf799e20e993acc69e361 (diff) | |
download | ci-d4791f3d357634daf506fb8f91cc5332a794c421.tar.gz ci-d4791f3d357634daf506fb8f91cc5332a794c421.zip |
Move to nodejs
Diffstat (limited to '.ci/ci.ts')
-rw-r--r-- | .ci/ci.ts | 139 |
1 files changed, 69 insertions, 70 deletions
@@ -1,84 +1,83 @@ -#!/usr/bin/env -S deno run --allow-env +#!/usr/bin/env ts-node import { - AnsiblePlaybookJob, - BuildDockerImageJob, - DefaultGitHookPipelineBuilder, - FetchCodeJob, -} from "@emprespresso/ci_model"; + AnsiblePlaybookJob, + BuildDockerImageJob, + DefaultGitHookPipelineBuilder, + FetchCodeJob, +} from '../model/index.js'; -const REGISTRY = "oci.liz.coffee"; -const NAMESPACE = "emprespresso"; -const IMG = "ci"; -const REMOTE = "ssh://src.liz.coffee:2222"; +const REGISTRY = 'oci.liz.coffee'; +const NAMESPACE = 'emprespresso'; +const IMG = 'ci'; +const REMOTE = 'ssh://src.liz.coffee:2222'; const getPipeline = () => { - const gitHookPipeline = new DefaultGitHookPipelineBuilder(); - const branch = gitHookPipeline.getBranch(); - if (!branch) return gitHookPipeline.build(); + const gitHookPipeline = new DefaultGitHookPipelineBuilder(); + const branch = gitHookPipeline.getBranch(); + if (!branch) return gitHookPipeline.build(); - const commonBuildArgs = { - registry: REGISTRY, - namespace: NAMESPACE, - imageTag: branch, - }; + const commonBuildArgs = { + registry: REGISTRY, + namespace: NAMESPACE, + imageTag: branch, + }; - const baseCiPackageBuild: BuildDockerImageJob = { - type: "build_docker_image.ts", - arguments: { - ...commonBuildArgs, - context: gitHookPipeline.getSourceDestination(), - repository: IMG + "_base", - buildTarget: IMG + "_base", - dockerfile: "Dockerfile", - }, - }; - gitHookPipeline.addStage({ - parallelJobs: [baseCiPackageBuild], - }); + const baseCiPackageBuild: BuildDockerImageJob = { + type: 'build_docker_image.ts', + arguments: { + ...commonBuildArgs, + context: gitHookPipeline.getSourceDestination(), + repository: IMG + '_base', + buildTarget: IMG + '_base', + dockerfile: 'Dockerfile', + }, + }; + gitHookPipeline.addStage({ + parallelJobs: [baseCiPackageBuild], + }); - const subPackages = ["worker", "hooks"].map((_package) => ({ - type: "build_docker_image.ts", - arguments: { - ...commonBuildArgs, - repository: `${IMG}_${_package}`, - buildTarget: _package, - dockerfile: `${_package}/Dockerfile`, - }, - })); - gitHookPipeline.addStage({ - parallelJobs: subPackages, - }); + const subPackages = ['worker', 'hooks'].map((_package) => ({ + type: 'build_docker_image.ts', + arguments: { + ...commonBuildArgs, + repository: `${IMG}_${_package}`, + buildTarget: _package, + dockerfile: `${_package}/Dockerfile`, + }, + })); + gitHookPipeline.addStage({ + parallelJobs: subPackages, + }); - const isRelease = branch === "release"; - if (!isRelease) { - return gitHookPipeline.build(); - } + const isRelease = branch === 'release'; + if (!isRelease) { + return gitHookPipeline.build(); + } - const fetchAnsibleCode: FetchCodeJob = { - type: "fetch_code.ts", - arguments: { - remoteUrl: `${REMOTE}/infra`, - checkout: "main", - path: "infra", - }, - }; - const thenDeploy: AnsiblePlaybookJob = { - type: "ansible_playbook.ts", - arguments: { - path: "infra", - playbooks: "playbooks/ci.yml", - }, - }; - [fetchAnsibleCode, thenDeploy].forEach((deploymentStage) => - gitHookPipeline.addStage({ parallelJobs: [deploymentStage] }), - ); + const fetchAnsibleCode: FetchCodeJob = { + type: 'fetch_code.ts', + arguments: { + remoteUrl: `${REMOTE}/infra`, + checkout: 'main', + path: 'infra', + }, + }; + const thenDeploy: AnsiblePlaybookJob = { + type: 'ansible_playbook.ts', + arguments: { + path: 'infra', + playbooks: 'playbooks/ci.yml', + }, + }; + [fetchAnsibleCode, thenDeploy].forEach((deploymentStage) => + gitHookPipeline.addStage({ parallelJobs: [deploymentStage] }), + ); - return gitHookPipeline.build(); + return gitHookPipeline.build(); }; -if (import.meta.main) { - const encoder = new TextEncoder(); - const data = encoder.encode(getPipeline().serialize()); - await Deno.stdout.write(data); +if (import.meta.url === `file://${process.argv[1]}`) { + const data = getPipeline().serialize(); + process.stdout.write(data); } |