summaryrefslogtreecommitdiff
path: root/.ci
diff options
context:
space:
mode:
authorElizabeth Hunt <me@liz.coffee>2025-12-14 17:36:55 -0800
committerElizabeth Hunt <me@liz.coffee>2025-12-14 17:36:55 -0800
commit0888840cf20de2187095daa154ec441240a12ef3 (patch)
tree40b20808ecb31200978dc7de466d3e2102f987d6 /.ci
downloadlizdotcoffee-0888840cf20de2187095daa154ec441240a12ef3.tar.gz
lizdotcoffee-0888840cf20de2187095daa154ec441240a12ef3.zip
Init
Diffstat (limited to '.ci')
-rw-r--r--.ci/ci.ts77
1 files changed, 77 insertions, 0 deletions
diff --git a/.ci/ci.ts b/.ci/ci.ts
new file mode 100644
index 0000000..ac4c9b4
--- /dev/null
+++ b/.ci/ci.ts
@@ -0,0 +1,77 @@
+#!/usr/bin/env node
+
+import {
+ AnsiblePlaybookJob,
+ BuildDockerImageJob,
+ DefaultGitHookPipelineBuilder,
+ NpmPublishJob,
+ FetchCodeJob,
+ CoolifyWebhookJob,
+ Job,
+} from "@emprespresso/ci_model";
+import { join } from "path";
+
+const REGISTRY = "img.liz.coffee";
+const NAMESPACE = "emprespresso";
+const IMG = "lizdotcoffee";
+const REMOTE = "https://code.liz.coffee";
+
+const getPipeline = () => {
+ const gitHookPipeline = new DefaultGitHookPipelineBuilder();
+ const branch = gitHookPipeline.getBranch();
+ if (!branch) return gitHookPipeline.build();
+
+ const commonBuildArgs = {
+ context: gitHookPipeline.getSourceDestination(),
+ registry: REGISTRY,
+ namespace: NAMESPACE,
+ imageTag: branch,
+ };
+
+ const adeliePackageBuild: BuildDockerImageJob = {
+ type: "build_docker_image.js",
+ arguments: {
+ ...commonBuildArgs,
+ repository: IMG,
+ buildTarget: IMG,
+ dockerfile: "Dockerfile",
+ },
+ };
+ gitHookPipeline.addStage({
+ parallelJobs: [adeliePackageBuild],
+ });
+
+ const webhookUrl = getReleaseDeployment(branch);
+ if (webhookUrl === null) {
+ return gitHookPipeline.build();
+ }
+
+ const release: CoolifyWebhookJob = {
+ type: "coolify_webhook.js",
+ arguments: {
+ webhookUrl: webhookUrl!!,
+ },
+ };
+ gitHookPipeline.addStage({ parallelJobs: [release] });
+
+ return gitHookPipeline.build();
+};
+
+const getReleaseDeployment = (branch: string) => {
+ switch (branch) {
+ case "release":
+ return "https://plane.liz.coffee/api/v1/deploy?uuid=c8k4wow4gckss8008cg4g8ko&force=false";
+ case "main":
+ return "https://plane.liz.coffee/api/v1/deploy?uuid=zoookks8o8wkk48gswgg0coo&force=false";
+ default:
+ return null;
+ }
+};
+
+const main = () => {
+ const data = getPipeline().serialize();
+ process.stdout.write(data);
+};
+
+main();
+