UNPKG

@catladder/pipeline

Version:

Panter workflow for cloud CI/CD and DevOps

98 lines (91 loc) 2.31 kB
import type { ComponentContextWithBuild, WorkspaceContext, } from "../types/context"; import type { EnvironmentContext } from "../types/environmentContext"; import type { CatladderJob } from "../types/jobs"; import { createCustomJobs } from "./custom"; import { createMeteorJobs, createNodeJobs, createStorybookJobs } from "./node"; import { createRailsJobs } from "./rails"; import type { BuildConfig, BuildConfigStandaloneType, WorkspaceBuildConfig, } from "./types"; export * from "./node"; export * from "./types"; export type BuildTypes = { [type in BuildConfigStandaloneType]: { jobs: (context: ComponentContextWithBuild) => CatladderJob[]; defaults: ( envContext: EnvironmentContext, ) => Partial<Extract<BuildConfig, { type: type }>>; }; }; export const BUILD_TYPES: BuildTypes = { node: { jobs: createNodeJobs, defaults: () => ({ buildCommand: "yarn build", startCommand: "yarn start", artifactsPaths: ["dist", ".next"], artifactsExcludePaths: [".next/cache/**/*"], }), }, "node-static": { jobs: createNodeJobs, defaults: () => ({ buildCommand: "yarn build", artifactsPaths: ["dist"], }), }, storybook: { jobs: createStorybookJobs, defaults: () => ({ buildCommand: ["yarn build-storybook --quiet -o ./dist"], artifactsPaths: ["dist"], }), }, meteor: { jobs: createMeteorJobs, defaults: () => ({ startCommand: "node main.js", artifactsPaths: ["dist"], }), }, custom: { jobs: createCustomJobs, defaults: () => ({ artifactsPaths: ["dist"], }), }, rails: { jobs: createRailsJobs, defaults: () => ({ cnbBuilder: { image: "heroku/builder:24", packVersion: "0.36.4", }, }), }, }; export type WorkspaceBuildTypes = { [type in WorkspaceBuildConfig["type"]]: { jobs: (context: WorkspaceContext) => CatladderJob[]; defaults: () => Partial<Extract<WorkspaceBuildConfig, { type: type }>>; }; }; export const WORKSPACE_BUILD_TYPES: WorkspaceBuildTypes = { node: { jobs: createNodeJobs, defaults: () => ({ buildCommand: "yarn build", lint: { command: "yarn lint", }, test: { command: "yarn test", }, }), }, };