#!/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 = 'mmt'; 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 mmtPackageBuild: BuildDockerImageJob = { type: 'build_docker_image.js', arguments: { ...commonBuildArgs, repository: IMG, buildTarget: IMG, dockerfile: 'Dockerfile' } }; gitHookPipeline.addStage({ parallelJobs: [mmtPackageBuild] }); 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=f40gwg0gg4s4c000ws0s08s8&force=false'; case 'main': return 'https://plane.liz.coffee/api/v1/deploy?uuid=gcw80ssgwg80ogs0sc4k0ww0&force=false'; default: return null; } }; const main = () => { const data = getPipeline().serialize(); process.stdout.write(data); }; main();