@catladder/pipeline
Version:
Panter workflow for cloud CI/CD and DevOps
98 lines (91 loc) • 2.31 kB
text/typescript
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",
},
}),
},
};