export type JobArgT = Record; export interface Job { readonly type: string; readonly arguments: JobArgT; } export interface FetchCodeJobProps extends JobArgT { readonly remoteUrl: string; readonly checkout: string; readonly path: string; } export interface FetchCodeJob { readonly type: "fetch_code"; 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"; readonly arguments: BuildDockerImageJobProps; } export interface AnsiblePlaybookJobProps extends JobArgT { readonly path: string; readonly playbooks: string; } export interface AnsiblePlaybookJob extends Job { readonly type: "ansible_playbook"; readonly arguments: AnsiblePlaybookJobProps; }