summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorElizabeth Hunt <me@liz.coffee>2025-07-01 10:12:55 -0700
committerElizabeth Hunt <me@liz.coffee>2025-07-01 10:12:55 -0700
commit8fbbe6396f400a9a50d4686c39969470edf2a246 (patch)
tree4832c535816d59b30bbf7eb059259194a3bfc46c
parentfd5fb8b5e19bb6b09ed6e2a6050ba6c4a375d520 (diff)
downloadci-8fbbe6396f400a9a50d4686c39969470edf2a246.tar.gz
ci-8fbbe6396f400a9a50d4686c39969470edf2a246.zip
Lift all utility functions in runner scripts
-rwxr-xr-xworker/scripts/ansible_playbook.ts5
-rwxr-xr-xworker/scripts/build_docker_image.ts26
-rwxr-xr-xworker/scripts/checkout_ci.ts44
3 files changed, 40 insertions, 35 deletions
diff --git a/worker/scripts/ansible_playbook.ts b/worker/scripts/ansible_playbook.ts
index fb4b801..4ec3ffa 100755
--- a/worker/scripts/ansible_playbook.ts
+++ b/worker/scripts/ansible_playbook.ts
@@ -90,11 +90,12 @@ await LogMetricTraceable.ofLogTraceable(_logJob)
})
.get();
-const saveToTempFile = (text: string): Promise<IEither<Error, string>> =>
- Either.fromFailableAsync(() =>
+function saveToTempFile(text: string): Promise<IEither<Error, string>> {
+ return Either.fromFailableAsync(() =>
mkdtemp(join(tmpdir(), 'ci-')).then(async (dir) => {
const filePath = join(dir, 'temp-file');
await writeFile(filePath, text);
return filePath;
}),
);
+}
diff --git a/worker/scripts/build_docker_image.ts b/worker/scripts/build_docker_image.ts
index 5dd5b4e..1783e7c 100755
--- a/worker/scripts/build_docker_image.ts
+++ b/worker/scripts/build_docker_image.ts
@@ -7,6 +7,7 @@ import {
LogMetricTraceable,
Metric,
TraceUtil,
+ Command,
} from '@emprespresso/pengueno';
import type { BuildDockerImageJob, BuildDockerImageJobProps } from '@emprespresso/ci_model';
import { Bitwarden, type LoginItem } from '@emprespresso/ci_worker';
@@ -26,7 +27,7 @@ const eitherJob = getRequiredEnvVars([
arguments: baseArgs,
},
);
-console.log(eitherJob);
+
const eitherVault = Bitwarden.getConfigFromEnvironment().mapRight((config) => new Bitwarden(config));
const buildImageMetric = Metric.fromName('dockerImage.build').asResult();
@@ -105,19 +106,14 @@ await LogMetricTraceable.ofLogTraceable(_logJob)
})
.get();
-const getDockerLoginCommand = (username: string, registry: string) =>
- `docker login --username ${username} --password $REGISTRY_PASSWORD ${registry}`.split(' ');
+function getDockerLoginCommand(username: string, registry: string): Command {
+ return `docker login --username ${username} --password $REGISTRY_PASSWORD ${registry}`.split(' ');
+}
-const getBuildCommand = ({ buildTarget, imageTag, dockerfile, context }: BuildDockerImageJobProps) => [
- 'docker',
- 'build',
- '--target',
- buildTarget,
- '-t',
- imageTag,
- '-f',
- dockerfile,
- context,
-];
+function getBuildCommand({ buildTarget, imageTag, dockerfile, context }: BuildDockerImageJobProps): Command {
+ return ['docker', 'build', '--target', buildTarget, '-t', imageTag, '-f', dockerfile, context];
+}
-const getPushCommand = (tag: string) => ['docker', 'push', tag];
+function getPushCommand(tag: string): Command {
+ return ['docker', 'push', tag];
+}
diff --git a/worker/scripts/checkout_ci.ts b/worker/scripts/checkout_ci.ts
index 337aae1..dade7c4 100755
--- a/worker/scripts/checkout_ci.ts
+++ b/worker/scripts/checkout_ci.ts
@@ -119,34 +119,42 @@ await LogMetricTraceable.ofLogTraceable(_logJob)
})
.get();
-const getWorkingDirectoryForCiJob = (job: CheckoutCiJob) => `${job.arguments.returnPath}/${job.arguments.run}`;
+function getWorkingDirectoryForCiJob(job: CheckoutCiJob) {
+ return `${job.arguments.returnPath}/${job.arguments.run}`;
+}
-const getSrcDirectoryForCiJob = (job: CheckoutCiJob) => `${job.arguments.returnPath}/${job.arguments.run}/src`;
+function getSrcDirectoryForCiJob(job: CheckoutCiJob) {
+ return `${job.arguments.returnPath}/${job.arguments.run}/src`;
+}
const _runFlags = ('--rm --network none --cap-drop ALL' + '--security-opt no-new-privileges').split(' ');
const _image = 'oci.liz.coffee/img/ci-worker:release';
-const getPipelineGenerationCommand = (
+function getPipelineGenerationCommand(
job: CheckoutCiJob,
pipelineGeneratorPath: string,
image = _image,
runFlags = _runFlags,
-): Command => [
- 'docker',
- 'run',
- ...runFlags,
- ...prependWith(
- Object.entries(job.arguments).map(([key, val]) => `"${key}"="${val}"`),
- '-e',
- ),
- '-v',
- `${getSrcDirectoryForCiJob(job)}/${pipelineGeneratorPath}:/pipeline_generator`,
- image,
- '/pipeline_generator',
-];
+): Command {
+ return [
+ 'docker',
+ 'run',
+ ...runFlags,
+ ...prependWith(
+ Object.entries(job.arguments).map(([key, val]) => `"${key}"="${val}"`),
+ '-e',
+ ),
+ '-v',
+ `${getSrcDirectoryForCiJob(job)}/${pipelineGeneratorPath}:/pipeline_generator`,
+ image,
+ '/pipeline_generator',
+ ];
+}
export interface CiWorkflow {
workflow: string;
}
-export const isCiWorkflow = (t: unknown): t is CiWorkflow =>
- isObject(t) && 'workflow' in t && typeof t.workflow === 'string' && !t.workflow.includes('..');
+export function isCiWorkflow(t: unknown): t is CiWorkflow {
+ return isObject(t) && 'workflow' in t && typeof t.workflow === 'string' && !t.workflow.includes('..');
+}
+
const CI_WORKFLOW_FILE = '.ci/ci.json';