@teambit/builder 0.0.1125 → 0.0.1126
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/builder.service.tsx +11 -40
- package/dist/build-pipeline-order.d.ts +2 -1
- package/dist/build-pipeline-order.js +1 -1
- package/dist/build-pipeline-order.js.map +1 -1
- package/dist/builder.service.d.ts +4 -5
- package/dist/builder.service.js +5 -34
- package/dist/builder.service.js.map +1 -1
- package/dist/{preview-1690973995513.js → preview-1691523857630.js} +2 -2
- package/package-tar/teambit-builder-0.0.1126.tgz +0 -0
- package/package.json +19 -19
- package/package-tar/teambit-builder-0.0.1125.tgz +0 -0
package/builder.service.tsx
CHANGED
|
@@ -52,8 +52,8 @@ export type PipeName = 'build' | 'tag' | 'snap';
|
|
|
52
52
|
|
|
53
53
|
export type BuilderDescriptor = Array<{ pipeName: PipeName; tasks: string[] }>;
|
|
54
54
|
|
|
55
|
-
type PipeFunctionNames = keyof typeof pipeNames;
|
|
56
|
-
export class BuilderService implements EnvService<BuildServiceResults,
|
|
55
|
+
export type PipeFunctionNames = keyof typeof pipeNames;
|
|
56
|
+
export class BuilderService implements EnvService<BuildServiceResults, string> {
|
|
57
57
|
name = 'builder';
|
|
58
58
|
|
|
59
59
|
constructor(
|
|
@@ -154,11 +154,15 @@ export class BuilderService implements EnvService<BuildServiceResults, BuilderDe
|
|
|
154
154
|
return this.globalConfig.getSync(CFG_CAPSULES_BUILD_COMPONENTS_BASE_DIR);
|
|
155
155
|
}
|
|
156
156
|
|
|
157
|
-
render(
|
|
158
|
-
const
|
|
157
|
+
render() {
|
|
158
|
+
const descriptor = this.getDescriptor();
|
|
159
159
|
|
|
160
160
|
return (
|
|
161
|
-
<Text key={BuilderAspect.id}>
|
|
161
|
+
<Text key={BuilderAspect.id}>
|
|
162
|
+
{descriptor}
|
|
163
|
+
<Newline />
|
|
164
|
+
<Newline />
|
|
165
|
+
</Text>
|
|
162
166
|
);
|
|
163
167
|
}
|
|
164
168
|
|
|
@@ -185,41 +189,8 @@ export class BuilderService implements EnvService<BuildServiceResults, BuilderDe
|
|
|
185
189
|
};
|
|
186
190
|
}
|
|
187
191
|
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
return (
|
|
191
|
-
<Text key={pipeName}>
|
|
192
|
-
<Text underline color="green">
|
|
193
|
-
{pipeName} pipe
|
|
194
|
-
</Text>
|
|
195
|
-
<Newline />
|
|
196
|
-
<Text color="cyan">total {tasks.length} tasks are configured to be executed in the following order</Text>
|
|
197
|
-
<Newline />
|
|
198
|
-
{tasks.map((task, index) => (
|
|
199
|
-
<Text key={index}>
|
|
200
|
-
<Text>
|
|
201
|
-
{index + 1}. {task}
|
|
202
|
-
</Text>
|
|
203
|
-
<Newline />
|
|
204
|
-
</Text>
|
|
205
|
-
))}
|
|
206
|
-
<Newline />
|
|
207
|
-
</Text>
|
|
208
|
-
);
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
getDescriptor(env: EnvDefinition) {
|
|
212
|
-
// @ts-ignore
|
|
213
|
-
const tasks = Object.keys(pipeNames).map((pipeFuncName: PipeFunctionNames) => {
|
|
214
|
-
let tasksQueue: string[];
|
|
215
|
-
try {
|
|
216
|
-
tasksQueue = this.getTasksNamesByPipeFunc(env, pipeFuncName);
|
|
217
|
-
} catch (err: any) {
|
|
218
|
-
tasksQueue = [`<failed getting task-queue, error: ${err.message}>`];
|
|
219
|
-
}
|
|
220
|
-
return { pipeName: pipeNames[pipeFuncName], tasks: tasksQueue };
|
|
221
|
-
});
|
|
222
|
-
return tasks as BuilderDescriptor;
|
|
192
|
+
getDescriptor() {
|
|
193
|
+
return 'run `bit build --list-tasks <component-id>` to see the tasks list for the pipelines: build, tag and snap';
|
|
223
194
|
}
|
|
224
195
|
|
|
225
196
|
private getTasksNamesByPipeFunc(env: EnvDefinition, pipeFuncName: PipeFunctionNames): string[] {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { EnvDefinition } from '@teambit/envs';
|
|
2
2
|
import type { TaskSlot } from './builder.main.runtime';
|
|
3
3
|
import { TasksQueue } from './tasks-queue';
|
|
4
|
+
import { PipeFunctionNames } from './builder.service';
|
|
4
5
|
/**
|
|
5
6
|
* there are two ways how to add tasks to build pipeline.
|
|
6
7
|
* 1. `getBuildPipe()` method of the env.
|
|
@@ -31,4 +32,4 @@ import { TasksQueue } from './tasks-queue';
|
|
|
31
32
|
* field, the "PublishComponent" would have a dependency "compiler" and because in this case there
|
|
32
33
|
* is no compiler task, it would throw an error about missing dependencies.
|
|
33
34
|
*/
|
|
34
|
-
export declare function calculatePipelineOrder(taskSlot: TaskSlot, envs: EnvDefinition[], pipeNameOnEnv
|
|
35
|
+
export declare function calculatePipelineOrder(taskSlot: TaskSlot, envs: EnvDefinition[], pipeNameOnEnv: PipeFunctionNames, tasks?: string[], skipTests?: boolean): TasksQueue;
|
|
@@ -66,7 +66,7 @@ function _tasksQueue() {
|
|
|
66
66
|
* field, the "PublishComponent" would have a dependency "compiler" and because in this case there
|
|
67
67
|
* is no compiler task, it would throw an error about missing dependencies.
|
|
68
68
|
*/
|
|
69
|
-
function calculatePipelineOrder(taskSlot, envs, pipeNameOnEnv
|
|
69
|
+
function calculatePipelineOrder(taskSlot, envs, pipeNameOnEnv, tasks = [], skipTests = false) {
|
|
70
70
|
const graphs = [];
|
|
71
71
|
const locations = ['start', 'middle', 'end']; // the order is important here!
|
|
72
72
|
locations.forEach(location => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_graph","data","require","_tester","_interopRequireDefault","_buildTask","_tasksQueue","calculatePipelineOrder","taskSlot","envs","pipeNameOnEnv","tasks","skipTests","graphs","locations","forEach","location","push","graph","Graph","pipelineEnvs","envDefinition","pipeline","getPipelineForEnv","env","flattenedPipeline","map","pipelineEnv","flat","task","addDependenciesToGraph","dataPerLocation","pipelineEnvsPerLocation","filter","tasksQueue","TasksQueue","addTasksToGraph","length","includes","name","aspectId","TesterAspect","id","find","d","sorted","toposort","taskNode","BuildTaskHelper","deserializeId","attr","taskIndex","findIndex","pipelineTask","splice","dependencies","taskId","serializeId","dependency","deserializeIdAllowEmptyName","dependencyTasks","Error","dependencyTask","getLocation","graphLocation","g","dependencyId","setNode","Node","setEdge","Edge","taskLocation","dependencyLocation","isDependencyAhead","isDependencyEqual","buildTasks","slotsTasks","values","tasksAtStart","tasksAtEnd","mergedTasks"],"sources":["build-pipeline-order.ts"],"sourcesContent":["import { Graph, Node, Edge } from '@teambit/graph.cleargraph';\nimport TesterAspect from '@teambit/tester';\nimport { EnvDefinition, Environment } from '@teambit/envs';\nimport { BuildTask, BuildTaskHelper } from './build-task';\nimport type { TaskSlot } from './builder.main.runtime';\nimport { TasksQueue } from './tasks-queue';\n\ntype TaskDependenciesGraph = Graph<string, string>;\ntype Location = 'start' | 'middle' | 'end';\ntype TasksLocationGraph = { location: Location; graph: TaskDependenciesGraph };\ntype PipelineEnv = { env: EnvDefinition; pipeline: BuildTask[] };\ntype DataPerLocation = { location: Location; graph: TaskDependenciesGraph; pipelineEnvs: PipelineEnv[] };\n\n/**\n * there are two ways how to add tasks to build pipeline.\n * 1. `getBuildPipe()` method of the env.\n * 2. registering to the `builder.registerBuildTask()`.\n *\n * in the option #1, it's possible to determine the order. e.g. `getBuildPipe() { return [taskA, taskB, taskC]; }`\n * in the option #2, the register happens once the extension is loaded, so there is no way to put\n * one task before/after another task.\n *\n * To be able to determine the order, you can do the following\n * 1. \"task.location\", it has two options \"start\" and \"end\". the rest are \"middle\".\n * 2. \"task.dependencies\", the dependencies must be completed for all envs before this task starts.\n * the dependencies are applicable inside a location and not across locations. see getLocation()\n * or/and continue reading for more info about this.\n *\n * to determine the final order of the tasks, the following is done:\n * 1. split all tasks to three groups: start, middle and end.\n * 2. for each group define a dependencies graph for the tasks with \"dependencies\" prop and the pipeline.\n * 3. start with the first group \"start\", toposort the dependencies graph and push the found tasks\n * to a queue. once completed, iterate the pipeline and add all tasks to the queue.\n * 4. do the same for the \"middle\" and \"end\" groups.\n *\n * the reason for splitting the tasks to the three groups and not using the \"dependencies\" field\n * alone to determine the order is that the \"start\" and \"end\" groups are mostly core and \"middle\"\n * is mostly the user entering tasks to the pipeline and we as the core don't know about the users\n * tasks. For example, a core task \"PublishComponent\" must happen after the compiler, however, a\n * user might have an env without a compiler. if we determine the order only by the dependencies\n * field, the \"PublishComponent\" would have a dependency \"compiler\" and because in this case there\n * is no compiler task, it would throw an error about missing dependencies.\n */\nexport function calculatePipelineOrder(\n taskSlot: TaskSlot,\n envs: EnvDefinition[],\n pipeNameOnEnv = 'getBuildPipe',\n tasks: string[] = [],\n skipTests = false\n): TasksQueue {\n const graphs: TasksLocationGraph[] = [];\n const locations: Location[] = ['start', 'middle', 'end']; // the order is important here!\n locations.forEach((location) => {\n graphs.push({ location, graph: new Graph<string, string>() });\n });\n const pipelineEnvs: PipelineEnv[] = [];\n envs.forEach((envDefinition) => {\n const pipeline = getPipelineForEnv(taskSlot, envDefinition.env, pipeNameOnEnv);\n pipelineEnvs.push({ env: envDefinition, pipeline });\n });\n\n const flattenedPipeline: BuildTask[] = pipelineEnvs.map((pipelineEnv) => pipelineEnv.pipeline).flat();\n flattenedPipeline.forEach((task) => addDependenciesToGraph(graphs, flattenedPipeline, task));\n\n const dataPerLocation: DataPerLocation[] = graphs.map(({ location, graph }) => {\n const pipelineEnvsPerLocation: PipelineEnv[] = pipelineEnvs.map(({ env, pipeline }) => {\n return { env, pipeline: pipeline.filter((task) => (task.location || 'middle') === location) };\n });\n return { location, graph, pipelineEnvs: pipelineEnvsPerLocation };\n });\n\n const tasksQueue = new TasksQueue();\n locations.forEach((location) => addTasksToGraph(tasksQueue, dataPerLocation, location));\n if (tasks.length) {\n return new TasksQueue(\n ...tasksQueue.filter(({ task }) => tasks.includes(task.name) || tasks.includes(task.aspectId))\n );\n }\n if (skipTests) {\n return new TasksQueue(...tasksQueue.filter(({ task }) => task.aspectId !== TesterAspect.id));\n }\n return tasksQueue;\n}\n\nfunction addTasksToGraph(tasksQueue: TasksQueue, dataPerLocation: DataPerLocation[], location: Location) {\n const data = dataPerLocation.find((d) => d.location === location);\n if (!data) return;\n const sorted = data.graph.toposort();\n sorted.forEach((taskNode) => {\n const { aspectId, name } = BuildTaskHelper.deserializeId(taskNode.attr);\n data.pipelineEnvs.forEach(({ env, pipeline }) => {\n const taskIndex = pipeline.findIndex(\n (pipelineTask) => pipelineTask.aspectId === aspectId && pipelineTask.name === name\n );\n if (taskIndex < 0) return;\n const task = pipeline[taskIndex];\n tasksQueue.push({ env, task });\n pipeline.splice(taskIndex, 1); // delete the task from the pipeline\n });\n });\n data.pipelineEnvs.forEach(({ env, pipeline }) => {\n pipeline.forEach((task) => tasksQueue.push({ env, task }));\n });\n}\n\nfunction addDependenciesToGraph(graphs: TasksLocationGraph[], pipeline: BuildTask[], task: BuildTask) {\n if (!task.dependencies || !task.dependencies.length) return;\n const taskId = BuildTaskHelper.serializeId(task);\n task.dependencies.forEach((dependency) => {\n const { aspectId, name } = BuildTaskHelper.deserializeIdAllowEmptyName(dependency);\n const dependencyTasks = pipeline.filter((pipelineTask) => {\n if (pipelineTask.aspectId !== aspectId) return false;\n return name ? name === pipelineTask.name : true;\n });\n if (dependencyTasks.length === 0) {\n throw new Error(\n `Pipeline error - missing task dependency \"${dependency}\" of the \"${BuildTaskHelper.serializeId(task)}\"`\n );\n }\n dependencyTasks.forEach((dependencyTask) => {\n const location = getLocation(task, dependencyTask);\n if (!location) {\n // the dependency is behind and will be in the correct order regardless the graph.\n return;\n }\n const graphLocation = graphs.find((g) => g.location === location);\n if (!graphLocation) throw new Error(`unable to find graph for location ${location}`);\n const dependencyId = BuildTaskHelper.serializeId(dependencyTask);\n const graph = graphLocation.graph;\n graph.setNode(new Node(taskId, taskId));\n graph.setNode(new Node(dependencyId, dependencyId));\n graph.setEdge(new Edge(dependencyId, taskId, 'dependency'));\n });\n });\n}\n\n/**\n * since the task execution is happening per group: \"start\", \"middle\" and \"end\", the dependencies\n * need to be inside the same group.\n * e.g. if a dependency located at \"end\" group and the task located at \"start\", it's impossible to\n * complete the dependency before the task, there it throws an error.\n * it's ok to have the dependency located earlier, e.g. \"start\" and the task at \"end\", and in this\n * case, it will not be part of the graph because there is no need to do any special calculation.\n */\nfunction getLocation(task: BuildTask, dependencyTask: BuildTask): Location | null {\n const taskLocation = task.location || 'middle';\n const dependencyLocation = dependencyTask.location || 'middle';\n\n const isDependencyAhead =\n (taskLocation === 'start' && dependencyLocation !== 'start') ||\n (taskLocation === 'middle' && dependencyLocation === 'end');\n\n const isDependencyEqual = taskLocation === dependencyLocation;\n\n if (isDependencyAhead) {\n throw new Error(`a task \"${BuildTaskHelper.serializeId(task)}\" located at ${taskLocation}\nhas a dependency \"${BuildTaskHelper.serializeId(dependencyTask)} located at ${dependencyLocation},\nwhich is invalid. the dependency must be located earlier or in the same location as the task\"`);\n }\n\n if (isDependencyEqual) {\n return taskLocation;\n }\n\n // dependency is behind. e.g. task is \"end\" and dependency is \"start\". no need to enter to the\n // graph as it's going to be executed in the right order regardless the graph.\n return null;\n}\n\nfunction getPipelineForEnv(taskSlot: TaskSlot, env: Environment, pipeNameOnEnv: string): BuildTask[] {\n const buildTasks: BuildTask[] = env[pipeNameOnEnv] ? env[pipeNameOnEnv]() : [];\n const slotsTasks = taskSlot.values().flat();\n const tasksAtStart: BuildTask[] = [];\n const tasksAtEnd: BuildTask[] = [];\n slotsTasks.forEach((task) => {\n if (task.location === 'start') {\n tasksAtStart.push(task);\n return;\n }\n if (task.location === 'end') {\n tasksAtEnd.push(task);\n return;\n }\n tasksAtStart.push(task);\n });\n\n // merge with extension registered tasks.\n const mergedTasks = [...tasksAtStart, ...buildTasks, ...tasksAtEnd];\n\n return mergedTasks;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_graph","data","require","_tester","_interopRequireDefault","_buildTask","_tasksQueue","calculatePipelineOrder","taskSlot","envs","pipeNameOnEnv","tasks","skipTests","graphs","locations","forEach","location","push","graph","Graph","pipelineEnvs","envDefinition","pipeline","getPipelineForEnv","env","flattenedPipeline","map","pipelineEnv","flat","task","addDependenciesToGraph","dataPerLocation","pipelineEnvsPerLocation","filter","tasksQueue","TasksQueue","addTasksToGraph","length","includes","name","aspectId","TesterAspect","id","find","d","sorted","toposort","taskNode","BuildTaskHelper","deserializeId","attr","taskIndex","findIndex","pipelineTask","splice","dependencies","taskId","serializeId","dependency","deserializeIdAllowEmptyName","dependencyTasks","Error","dependencyTask","getLocation","graphLocation","g","dependencyId","setNode","Node","setEdge","Edge","taskLocation","dependencyLocation","isDependencyAhead","isDependencyEqual","buildTasks","slotsTasks","values","tasksAtStart","tasksAtEnd","mergedTasks"],"sources":["build-pipeline-order.ts"],"sourcesContent":["import { Graph, Node, Edge } from '@teambit/graph.cleargraph';\nimport TesterAspect from '@teambit/tester';\nimport { EnvDefinition, Environment } from '@teambit/envs';\nimport { BuildTask, BuildTaskHelper } from './build-task';\nimport type { TaskSlot } from './builder.main.runtime';\nimport { TasksQueue } from './tasks-queue';\nimport { PipeFunctionNames } from './builder.service';\n\ntype TaskDependenciesGraph = Graph<string, string>;\ntype Location = 'start' | 'middle' | 'end';\ntype TasksLocationGraph = { location: Location; graph: TaskDependenciesGraph };\ntype PipelineEnv = { env: EnvDefinition; pipeline: BuildTask[] };\ntype DataPerLocation = { location: Location; graph: TaskDependenciesGraph; pipelineEnvs: PipelineEnv[] };\n\n/**\n * there are two ways how to add tasks to build pipeline.\n * 1. `getBuildPipe()` method of the env.\n * 2. registering to the `builder.registerBuildTask()`.\n *\n * in the option #1, it's possible to determine the order. e.g. `getBuildPipe() { return [taskA, taskB, taskC]; }`\n * in the option #2, the register happens once the extension is loaded, so there is no way to put\n * one task before/after another task.\n *\n * To be able to determine the order, you can do the following\n * 1. \"task.location\", it has two options \"start\" and \"end\". the rest are \"middle\".\n * 2. \"task.dependencies\", the dependencies must be completed for all envs before this task starts.\n * the dependencies are applicable inside a location and not across locations. see getLocation()\n * or/and continue reading for more info about this.\n *\n * to determine the final order of the tasks, the following is done:\n * 1. split all tasks to three groups: start, middle and end.\n * 2. for each group define a dependencies graph for the tasks with \"dependencies\" prop and the pipeline.\n * 3. start with the first group \"start\", toposort the dependencies graph and push the found tasks\n * to a queue. once completed, iterate the pipeline and add all tasks to the queue.\n * 4. do the same for the \"middle\" and \"end\" groups.\n *\n * the reason for splitting the tasks to the three groups and not using the \"dependencies\" field\n * alone to determine the order is that the \"start\" and \"end\" groups are mostly core and \"middle\"\n * is mostly the user entering tasks to the pipeline and we as the core don't know about the users\n * tasks. For example, a core task \"PublishComponent\" must happen after the compiler, however, a\n * user might have an env without a compiler. if we determine the order only by the dependencies\n * field, the \"PublishComponent\" would have a dependency \"compiler\" and because in this case there\n * is no compiler task, it would throw an error about missing dependencies.\n */\nexport function calculatePipelineOrder(\n taskSlot: TaskSlot,\n envs: EnvDefinition[],\n pipeNameOnEnv: PipeFunctionNames,\n tasks: string[] = [],\n skipTests = false\n): TasksQueue {\n const graphs: TasksLocationGraph[] = [];\n const locations: Location[] = ['start', 'middle', 'end']; // the order is important here!\n locations.forEach((location) => {\n graphs.push({ location, graph: new Graph<string, string>() });\n });\n const pipelineEnvs: PipelineEnv[] = [];\n envs.forEach((envDefinition) => {\n const pipeline = getPipelineForEnv(taskSlot, envDefinition.env, pipeNameOnEnv);\n pipelineEnvs.push({ env: envDefinition, pipeline });\n });\n\n const flattenedPipeline: BuildTask[] = pipelineEnvs.map((pipelineEnv) => pipelineEnv.pipeline).flat();\n flattenedPipeline.forEach((task) => addDependenciesToGraph(graphs, flattenedPipeline, task));\n\n const dataPerLocation: DataPerLocation[] = graphs.map(({ location, graph }) => {\n const pipelineEnvsPerLocation: PipelineEnv[] = pipelineEnvs.map(({ env, pipeline }) => {\n return { env, pipeline: pipeline.filter((task) => (task.location || 'middle') === location) };\n });\n return { location, graph, pipelineEnvs: pipelineEnvsPerLocation };\n });\n\n const tasksQueue = new TasksQueue();\n locations.forEach((location) => addTasksToGraph(tasksQueue, dataPerLocation, location));\n if (tasks.length) {\n return new TasksQueue(\n ...tasksQueue.filter(({ task }) => tasks.includes(task.name) || tasks.includes(task.aspectId))\n );\n }\n if (skipTests) {\n return new TasksQueue(...tasksQueue.filter(({ task }) => task.aspectId !== TesterAspect.id));\n }\n return tasksQueue;\n}\n\nfunction addTasksToGraph(tasksQueue: TasksQueue, dataPerLocation: DataPerLocation[], location: Location) {\n const data = dataPerLocation.find((d) => d.location === location);\n if (!data) return;\n const sorted = data.graph.toposort();\n sorted.forEach((taskNode) => {\n const { aspectId, name } = BuildTaskHelper.deserializeId(taskNode.attr);\n data.pipelineEnvs.forEach(({ env, pipeline }) => {\n const taskIndex = pipeline.findIndex(\n (pipelineTask) => pipelineTask.aspectId === aspectId && pipelineTask.name === name\n );\n if (taskIndex < 0) return;\n const task = pipeline[taskIndex];\n tasksQueue.push({ env, task });\n pipeline.splice(taskIndex, 1); // delete the task from the pipeline\n });\n });\n data.pipelineEnvs.forEach(({ env, pipeline }) => {\n pipeline.forEach((task) => tasksQueue.push({ env, task }));\n });\n}\n\nfunction addDependenciesToGraph(graphs: TasksLocationGraph[], pipeline: BuildTask[], task: BuildTask) {\n if (!task.dependencies || !task.dependencies.length) return;\n const taskId = BuildTaskHelper.serializeId(task);\n task.dependencies.forEach((dependency) => {\n const { aspectId, name } = BuildTaskHelper.deserializeIdAllowEmptyName(dependency);\n const dependencyTasks = pipeline.filter((pipelineTask) => {\n if (pipelineTask.aspectId !== aspectId) return false;\n return name ? name === pipelineTask.name : true;\n });\n if (dependencyTasks.length === 0) {\n throw new Error(\n `Pipeline error - missing task dependency \"${dependency}\" of the \"${BuildTaskHelper.serializeId(task)}\"`\n );\n }\n dependencyTasks.forEach((dependencyTask) => {\n const location = getLocation(task, dependencyTask);\n if (!location) {\n // the dependency is behind and will be in the correct order regardless the graph.\n return;\n }\n const graphLocation = graphs.find((g) => g.location === location);\n if (!graphLocation) throw new Error(`unable to find graph for location ${location}`);\n const dependencyId = BuildTaskHelper.serializeId(dependencyTask);\n const graph = graphLocation.graph;\n graph.setNode(new Node(taskId, taskId));\n graph.setNode(new Node(dependencyId, dependencyId));\n graph.setEdge(new Edge(dependencyId, taskId, 'dependency'));\n });\n });\n}\n\n/**\n * since the task execution is happening per group: \"start\", \"middle\" and \"end\", the dependencies\n * need to be inside the same group.\n * e.g. if a dependency located at \"end\" group and the task located at \"start\", it's impossible to\n * complete the dependency before the task, there it throws an error.\n * it's ok to have the dependency located earlier, e.g. \"start\" and the task at \"end\", and in this\n * case, it will not be part of the graph because there is no need to do any special calculation.\n */\nfunction getLocation(task: BuildTask, dependencyTask: BuildTask): Location | null {\n const taskLocation = task.location || 'middle';\n const dependencyLocation = dependencyTask.location || 'middle';\n\n const isDependencyAhead =\n (taskLocation === 'start' && dependencyLocation !== 'start') ||\n (taskLocation === 'middle' && dependencyLocation === 'end');\n\n const isDependencyEqual = taskLocation === dependencyLocation;\n\n if (isDependencyAhead) {\n throw new Error(`a task \"${BuildTaskHelper.serializeId(task)}\" located at ${taskLocation}\nhas a dependency \"${BuildTaskHelper.serializeId(dependencyTask)} located at ${dependencyLocation},\nwhich is invalid. the dependency must be located earlier or in the same location as the task\"`);\n }\n\n if (isDependencyEqual) {\n return taskLocation;\n }\n\n // dependency is behind. e.g. task is \"end\" and dependency is \"start\". no need to enter to the\n // graph as it's going to be executed in the right order regardless the graph.\n return null;\n}\n\nfunction getPipelineForEnv(taskSlot: TaskSlot, env: Environment, pipeNameOnEnv: string): BuildTask[] {\n const buildTasks: BuildTask[] = env[pipeNameOnEnv] ? env[pipeNameOnEnv]() : [];\n const slotsTasks = taskSlot.values().flat();\n const tasksAtStart: BuildTask[] = [];\n const tasksAtEnd: BuildTask[] = [];\n slotsTasks.forEach((task) => {\n if (task.location === 'start') {\n tasksAtStart.push(task);\n return;\n }\n if (task.location === 'end') {\n tasksAtEnd.push(task);\n return;\n }\n tasksAtStart.push(task);\n });\n\n // merge with extension registered tasks.\n const mergedTasks = [...tasksAtStart, ...buildTasks, ...tasksAtEnd];\n\n return mergedTasks;\n}\n"],"mappings":"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"}
|
|
@@ -44,8 +44,8 @@ export declare type BuilderDescriptor = Array<{
|
|
|
44
44
|
pipeName: PipeName;
|
|
45
45
|
tasks: string[];
|
|
46
46
|
}>;
|
|
47
|
-
declare type PipeFunctionNames = keyof typeof pipeNames;
|
|
48
|
-
export declare class BuilderService implements EnvService<BuildServiceResults,
|
|
47
|
+
export declare type PipeFunctionNames = keyof typeof pipeNames;
|
|
48
|
+
export declare class BuilderService implements EnvService<BuildServiceResults, string> {
|
|
49
49
|
/**
|
|
50
50
|
* isolator extension.
|
|
51
51
|
*/
|
|
@@ -96,10 +96,9 @@ export declare class BuilderService implements EnvService<BuildServiceResults, B
|
|
|
96
96
|
*/
|
|
97
97
|
runOnce(envsExecutionContext: ExecutionContext[], options: BuilderServiceOptions): Promise<TaskResultsList>;
|
|
98
98
|
getComponentsCapsulesBaseDir(): string | undefined;
|
|
99
|
-
render(
|
|
99
|
+
render(): JSX.Element;
|
|
100
100
|
transform(env: Env, envContext: EnvContext): BuilderTransformationMap | undefined;
|
|
101
|
-
|
|
102
|
-
getDescriptor(env: EnvDefinition): BuilderDescriptor;
|
|
101
|
+
getDescriptor(): string;
|
|
103
102
|
private getTasksNamesByPipeFunc;
|
|
104
103
|
getCurrentPipeTasks(env: EnvDefinition): string[];
|
|
105
104
|
}
|
package/dist/builder.service.js
CHANGED
|
@@ -157,14 +157,11 @@ class BuilderService {
|
|
|
157
157
|
getComponentsCapsulesBaseDir() {
|
|
158
158
|
return this.globalConfig.getSync(_constants().CFG_CAPSULES_BUILD_COMPONENTS_BASE_DIR);
|
|
159
159
|
}
|
|
160
|
-
render(
|
|
161
|
-
const
|
|
160
|
+
render() {
|
|
161
|
+
const descriptor = this.getDescriptor();
|
|
162
162
|
return /*#__PURE__*/_react().default.createElement(_ink().Text, {
|
|
163
163
|
key: _builder().BuilderAspect.id
|
|
164
|
-
},
|
|
165
|
-
pipeName,
|
|
166
|
-
tasks
|
|
167
|
-
}) => this.renderOnePipe(pipeName, tasks)));
|
|
164
|
+
}, descriptor, /*#__PURE__*/_react().default.createElement(_ink().Newline, null), /*#__PURE__*/_react().default.createElement(_ink().Newline, null));
|
|
168
165
|
}
|
|
169
166
|
transform(env, envContext) {
|
|
170
167
|
if (!(env !== null && env !== void 0 && env.build)) return undefined;
|
|
@@ -188,34 +185,8 @@ class BuilderService {
|
|
|
188
185
|
}
|
|
189
186
|
};
|
|
190
187
|
}
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
return /*#__PURE__*/_react().default.createElement(_ink().Text, {
|
|
194
|
-
key: pipeName
|
|
195
|
-
}, /*#__PURE__*/_react().default.createElement(_ink().Text, {
|
|
196
|
-
underline: true,
|
|
197
|
-
color: "green"
|
|
198
|
-
}, pipeName, " pipe"), /*#__PURE__*/_react().default.createElement(_ink().Newline, null), /*#__PURE__*/_react().default.createElement(_ink().Text, {
|
|
199
|
-
color: "cyan"
|
|
200
|
-
}, "total ", tasks.length, " tasks are configured to be executed in the following order"), /*#__PURE__*/_react().default.createElement(_ink().Newline, null), tasks.map((task, index) => /*#__PURE__*/_react().default.createElement(_ink().Text, {
|
|
201
|
-
key: index
|
|
202
|
-
}, /*#__PURE__*/_react().default.createElement(_ink().Text, null, index + 1, ". ", task), /*#__PURE__*/_react().default.createElement(_ink().Newline, null))), /*#__PURE__*/_react().default.createElement(_ink().Newline, null));
|
|
203
|
-
}
|
|
204
|
-
getDescriptor(env) {
|
|
205
|
-
// @ts-ignore
|
|
206
|
-
const tasks = Object.keys(pipeNames).map(pipeFuncName => {
|
|
207
|
-
let tasksQueue;
|
|
208
|
-
try {
|
|
209
|
-
tasksQueue = this.getTasksNamesByPipeFunc(env, pipeFuncName);
|
|
210
|
-
} catch (err) {
|
|
211
|
-
tasksQueue = [`<failed getting task-queue, error: ${err.message}>`];
|
|
212
|
-
}
|
|
213
|
-
return {
|
|
214
|
-
pipeName: pipeNames[pipeFuncName],
|
|
215
|
-
tasks: tasksQueue
|
|
216
|
-
};
|
|
217
|
-
});
|
|
218
|
-
return tasks;
|
|
188
|
+
getDescriptor() {
|
|
189
|
+
return 'run `bit build --list-tasks <component-id>` to see the tasks list for the pipelines: build, tag and snap';
|
|
219
190
|
}
|
|
220
191
|
getTasksNamesByPipeFunc(env, pipeFuncName) {
|
|
221
192
|
const tasksQueue = (0, _buildPipelineOrder().calculatePipelineOrder)(this.taskSlot, [env], pipeFuncName).map(({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_constants","data","require","_react","_interopRequireDefault","_pMapSeries","_ink","_buildPipe","_buildTask","_buildPipelineOrder","_builder","pipeNames","getBuildPipe","getTagPipe","getSnapPipe","BuilderService","constructor","isolator","logger","taskSlot","pipeNameOnEnv","displayPipeName","artifactFactory","scope","globalConfig","_defineProperty2","default","runOnce","envsExecutionContext","options","envs","map","executionContext","envDefinition","tasksQueue","calculatePipelineOrder","tasks","skipTests","validate","info","toString","title","length","longProcessLogger","createLongProcessLogger","consoleTitle","envsBuildContext","capsulesBaseDir","getComponentsCapsulesBaseDir","baseDir","useHash","isolateOptions","getExistingAsIs","seedersOnly","pMapSeries","componentIds","components","component","id","originalSeeders","originalSeedersOfThisEnv","filter","compId","find","seeder","isEqual","capsuleNetwork","isolateComponents","_originalSeeders","console","seedersCapsules","graphCapsules","buildContext","Object","assign","previousTasksResults","pipeName","dev","laneId","legacyScope","currentLaneId","buildPipe","BuildPipe","exitOnFirstFailedTask","buildResults","execute","end","hasErrors","consoleFailure","consoleSuccess","getSync","CFG_CAPSULES_BUILD_COMPONENTS_BASE_DIR","render","env","pipes","getDescriptor","createElement","Text","key","BuilderAspect","renderOnePipe","transform","envContext","build","undefined","pipeline","compute","tag","snap","underline","color","Newline","task","index","keys","pipeFuncName","getTasksNamesByPipeFunc","err","message","BuildTaskHelper","serializeId","getCurrentPipeTasks","exports"],"sources":["builder.service.tsx"],"sourcesContent":["import { CFG_CAPSULES_BUILD_COMPONENTS_BASE_DIR } from '@teambit/legacy/dist/constants';\nimport { EnvService, ExecutionContext, EnvDefinition, Env, EnvContext, ServiceTransformationMap } from '@teambit/envs';\nimport React from 'react';\nimport { ScopeMain } from '@teambit/scope';\nimport pMapSeries from 'p-map-series';\nimport { GlobalConfigMain } from '@teambit/global-config';\nimport { Text, Newline } from 'ink';\nimport { Logger } from '@teambit/logger';\nimport { IsolatorMain } from '@teambit/isolator';\nimport { Component, ComponentID } from '@teambit/component';\nimport { BuildPipe, TaskResults } from './build-pipe';\nimport { TaskResultsList } from './task-results-list';\nimport { TaskSlot } from './builder.main.runtime';\nimport { BuildContext, BuildTask, BuildTaskHelper } from './build-task';\nimport { ArtifactFactory } from './artifact';\nimport { calculatePipelineOrder } from './build-pipeline-order';\nimport { BuilderAspect } from './builder.aspect';\n\nexport type BuildServiceResults = {\n id: string;\n buildResults: TaskResultsList;\n components: Component[];\n errors?: [];\n};\n\nexport type BuilderServiceOptions = {\n seedersOnly?: boolean;\n originalSeeders?: ComponentID[];\n tasks?: string[];\n skipTests?: boolean;\n previousTasksResults?: TaskResults[];\n dev?: boolean;\n exitOnFirstFailedTask?: boolean;\n capsulesBaseDir?: string;\n};\n\ntype BuilderTransformationMap = ServiceTransformationMap & {\n getBuildPipe: () => BuildTask[];\n getTagPipe: () => BuildTask[];\n getSnapPipe: () => BuildTask[];\n};\n\nexport type EnvsBuildContext = { [envId: string]: BuildContext };\n\nconst pipeNames = {\n getBuildPipe: 'build',\n getTagPipe: 'tag',\n getSnapPipe: 'snap',\n};\n\nexport type PipeName = 'build' | 'tag' | 'snap';\n\nexport type BuilderDescriptor = Array<{ pipeName: PipeName; tasks: string[] }>;\n\ntype PipeFunctionNames = keyof typeof pipeNames;\nexport class BuilderService implements EnvService<BuildServiceResults, BuilderDescriptor> {\n name = 'builder';\n\n constructor(\n /**\n * isolator extension.\n */\n private isolator: IsolatorMain,\n\n /**\n * logger extension.\n */\n private logger: Logger,\n\n /**\n * task slot (e.g tasks registered by other extensions.).\n */\n private taskSlot: TaskSlot,\n\n /**\n * a method with such name should be implemented on the env in order to run the pipe tasks.\n */\n private pipeNameOnEnv: PipeFunctionNames,\n\n /**\n * pipe name to display on the console during the execution\n */\n private displayPipeName: PipeName,\n private artifactFactory: ArtifactFactory,\n private scope: ScopeMain,\n private globalConfig: GlobalConfigMain\n ) {}\n\n /**\n * runs all tasks for all envs\n */\n async runOnce(envsExecutionContext: ExecutionContext[], options: BuilderServiceOptions): Promise<TaskResultsList> {\n const envs = envsExecutionContext.map((executionContext) => executionContext.envDefinition);\n const tasksQueue = calculatePipelineOrder(\n this.taskSlot,\n envs,\n this.pipeNameOnEnv,\n options.tasks,\n options.skipTests\n );\n tasksQueue.validate();\n this.logger.info(`going to run tasks in the following order:\\n${tasksQueue.toString()}`);\n const title = `running ${this.displayPipeName} pipe for ${envs.length} environments, total ${tasksQueue.length} tasks`;\n const longProcessLogger = this.logger.createLongProcessLogger(title);\n this.logger.consoleTitle(title);\n const envsBuildContext: EnvsBuildContext = {};\n const capsulesBaseDir = this.getComponentsCapsulesBaseDir();\n\n const baseDir = options.capsulesBaseDir || capsulesBaseDir;\n const useHash = !baseDir;\n const isolateOptions = {\n baseDir,\n useHash,\n getExistingAsIs: true,\n seedersOnly: options.seedersOnly,\n };\n\n await pMapSeries(envsExecutionContext, async (executionContext) => {\n const componentIds = executionContext.components.map((component) => component.id);\n const { originalSeeders } = options;\n const originalSeedersOfThisEnv = componentIds.filter((compId) =>\n originalSeeders ? originalSeeders.find((seeder) => compId.isEqual(seeder)) : true\n );\n const capsuleNetwork = await this.isolator.isolateComponents(componentIds, isolateOptions);\n capsuleNetwork._originalSeeders = originalSeedersOfThisEnv;\n this.logger.console(\n `generated graph for env \"${executionContext.id}\", originalSeedersOfThisEnv: ${originalSeedersOfThisEnv.length}, graphOfThisEnv: ${capsuleNetwork.seedersCapsules.length}, graph total: ${capsuleNetwork.graphCapsules.length}`\n );\n const buildContext = Object.assign(executionContext, {\n capsuleNetwork,\n previousTasksResults: [],\n pipeName: this.displayPipeName,\n dev: options.dev,\n laneId: this.scope.legacyScope.currentLaneId,\n });\n envsBuildContext[executionContext.id] = buildContext;\n });\n const buildPipe = new BuildPipe(\n tasksQueue,\n envsBuildContext,\n this.logger,\n this.artifactFactory,\n options.previousTasksResults,\n { exitOnFirstFailedTask: options.exitOnFirstFailedTask }\n );\n const buildResults = await buildPipe.execute();\n longProcessLogger.end();\n buildResults.hasErrors() ? this.logger.consoleFailure() : this.logger.consoleSuccess();\n\n return buildResults;\n }\n\n getComponentsCapsulesBaseDir(): string | undefined {\n return this.globalConfig.getSync(CFG_CAPSULES_BUILD_COMPONENTS_BASE_DIR);\n }\n\n render(env: EnvDefinition) {\n const pipes = this.getDescriptor(env);\n\n return (\n <Text key={BuilderAspect.id}>{pipes.map(({ pipeName, tasks }) => this.renderOnePipe(pipeName, tasks))}</Text>\n );\n }\n\n transform(env: Env, envContext: EnvContext): BuilderTransformationMap | undefined {\n if (!env?.build) return undefined;\n return {\n getBuildPipe: () => {\n // TODO: refactor after defining for an env property\n const pipeline = env.build();\n if (!pipeline || !pipeline.compute) return [];\n return pipeline?.compute(envContext);\n },\n getTagPipe: () => {\n // TODO: refactor after defining for an env property\n const pipeline = env.tag();\n if (!pipeline || !pipeline.compute) return [];\n return pipeline?.compute(envContext);\n },\n getSnapPipe: () => {\n const pipeline = env.snap();\n if (!pipeline || !pipeline.compute) return [];\n return pipeline?.compute(envContext);\n },\n };\n }\n\n private renderOnePipe(pipeName, tasks) {\n if (!tasks || !tasks.length) return null;\n return (\n <Text key={pipeName}>\n <Text underline color=\"green\">\n {pipeName} pipe\n </Text>\n <Newline />\n <Text color=\"cyan\">total {tasks.length} tasks are configured to be executed in the following order</Text>\n <Newline />\n {tasks.map((task, index) => (\n <Text key={index}>\n <Text>\n {index + 1}. {task}\n </Text>\n <Newline />\n </Text>\n ))}\n <Newline />\n </Text>\n );\n }\n\n getDescriptor(env: EnvDefinition) {\n // @ts-ignore\n const tasks = Object.keys(pipeNames).map((pipeFuncName: PipeFunctionNames) => {\n let tasksQueue: string[];\n try {\n tasksQueue = this.getTasksNamesByPipeFunc(env, pipeFuncName);\n } catch (err: any) {\n tasksQueue = [`<failed getting task-queue, error: ${err.message}>`];\n }\n return { pipeName: pipeNames[pipeFuncName], tasks: tasksQueue };\n });\n return tasks as BuilderDescriptor;\n }\n\n private getTasksNamesByPipeFunc(env: EnvDefinition, pipeFuncName: PipeFunctionNames): string[] {\n const tasksQueue = calculatePipelineOrder(this.taskSlot, [env], pipeFuncName).map(({ task }) =>\n BuildTaskHelper.serializeId(task)\n );\n return tasksQueue;\n }\n\n getCurrentPipeTasks(env: EnvDefinition) {\n return this.getTasksNamesByPipeFunc(env, this.pipeNameOnEnv);\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_constants","data","require","_react","_interopRequireDefault","_pMapSeries","_ink","_buildPipe","_buildTask","_buildPipelineOrder","_builder","pipeNames","getBuildPipe","getTagPipe","getSnapPipe","BuilderService","constructor","isolator","logger","taskSlot","pipeNameOnEnv","displayPipeName","artifactFactory","scope","globalConfig","_defineProperty2","default","runOnce","envsExecutionContext","options","envs","map","executionContext","envDefinition","tasksQueue","calculatePipelineOrder","tasks","skipTests","validate","info","toString","title","length","longProcessLogger","createLongProcessLogger","consoleTitle","envsBuildContext","capsulesBaseDir","getComponentsCapsulesBaseDir","baseDir","useHash","isolateOptions","getExistingAsIs","seedersOnly","pMapSeries","componentIds","components","component","id","originalSeeders","originalSeedersOfThisEnv","filter","compId","find","seeder","isEqual","capsuleNetwork","isolateComponents","_originalSeeders","console","seedersCapsules","graphCapsules","buildContext","Object","assign","previousTasksResults","pipeName","dev","laneId","legacyScope","currentLaneId","buildPipe","BuildPipe","exitOnFirstFailedTask","buildResults","execute","end","hasErrors","consoleFailure","consoleSuccess","getSync","CFG_CAPSULES_BUILD_COMPONENTS_BASE_DIR","render","descriptor","getDescriptor","createElement","Text","key","BuilderAspect","Newline","transform","env","envContext","build","undefined","pipeline","compute","tag","snap","getTasksNamesByPipeFunc","pipeFuncName","task","BuildTaskHelper","serializeId","getCurrentPipeTasks","exports"],"sources":["builder.service.tsx"],"sourcesContent":["import { CFG_CAPSULES_BUILD_COMPONENTS_BASE_DIR } from '@teambit/legacy/dist/constants';\nimport { EnvService, ExecutionContext, EnvDefinition, Env, EnvContext, ServiceTransformationMap } from '@teambit/envs';\nimport React from 'react';\nimport { ScopeMain } from '@teambit/scope';\nimport pMapSeries from 'p-map-series';\nimport { GlobalConfigMain } from '@teambit/global-config';\nimport { Text, Newline } from 'ink';\nimport { Logger } from '@teambit/logger';\nimport { IsolatorMain } from '@teambit/isolator';\nimport { Component, ComponentID } from '@teambit/component';\nimport { BuildPipe, TaskResults } from './build-pipe';\nimport { TaskResultsList } from './task-results-list';\nimport { TaskSlot } from './builder.main.runtime';\nimport { BuildContext, BuildTask, BuildTaskHelper } from './build-task';\nimport { ArtifactFactory } from './artifact';\nimport { calculatePipelineOrder } from './build-pipeline-order';\nimport { BuilderAspect } from './builder.aspect';\n\nexport type BuildServiceResults = {\n id: string;\n buildResults: TaskResultsList;\n components: Component[];\n errors?: [];\n};\n\nexport type BuilderServiceOptions = {\n seedersOnly?: boolean;\n originalSeeders?: ComponentID[];\n tasks?: string[];\n skipTests?: boolean;\n previousTasksResults?: TaskResults[];\n dev?: boolean;\n exitOnFirstFailedTask?: boolean;\n capsulesBaseDir?: string;\n};\n\ntype BuilderTransformationMap = ServiceTransformationMap & {\n getBuildPipe: () => BuildTask[];\n getTagPipe: () => BuildTask[];\n getSnapPipe: () => BuildTask[];\n};\n\nexport type EnvsBuildContext = { [envId: string]: BuildContext };\n\nconst pipeNames = {\n getBuildPipe: 'build',\n getTagPipe: 'tag',\n getSnapPipe: 'snap',\n};\n\nexport type PipeName = 'build' | 'tag' | 'snap';\n\nexport type BuilderDescriptor = Array<{ pipeName: PipeName; tasks: string[] }>;\n\nexport type PipeFunctionNames = keyof typeof pipeNames;\nexport class BuilderService implements EnvService<BuildServiceResults, string> {\n name = 'builder';\n\n constructor(\n /**\n * isolator extension.\n */\n private isolator: IsolatorMain,\n\n /**\n * logger extension.\n */\n private logger: Logger,\n\n /**\n * task slot (e.g tasks registered by other extensions.).\n */\n private taskSlot: TaskSlot,\n\n /**\n * a method with such name should be implemented on the env in order to run the pipe tasks.\n */\n private pipeNameOnEnv: PipeFunctionNames,\n\n /**\n * pipe name to display on the console during the execution\n */\n private displayPipeName: PipeName,\n private artifactFactory: ArtifactFactory,\n private scope: ScopeMain,\n private globalConfig: GlobalConfigMain\n ) {}\n\n /**\n * runs all tasks for all envs\n */\n async runOnce(envsExecutionContext: ExecutionContext[], options: BuilderServiceOptions): Promise<TaskResultsList> {\n const envs = envsExecutionContext.map((executionContext) => executionContext.envDefinition);\n const tasksQueue = calculatePipelineOrder(\n this.taskSlot,\n envs,\n this.pipeNameOnEnv,\n options.tasks,\n options.skipTests\n );\n tasksQueue.validate();\n this.logger.info(`going to run tasks in the following order:\\n${tasksQueue.toString()}`);\n const title = `running ${this.displayPipeName} pipe for ${envs.length} environments, total ${tasksQueue.length} tasks`;\n const longProcessLogger = this.logger.createLongProcessLogger(title);\n this.logger.consoleTitle(title);\n const envsBuildContext: EnvsBuildContext = {};\n const capsulesBaseDir = this.getComponentsCapsulesBaseDir();\n\n const baseDir = options.capsulesBaseDir || capsulesBaseDir;\n const useHash = !baseDir;\n const isolateOptions = {\n baseDir,\n useHash,\n getExistingAsIs: true,\n seedersOnly: options.seedersOnly,\n };\n\n await pMapSeries(envsExecutionContext, async (executionContext) => {\n const componentIds = executionContext.components.map((component) => component.id);\n const { originalSeeders } = options;\n const originalSeedersOfThisEnv = componentIds.filter((compId) =>\n originalSeeders ? originalSeeders.find((seeder) => compId.isEqual(seeder)) : true\n );\n const capsuleNetwork = await this.isolator.isolateComponents(componentIds, isolateOptions);\n capsuleNetwork._originalSeeders = originalSeedersOfThisEnv;\n this.logger.console(\n `generated graph for env \"${executionContext.id}\", originalSeedersOfThisEnv: ${originalSeedersOfThisEnv.length}, graphOfThisEnv: ${capsuleNetwork.seedersCapsules.length}, graph total: ${capsuleNetwork.graphCapsules.length}`\n );\n const buildContext = Object.assign(executionContext, {\n capsuleNetwork,\n previousTasksResults: [],\n pipeName: this.displayPipeName,\n dev: options.dev,\n laneId: this.scope.legacyScope.currentLaneId,\n });\n envsBuildContext[executionContext.id] = buildContext;\n });\n const buildPipe = new BuildPipe(\n tasksQueue,\n envsBuildContext,\n this.logger,\n this.artifactFactory,\n options.previousTasksResults,\n { exitOnFirstFailedTask: options.exitOnFirstFailedTask }\n );\n const buildResults = await buildPipe.execute();\n longProcessLogger.end();\n buildResults.hasErrors() ? this.logger.consoleFailure() : this.logger.consoleSuccess();\n\n return buildResults;\n }\n\n getComponentsCapsulesBaseDir(): string | undefined {\n return this.globalConfig.getSync(CFG_CAPSULES_BUILD_COMPONENTS_BASE_DIR);\n }\n\n render() {\n const descriptor = this.getDescriptor();\n\n return (\n <Text key={BuilderAspect.id}>\n {descriptor}\n <Newline />\n <Newline />\n </Text>\n );\n }\n\n transform(env: Env, envContext: EnvContext): BuilderTransformationMap | undefined {\n if (!env?.build) return undefined;\n return {\n getBuildPipe: () => {\n // TODO: refactor after defining for an env property\n const pipeline = env.build();\n if (!pipeline || !pipeline.compute) return [];\n return pipeline?.compute(envContext);\n },\n getTagPipe: () => {\n // TODO: refactor after defining for an env property\n const pipeline = env.tag();\n if (!pipeline || !pipeline.compute) return [];\n return pipeline?.compute(envContext);\n },\n getSnapPipe: () => {\n const pipeline = env.snap();\n if (!pipeline || !pipeline.compute) return [];\n return pipeline?.compute(envContext);\n },\n };\n }\n\n getDescriptor() {\n return 'run `bit build --list-tasks <component-id>` to see the tasks list for the pipelines: build, tag and snap';\n }\n\n private getTasksNamesByPipeFunc(env: EnvDefinition, pipeFuncName: PipeFunctionNames): string[] {\n const tasksQueue = calculatePipelineOrder(this.taskSlot, [env], pipeFuncName).map(({ task }) =>\n BuildTaskHelper.serializeId(task)\n );\n return tasksQueue;\n }\n\n getCurrentPipeTasks(env: EnvDefinition) {\n return this.getTasksNamesByPipeFunc(env, this.pipeNameOnEnv);\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.pipelines_builder@0.0.
|
|
2
|
-
import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.pipelines_builder@0.0.
|
|
1
|
+
import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.pipelines_builder@0.0.1126/dist/builder.composition.js';
|
|
2
|
+
import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.pipelines_builder@0.0.1126/dist/builder.docs.mdx';
|
|
3
3
|
|
|
4
4
|
export const compositions = [compositions_0];
|
|
5
5
|
export const overview = [overview_0];
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@teambit/builder",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.1126",
|
|
4
4
|
"homepage": "https://bit.cloud/teambit/pipelines/builder",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"componentId": {
|
|
7
7
|
"scope": "teambit.pipelines",
|
|
8
8
|
"name": "builder",
|
|
9
|
-
"version": "0.0.
|
|
9
|
+
"version": "0.0.1126"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"p-map-series": "2.1.0",
|
|
@@ -27,22 +27,22 @@
|
|
|
27
27
|
"@teambit/graph.cleargraph": "0.0.1",
|
|
28
28
|
"@teambit/harmony": "0.4.6",
|
|
29
29
|
"@teambit/component-id": "0.0.427",
|
|
30
|
-
"@teambit/component": "0.0.
|
|
31
|
-
"@teambit/envs": "0.0.
|
|
32
|
-
"@teambit/logger": "0.0.
|
|
33
|
-
"@teambit/tester": "0.0.
|
|
34
|
-
"@teambit/isolator": "0.0.
|
|
35
|
-
"@teambit/lane-id": "0.0.
|
|
36
|
-
"@teambit/cli": "0.0.
|
|
37
|
-
"@teambit/workspace": "0.0.
|
|
38
|
-
"@teambit/aspect-loader": "0.0.
|
|
39
|
-
"@teambit/aspect": "0.0.
|
|
40
|
-
"@teambit/generator": "0.0.
|
|
41
|
-
"@teambit/global-config": "0.0.
|
|
42
|
-
"@teambit/graphql": "0.0.
|
|
43
|
-
"@teambit/scope": "0.0.
|
|
44
|
-
"@teambit/ui": "0.0.
|
|
45
|
-
"@teambit/express": "0.0.
|
|
30
|
+
"@teambit/component": "0.0.1126",
|
|
31
|
+
"@teambit/envs": "0.0.1126",
|
|
32
|
+
"@teambit/logger": "0.0.846",
|
|
33
|
+
"@teambit/tester": "0.0.1126",
|
|
34
|
+
"@teambit/isolator": "0.0.1126",
|
|
35
|
+
"@teambit/lane-id": "0.0.268",
|
|
36
|
+
"@teambit/cli": "0.0.753",
|
|
37
|
+
"@teambit/workspace": "0.0.1126",
|
|
38
|
+
"@teambit/aspect-loader": "0.0.1126",
|
|
39
|
+
"@teambit/aspect": "0.0.1126",
|
|
40
|
+
"@teambit/generator": "0.0.1126",
|
|
41
|
+
"@teambit/global-config": "0.0.755",
|
|
42
|
+
"@teambit/graphql": "0.0.1126",
|
|
43
|
+
"@teambit/scope": "0.0.1126",
|
|
44
|
+
"@teambit/ui": "0.0.1126",
|
|
45
|
+
"@teambit/express": "0.0.851",
|
|
46
46
|
"@teambit/bit-error": "0.0.402"
|
|
47
47
|
},
|
|
48
48
|
"devDependencies": {
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
"@teambit/pipelines.aspect-docs.builder": "0.0.154"
|
|
61
61
|
},
|
|
62
62
|
"peerDependencies": {
|
|
63
|
-
"@teambit/legacy": "1.0.
|
|
63
|
+
"@teambit/legacy": "1.0.535",
|
|
64
64
|
"react": "^16.8.0 || ^17.0.0",
|
|
65
65
|
"react-dom": "^16.8.0 || ^17.0.0"
|
|
66
66
|
},
|
|
Binary file
|