summaryrefslogtreecommitdiff
path: root/model/job
diff options
context:
space:
mode:
authorElizabeth Hunt <me@liz.coffee>2025-06-20 14:53:38 -0700
committerElizabeth Hunt <me@liz.coffee>2025-06-20 14:53:38 -0700
commitd4791f3d357634daf506fb8f91cc5332a794c421 (patch)
tree1bb01d2d4d8fa74d83bb6f99f2c8aa4146ca2d11 /model/job
parentd7e8d31c94cd713a2f4cf799e20e993acc69e361 (diff)
downloadci-d4791f3d357634daf506fb8f91cc5332a794c421.tar.gz
ci-d4791f3d357634daf506fb8f91cc5332a794c421.zip
Move to nodejs
Diffstat (limited to 'model/job')
-rw-r--r--model/job/index.ts11
-rw-r--r--model/job/jobs.ts52
2 files changed, 63 insertions, 0 deletions
diff --git a/model/job/index.ts b/model/job/index.ts
new file mode 100644
index 0000000..78f69d6
--- /dev/null
+++ b/model/job/index.ts
@@ -0,0 +1,11 @@
+import { isObject } from '@emprespresso/pengueno';
+
+export type JobArgT = Record<string, string>;
+export interface Job {
+ readonly type: string;
+ readonly arguments: JobArgT;
+}
+export const isJob = (j: unknown): j is Job =>
+ !!(isObject(j) && 'arguments' in j && isObject(j.arguments) && 'type' in j && typeof j.type === 'string' && j);
+
+export * from './jobs';
diff --git a/model/job/jobs.ts b/model/job/jobs.ts
new file mode 100644
index 0000000..e201c4d
--- /dev/null
+++ b/model/job/jobs.ts
@@ -0,0 +1,52 @@
+import { Job, JobArgT } from '.';
+
+export interface FetchCodeJobProps extends JobArgT {
+ readonly remoteUrl: string;
+ readonly checkout: string;
+ readonly path: string;
+}
+
+export interface FetchCodeJob {
+ readonly type: 'fetch_code.ts';
+ readonly arguments: FetchCodeJobProps;
+}
+
+export interface BuildDockerImageJobProps extends JobArgT {
+ readonly registry: string;
+ readonly namespace: string;
+ readonly repository: string;
+ readonly imageTag: string;
+
+ readonly context: string;
+ readonly dockerfile: string;
+ readonly buildTarget: string;
+}
+
+export interface BuildDockerImageJob extends Job {
+ readonly type: 'build_docker_image.ts';
+ readonly arguments: BuildDockerImageJobProps;
+}
+
+export interface AnsiblePlaybookJobProps extends JobArgT {
+ readonly path: string;
+ readonly playbooks: string;
+}
+
+export interface AnsiblePlaybookJob extends Job {
+ readonly type: 'ansible_playbook.ts';
+ readonly arguments: AnsiblePlaybookJobProps;
+}
+
+export interface CheckoutCiJobProps extends JobArgT {
+ readonly remote: string;
+ readonly refname: string;
+ readonly rev: string;
+
+ readonly run: string;
+ readonly returnPath: string;
+}
+
+export interface CheckoutCiJob extends Job {
+ readonly type: 'checkout_ci.ts';
+ readonly arguments: CheckoutCiJobProps;
+}