pipecraft 0.36.2 → 0.36.14
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/README.md +30 -20
- package/dist/cli/index.js +4 -3
- package/dist/cli/index.js.map +1 -1
- package/dist/generators/init.tpl.d.ts.map +1 -1
- package/dist/generators/init.tpl.js +7 -128
- package/dist/generators/init.tpl.js.map +1 -1
- package/dist/generators/workflows.tpl.d.ts.map +1 -1
- package/dist/generators/workflows.tpl.js +3 -15
- package/dist/generators/workflows.tpl.js.map +1 -1
- package/dist/templates/actions/calculate-version.yml.tpl.d.ts.map +1 -1
- package/dist/templates/actions/calculate-version.yml.tpl.js +38 -19
- package/dist/templates/actions/calculate-version.yml.tpl.js.map +1 -1
- package/dist/templates/actions/create-pr.yml.tpl.d.ts.map +1 -1
- package/dist/templates/actions/create-pr.yml.tpl.js +9 -6
- package/dist/templates/actions/create-pr.yml.tpl.js.map +1 -1
- package/dist/templates/actions/create-release.yml.tpl.d.ts.map +1 -1
- package/dist/templates/actions/create-release.yml.tpl.js +11 -9
- package/dist/templates/actions/create-release.yml.tpl.js.map +1 -1
- package/dist/templates/actions/create-tag.yml.tpl.d.ts.map +1 -1
- package/dist/templates/actions/create-tag.yml.tpl.js +8 -7
- package/dist/templates/actions/create-tag.yml.tpl.js.map +1 -1
- package/dist/templates/actions/detect-changes.yml.tpl.d.ts +7 -13
- package/dist/templates/actions/detect-changes.yml.tpl.d.ts.map +1 -1
- package/dist/templates/actions/detect-changes.yml.tpl.js +62 -215
- package/dist/templates/actions/detect-changes.yml.tpl.js.map +1 -1
- package/dist/templates/actions/manage-branch.yml.tpl.d.ts.map +1 -1
- package/dist/templates/actions/manage-branch.yml.tpl.js +8 -7
- package/dist/templates/actions/manage-branch.yml.tpl.js.map +1 -1
- package/dist/templates/actions/promote-branch.yml.tpl.d.ts.map +1 -1
- package/dist/templates/actions/promote-branch.yml.tpl.js +25 -29
- package/dist/templates/actions/promote-branch.yml.tpl.js.map +1 -1
- package/dist/templates/release-it.cjs.tpl.d.ts.map +1 -1
- package/dist/templates/release-it.cjs.tpl.js +14 -3
- package/dist/templates/release-it.cjs.tpl.js.map +1 -1
- package/dist/templates/workflows/pipeline.yml.tpl.d.ts.map +1 -1
- package/dist/templates/workflows/pipeline.yml.tpl.js +28 -48
- package/dist/templates/workflows/pipeline.yml.tpl.js.map +1 -1
- package/dist/templates/workflows/shared/index.d.ts +1 -0
- package/dist/templates/workflows/shared/index.d.ts.map +1 -1
- package/dist/templates/workflows/shared/index.js +1 -0
- package/dist/templates/workflows/shared/index.js.map +1 -1
- package/dist/templates/workflows/shared/managed-workflow.d.ts +32 -0
- package/dist/templates/workflows/shared/managed-workflow.d.ts.map +1 -0
- package/dist/templates/workflows/shared/managed-workflow.js +51 -0
- package/dist/templates/workflows/shared/managed-workflow.js.map +1 -0
- package/dist/templates/workflows/shared/operations-changes.d.ts +0 -1
- package/dist/templates/workflows/shared/operations-changes.d.ts.map +1 -1
- package/dist/templates/workflows/shared/operations-changes.js +1 -6
- package/dist/templates/workflows/shared/operations-changes.js.map +1 -1
- package/dist/templates/workflows/shared/operations-gate.d.ts +4 -30
- package/dist/templates/workflows/shared/operations-gate.d.ts.map +1 -1
- package/dist/templates/workflows/shared/operations-gate.js +110 -71
- package/dist/templates/workflows/shared/operations-gate.js.map +1 -1
- package/dist/templates/workflows/shared/operations-header.d.ts +10 -0
- package/dist/templates/workflows/shared/operations-header.d.ts.map +1 -1
- package/dist/templates/workflows/shared/operations-header.js +22 -3
- package/dist/templates/workflows/shared/operations-header.js.map +1 -1
- package/dist/templates/workflows/shared/operations-tag-promote.d.ts +1 -4
- package/dist/templates/workflows/shared/operations-tag-promote.d.ts.map +1 -1
- package/dist/templates/workflows/shared/operations-tag-promote.js +21 -17
- package/dist/templates/workflows/shared/operations-tag-promote.js.map +1 -1
- package/dist/templates/workflows/shared/operations-version.d.ts +0 -1
- package/dist/templates/workflows/shared/operations-version.d.ts.map +1 -1
- package/dist/templates/workflows/shared/operations-version.js +4 -11
- package/dist/templates/workflows/shared/operations-version.js.map +1 -1
- package/dist/templates/yaml-format-utils.d.ts.map +1 -1
- package/dist/templates/yaml-format-utils.js +1 -5
- package/dist/templates/yaml-format-utils.js.map +1 -1
- package/dist/types/index.d.ts +16 -57
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/action-reference.d.ts +1 -1
- package/dist/utils/action-reference.js +2 -2
- package/dist/utils/action-reference.js.map +1 -1
- package/dist/utils/config.d.ts +5 -0
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +36 -4
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/github-setup.d.ts +4 -4
- package/dist/utils/github-setup.js +28 -28
- package/dist/utils/github-setup.js.map +1 -1
- package/dist/utils/messaging.d.ts +2 -2
- package/dist/utils/messaging.d.ts.map +1 -1
- package/dist/utils/messaging.js +5 -5
- package/dist/utils/messaging.js.map +1 -1
- package/dist/utils/preflight.js +2 -2
- package/dist/utils/preflight.js.map +1 -1
- package/dist/utils/workflow-semantics.d.ts +61 -0
- package/dist/utils/workflow-semantics.d.ts.map +1 -0
- package/dist/utils/workflow-semantics.js +230 -0
- package/dist/utils/workflow-semantics.js.map +1 -0
- package/package.json +6 -5
- package/src/generators/init.tpl.ts +7 -132
- package/src/generators/workflows.tpl.ts +3 -15
- package/dist/templates/actions/run-nx-affected.yml.tpl.d.ts +0 -33
- package/dist/templates/actions/run-nx-affected.yml.tpl.d.ts.map +0 -1
- package/dist/templates/actions/run-nx-affected.yml.tpl.js +0 -346
- package/dist/templates/actions/run-nx-affected.yml.tpl.js.map +0 -1
- package/dist/templates/workflows/pipeline-nx.yml.tpl.d.ts +0 -22
- package/dist/templates/workflows/pipeline-nx.yml.tpl.d.ts.map +0 -1
- package/dist/templates/workflows/pipeline-nx.yml.tpl.js +0 -403
- package/dist/templates/workflows/pipeline-nx.yml.tpl.js.map +0 -1
package/dist/utils/messaging.js
CHANGED
|
@@ -132,8 +132,8 @@ export function formatNextSteps(steps, context) {
|
|
|
132
132
|
/**
|
|
133
133
|
* Create setup summary
|
|
134
134
|
*/
|
|
135
|
-
export function createSetupSummary(repository, permissions, settings,
|
|
136
|
-
const allItems = [...permissions, ...settings, ...
|
|
135
|
+
export function createSetupSummary(repository, permissions, settings, autoPromote, context) {
|
|
136
|
+
const allItems = [...permissions, ...settings, ...autoPromote];
|
|
137
137
|
const needsChange = allItems.filter(item => item.status === 'needs-change');
|
|
138
138
|
const missing = allItems.filter(item => item.status === 'missing');
|
|
139
139
|
const errors = allItems.filter(item => item.status === 'error');
|
|
@@ -169,7 +169,7 @@ export function createSetupSummary(repository, permissions, settings, autoMerge,
|
|
|
169
169
|
overallStatus,
|
|
170
170
|
permissions,
|
|
171
171
|
settings,
|
|
172
|
-
|
|
172
|
+
autoPromote,
|
|
173
173
|
nextSteps,
|
|
174
174
|
warnings,
|
|
175
175
|
errors: errors.map(item => `${item.name}: ${item.current}`)
|
|
@@ -203,8 +203,8 @@ export function formatSetupSummary(summary, context) {
|
|
|
203
203
|
if (summary.settings.length > 0) {
|
|
204
204
|
lines.push(formatStatusTable(summary.settings, context));
|
|
205
205
|
}
|
|
206
|
-
if (summary.
|
|
207
|
-
lines.push(formatStatusTable(summary.
|
|
206
|
+
if (summary.autoPromote.length > 0) {
|
|
207
|
+
lines.push(formatStatusTable(summary.autoPromote, context));
|
|
208
208
|
}
|
|
209
209
|
// Warnings
|
|
210
210
|
if (summary.warnings.length > 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messaging.js","sourceRoot":"","sources":["../../src/utils/messaging.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"messaging.js","sourceRoot":"","sources":["../../src/utils/messaging.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/preflight.js
CHANGED
|
@@ -428,8 +428,8 @@ export function formatPreflightResults(checks) {
|
|
|
428
428
|
' - Add deployment logic to deploy-* jobs (if deployable: true)',
|
|
429
429
|
' - Add remote tests to remote-test-* jobs (if remoteTestable: true)',
|
|
430
430
|
'',
|
|
431
|
-
'2. Validate the workflow
|
|
432
|
-
'
|
|
431
|
+
'2. Validate the workflow:',
|
|
432
|
+
' npx pipecraft validate # Check config and workflow',
|
|
433
433
|
'',
|
|
434
434
|
'3. Configure GitHub permissions for auto-merge:',
|
|
435
435
|
' pipecraft setup-github # Interactive setup',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preflight.js","sourceRoot":"","sources":["../../src/utils/preflight.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"preflight.js","sourceRoot":"","sources":["../../src/utils/preflight.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workflow Semantic Validation
|
|
3
|
+
*
|
|
4
|
+
* Validates the semantic correctness of generated GitHub Actions workflows.
|
|
5
|
+
* This includes:
|
|
6
|
+
* - Job dependency validation (no circular dependencies)
|
|
7
|
+
* - Missing job reference detection
|
|
8
|
+
* - Output reference validation
|
|
9
|
+
* - Unreachable job detection
|
|
10
|
+
*
|
|
11
|
+
* @module utils/workflow-semantics
|
|
12
|
+
*/
|
|
13
|
+
export interface SemanticError {
|
|
14
|
+
type: 'error';
|
|
15
|
+
code: string;
|
|
16
|
+
message: string;
|
|
17
|
+
location?: string;
|
|
18
|
+
}
|
|
19
|
+
export interface SemanticWarning {
|
|
20
|
+
type: 'warning';
|
|
21
|
+
code: string;
|
|
22
|
+
message: string;
|
|
23
|
+
location?: string;
|
|
24
|
+
}
|
|
25
|
+
export interface SemanticValidationResult {
|
|
26
|
+
valid: boolean;
|
|
27
|
+
errors: SemanticError[];
|
|
28
|
+
warnings: SemanticWarning[];
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Validate job dependencies in a workflow.
|
|
32
|
+
*
|
|
33
|
+
* Checks for:
|
|
34
|
+
* 1. Circular dependencies between jobs
|
|
35
|
+
* 2. Missing job references in needs arrays
|
|
36
|
+
* 3. Invalid output references
|
|
37
|
+
* 4. Unreachable jobs (warning)
|
|
38
|
+
*
|
|
39
|
+
* @param yamlContent - The workflow YAML content as a string
|
|
40
|
+
* @returns Validation result with errors and warnings
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* ```typescript
|
|
44
|
+
* const result = validateJobDependencies(workflowYaml)
|
|
45
|
+
* if (!result.valid) {
|
|
46
|
+
* console.error('Validation errors:', result.errors)
|
|
47
|
+
* }
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
50
|
+
export declare function validateJobDependencies(yamlContent: string): SemanticValidationResult;
|
|
51
|
+
/**
|
|
52
|
+
* Validate a complete workflow for semantic correctness.
|
|
53
|
+
*
|
|
54
|
+
* This is the main entry point for workflow validation. It combines
|
|
55
|
+
* job dependency validation with other semantic checks.
|
|
56
|
+
*
|
|
57
|
+
* @param yamlContent - The workflow YAML content as a string
|
|
58
|
+
* @returns Validation result with errors and warnings
|
|
59
|
+
*/
|
|
60
|
+
export declare function validateWorkflowSemantics(yamlContent: string): SemanticValidationResult;
|
|
61
|
+
//# sourceMappingURL=workflow-semantics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-semantics.d.ts","sourceRoot":"","sources":["../../src/utils/workflow-semantics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,OAAO,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,SAAS,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,OAAO,CAAA;IACd,MAAM,EAAE,aAAa,EAAE,CAAA;IACvB,QAAQ,EAAE,eAAe,EAAE,CAAA;CAC5B;AA6MD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,wBAAwB,CAyBrF;AAED;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,MAAM,GAAG,wBAAwB,CAEvF"}
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workflow Semantic Validation
|
|
3
|
+
*
|
|
4
|
+
* Validates the semantic correctness of generated GitHub Actions workflows.
|
|
5
|
+
* This includes:
|
|
6
|
+
* - Job dependency validation (no circular dependencies)
|
|
7
|
+
* - Missing job reference detection
|
|
8
|
+
* - Output reference validation
|
|
9
|
+
* - Unreachable job detection
|
|
10
|
+
*
|
|
11
|
+
* @module utils/workflow-semantics
|
|
12
|
+
*/
|
|
13
|
+
import { parse as parseYAML } from 'yaml';
|
|
14
|
+
/**
|
|
15
|
+
* Parse a workflow YAML string into a structured format for validation.
|
|
16
|
+
*/
|
|
17
|
+
function parseWorkflow(yamlContent) {
|
|
18
|
+
const parsed = parseYAML(yamlContent);
|
|
19
|
+
const jobs = {};
|
|
20
|
+
if (parsed.jobs && typeof parsed.jobs === 'object') {
|
|
21
|
+
for (const [jobName, jobDef] of Object.entries(parsed.jobs)) {
|
|
22
|
+
const job = jobDef;
|
|
23
|
+
let needs = [];
|
|
24
|
+
if (job.needs) {
|
|
25
|
+
if (Array.isArray(job.needs)) {
|
|
26
|
+
needs = job.needs.map(String);
|
|
27
|
+
}
|
|
28
|
+
else if (typeof job.needs === 'string') {
|
|
29
|
+
needs = [job.needs];
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
// Handle if condition - can be string or boolean in YAML
|
|
33
|
+
let ifCondition;
|
|
34
|
+
if (job.if !== undefined) {
|
|
35
|
+
ifCondition = String(job.if);
|
|
36
|
+
}
|
|
37
|
+
jobs[jobName] = {
|
|
38
|
+
name: jobName,
|
|
39
|
+
needs,
|
|
40
|
+
if: ifCondition,
|
|
41
|
+
outputs: job.outputs && typeof job.outputs === 'object'
|
|
42
|
+
? job.outputs
|
|
43
|
+
: undefined
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return {
|
|
48
|
+
name: parsed.name,
|
|
49
|
+
jobs
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Detect circular dependencies in job needs.
|
|
54
|
+
*/
|
|
55
|
+
function detectCircularDependencies(jobs) {
|
|
56
|
+
const errors = [];
|
|
57
|
+
const visited = new Set();
|
|
58
|
+
const recursionStack = new Set();
|
|
59
|
+
const path = [];
|
|
60
|
+
function dfs(jobName) {
|
|
61
|
+
if (recursionStack.has(jobName)) {
|
|
62
|
+
// Found cycle - construct the cycle path
|
|
63
|
+
const cycleStart = path.indexOf(jobName);
|
|
64
|
+
const cyclePath = [...path.slice(cycleStart), jobName].join(' → ');
|
|
65
|
+
errors.push({
|
|
66
|
+
type: 'error',
|
|
67
|
+
code: 'CIRCULAR_DEPENDENCY',
|
|
68
|
+
message: `Circular dependency detected: ${cyclePath}`,
|
|
69
|
+
location: `jobs.${jobName}`
|
|
70
|
+
});
|
|
71
|
+
return true;
|
|
72
|
+
}
|
|
73
|
+
if (visited.has(jobName)) {
|
|
74
|
+
return false;
|
|
75
|
+
}
|
|
76
|
+
visited.add(jobName);
|
|
77
|
+
recursionStack.add(jobName);
|
|
78
|
+
path.push(jobName);
|
|
79
|
+
const job = jobs[jobName];
|
|
80
|
+
if (job) {
|
|
81
|
+
for (const dep of job.needs) {
|
|
82
|
+
if (jobs[dep]) {
|
|
83
|
+
dfs(dep);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
path.pop();
|
|
88
|
+
recursionStack.delete(jobName);
|
|
89
|
+
return false;
|
|
90
|
+
}
|
|
91
|
+
for (const jobName of Object.keys(jobs)) {
|
|
92
|
+
if (!visited.has(jobName)) {
|
|
93
|
+
dfs(jobName);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
return errors;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Detect missing job references in needs arrays.
|
|
100
|
+
*/
|
|
101
|
+
function detectMissingJobReferences(jobs) {
|
|
102
|
+
const errors = [];
|
|
103
|
+
const jobNames = new Set(Object.keys(jobs));
|
|
104
|
+
for (const [jobName, job] of Object.entries(jobs)) {
|
|
105
|
+
for (const dep of job.needs) {
|
|
106
|
+
if (!jobNames.has(dep)) {
|
|
107
|
+
errors.push({
|
|
108
|
+
type: 'error',
|
|
109
|
+
code: 'MISSING_JOB_REFERENCE',
|
|
110
|
+
message: `Job "${jobName}" references non-existent job "${dep}" in needs`,
|
|
111
|
+
location: `jobs.${jobName}.needs`
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
return errors;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Detect invalid output references in job conditions or steps.
|
|
120
|
+
*/
|
|
121
|
+
function detectInvalidOutputReferences(jobs, yamlContent) {
|
|
122
|
+
const errors = [];
|
|
123
|
+
// Match patterns like needs.jobName.outputs.outputName
|
|
124
|
+
const outputRefPattern = /needs\.([a-zA-Z0-9_-]+)\.outputs\.([a-zA-Z0-9_-]+)/g;
|
|
125
|
+
const matches = yamlContent.matchAll(outputRefPattern);
|
|
126
|
+
for (const match of matches) {
|
|
127
|
+
const [fullMatch, jobName, outputName] = match;
|
|
128
|
+
// Check if the referenced job exists
|
|
129
|
+
if (!jobs[jobName]) {
|
|
130
|
+
errors.push({
|
|
131
|
+
type: 'error',
|
|
132
|
+
code: 'INVALID_OUTPUT_REFERENCE',
|
|
133
|
+
message: `Output reference "${fullMatch}" refers to non-existent job "${jobName}"`,
|
|
134
|
+
location: fullMatch
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
return errors;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Detect unreachable jobs (jobs that can never run due to impossible conditions).
|
|
142
|
+
* This is a warning, not an error.
|
|
143
|
+
*/
|
|
144
|
+
function detectUnreachableJobs(jobs) {
|
|
145
|
+
const warnings = [];
|
|
146
|
+
const jobNames = new Set(Object.keys(jobs));
|
|
147
|
+
for (const [jobName, job] of Object.entries(jobs)) {
|
|
148
|
+
// Check if job depends on non-existent jobs (already an error, but also unreachable)
|
|
149
|
+
const hasMissingDep = job.needs.some(dep => !jobNames.has(dep));
|
|
150
|
+
// Check for obvious impossible conditions
|
|
151
|
+
if (job.if) {
|
|
152
|
+
// Detect conditions that are always false
|
|
153
|
+
if (job.if === 'false' || job.if === '${{ false }}') {
|
|
154
|
+
warnings.push({
|
|
155
|
+
type: 'warning',
|
|
156
|
+
code: 'UNREACHABLE_JOB',
|
|
157
|
+
message: `Job "${jobName}" has condition that is always false`,
|
|
158
|
+
location: `jobs.${jobName}.if`
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
// Detect self-referencing conditions (job referencing its own results)
|
|
162
|
+
if (job.if.includes(`needs.${jobName}.`)) {
|
|
163
|
+
warnings.push({
|
|
164
|
+
type: 'warning',
|
|
165
|
+
code: 'SELF_REFERENCING_CONDITION',
|
|
166
|
+
message: `Job "${jobName}" references its own results in condition`,
|
|
167
|
+
location: `jobs.${jobName}.if`
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
return warnings;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Validate job dependencies in a workflow.
|
|
176
|
+
*
|
|
177
|
+
* Checks for:
|
|
178
|
+
* 1. Circular dependencies between jobs
|
|
179
|
+
* 2. Missing job references in needs arrays
|
|
180
|
+
* 3. Invalid output references
|
|
181
|
+
* 4. Unreachable jobs (warning)
|
|
182
|
+
*
|
|
183
|
+
* @param yamlContent - The workflow YAML content as a string
|
|
184
|
+
* @returns Validation result with errors and warnings
|
|
185
|
+
*
|
|
186
|
+
* @example
|
|
187
|
+
* ```typescript
|
|
188
|
+
* const result = validateJobDependencies(workflowYaml)
|
|
189
|
+
* if (!result.valid) {
|
|
190
|
+
* console.error('Validation errors:', result.errors)
|
|
191
|
+
* }
|
|
192
|
+
* ```
|
|
193
|
+
*/
|
|
194
|
+
export function validateJobDependencies(yamlContent) {
|
|
195
|
+
const errors = [];
|
|
196
|
+
const warnings = [];
|
|
197
|
+
try {
|
|
198
|
+
const workflow = parseWorkflow(yamlContent);
|
|
199
|
+
// Run all validations
|
|
200
|
+
errors.push(...detectCircularDependencies(workflow.jobs));
|
|
201
|
+
errors.push(...detectMissingJobReferences(workflow.jobs));
|
|
202
|
+
errors.push(...detectInvalidOutputReferences(workflow.jobs, yamlContent));
|
|
203
|
+
warnings.push(...detectUnreachableJobs(workflow.jobs));
|
|
204
|
+
}
|
|
205
|
+
catch (err) {
|
|
206
|
+
errors.push({
|
|
207
|
+
type: 'error',
|
|
208
|
+
code: 'PARSE_ERROR',
|
|
209
|
+
message: `Failed to parse workflow YAML: ${err instanceof Error ? err.message : String(err)}`
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
return {
|
|
213
|
+
valid: errors.length === 0,
|
|
214
|
+
errors,
|
|
215
|
+
warnings
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Validate a complete workflow for semantic correctness.
|
|
220
|
+
*
|
|
221
|
+
* This is the main entry point for workflow validation. It combines
|
|
222
|
+
* job dependency validation with other semantic checks.
|
|
223
|
+
*
|
|
224
|
+
* @param yamlContent - The workflow YAML content as a string
|
|
225
|
+
* @returns Validation result with errors and warnings
|
|
226
|
+
*/
|
|
227
|
+
export function validateWorkflowSemantics(yamlContent) {
|
|
228
|
+
return validateJobDependencies(yamlContent);
|
|
229
|
+
}
|
|
230
|
+
//# sourceMappingURL=workflow-semantics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-semantics.js","sourceRoot":"","sources":["../../src/utils/workflow-semantics.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pipecraft",
|
|
3
|
-
"version": "0.36.
|
|
3
|
+
"version": "0.36.14",
|
|
4
4
|
"description": "Automated CI/CD pipeline generator for trunk-based development. Generates intelligent GitHub Actions workflows with domain-based change detection, semantic versioning, and branch flow management. Full documentation: https://pipecraft.thecraftlab.dev",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -14,11 +14,11 @@
|
|
|
14
14
|
],
|
|
15
15
|
"repository": {
|
|
16
16
|
"type": "git",
|
|
17
|
-
"url": "https://github.com/
|
|
17
|
+
"url": "https://github.com/the-craftlab/pipecraft.git"
|
|
18
18
|
},
|
|
19
19
|
"homepage": "https://pipecraft.thecraftlab.dev",
|
|
20
20
|
"bugs": {
|
|
21
|
-
"url": "https://github.com/
|
|
21
|
+
"url": "https://github.com/the-craftlab/pipecraft/issues"
|
|
22
22
|
},
|
|
23
23
|
"keywords": [
|
|
24
24
|
"ci-cd",
|
|
@@ -64,8 +64,8 @@
|
|
|
64
64
|
"docs:typedoc": "cd docs && pnpm run typedoc",
|
|
65
65
|
"docs:deploy": "npm run build && cd docs && pnpm run typedoc && pnpm run build",
|
|
66
66
|
"examples:store-git": "./scripts/store-example-git-repos.sh",
|
|
67
|
-
"examples:activate": "node scripts/activate-example-repos.mjs",
|
|
68
|
-
"examples:deactivate": "node scripts/deactivate-example-repos.mjs",
|
|
67
|
+
"examples:activate": "node tests/scripts/activate-example-repos.mjs",
|
|
68
|
+
"examples:deactivate": "node tests/scripts/deactivate-example-repos.mjs",
|
|
69
69
|
"sync-actions": "tsx scripts/sync-actions.ts",
|
|
70
70
|
"sync-actions:check": "tsx scripts/sync-actions.ts --check",
|
|
71
71
|
"sync-actions:verify": "tsx scripts/sync-actions.ts --verify"
|
|
@@ -95,6 +95,7 @@
|
|
|
95
95
|
"tsx": "^4.20.6",
|
|
96
96
|
"typedoc": "^0.28.14",
|
|
97
97
|
"typedoc-plugin-markdown": "^4.9.0",
|
|
98
|
+
"typescript": "^5.9.3",
|
|
98
99
|
"vitest": "^2.1.8"
|
|
99
100
|
},
|
|
100
101
|
"dependencies": {
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
*/
|
|
30
30
|
|
|
31
31
|
import type { PinionContext } from '@featherscloud/pinion'
|
|
32
|
-
import { existsSync,
|
|
32
|
+
import { existsSync, writeFileSync } from 'fs'
|
|
33
33
|
import inquirer from 'inquirer'
|
|
34
34
|
|
|
35
35
|
/**
|
|
@@ -52,7 +52,7 @@ const defaultConfig = {
|
|
|
52
52
|
initialBranch: 'develop',
|
|
53
53
|
finalBranch: 'main',
|
|
54
54
|
branchFlow: ['develop', 'staging', 'main'],
|
|
55
|
-
|
|
55
|
+
autoPromote: {
|
|
56
56
|
staging: true,
|
|
57
57
|
main: true
|
|
58
58
|
},
|
|
@@ -157,9 +157,9 @@ const generateYamlConfig = (config: any): string => {
|
|
|
157
157
|
|
|
158
158
|
// Auto Merge
|
|
159
159
|
lines.push('# Automatic promotion after successful tests')
|
|
160
|
-
lines.push('
|
|
161
|
-
const
|
|
162
|
-
|
|
160
|
+
lines.push('autoPromote:')
|
|
161
|
+
const autoPromoteEntries = Object.entries(config.autoPromote)
|
|
162
|
+
autoPromoteEntries.forEach(([key, value]) => {
|
|
163
163
|
const flowIndex = config.branchFlow.indexOf(key)
|
|
164
164
|
const fromBranch = flowIndex > 0 ? config.branchFlow[flowIndex - 1] : ''
|
|
165
165
|
const comment = fromBranch ? ` # Auto-promote ${fromBranch} → ${key}` : ''
|
|
@@ -233,30 +233,6 @@ const generateYamlConfig = (config: any): string => {
|
|
|
233
233
|
lines.push('')
|
|
234
234
|
})
|
|
235
235
|
|
|
236
|
-
// Nx Configuration (if present)
|
|
237
|
-
if (config.nx) {
|
|
238
|
-
lines.push('# Nx integration for monorepo optimization')
|
|
239
|
-
lines.push('nx:')
|
|
240
|
-
lines.push(` enabled: ${config.nx.enabled}`)
|
|
241
|
-
if (config.nx.tasks !== undefined) {
|
|
242
|
-
if (config.nx.tasks.length > 0) {
|
|
243
|
-
lines.push(' tasks:')
|
|
244
|
-
config.nx.tasks.forEach((task: string) => {
|
|
245
|
-
lines.push(` - ${task}`)
|
|
246
|
-
})
|
|
247
|
-
} else {
|
|
248
|
-
lines.push(' tasks: []')
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
if (config.nx.baseRef) {
|
|
252
|
-
lines.push(` baseRef: ${config.nx.baseRef}`)
|
|
253
|
-
}
|
|
254
|
-
if (config.nx.enableCache !== undefined) {
|
|
255
|
-
lines.push(` enableCache: ${config.nx.enableCache}`)
|
|
256
|
-
}
|
|
257
|
-
lines.push('')
|
|
258
|
-
}
|
|
259
|
-
|
|
260
236
|
// Versioning (if present)
|
|
261
237
|
if (config.versioning) {
|
|
262
238
|
lines.push('# Version calculation and release automation')
|
|
@@ -283,12 +259,7 @@ const generateYamlConfig = (config: any): string => {
|
|
|
283
259
|
if (config.versioning.changelog !== undefined) {
|
|
284
260
|
lines.push(` changelog: ${config.versioning.changelog} # Generate CHANGELOG.md`)
|
|
285
261
|
}
|
|
286
|
-
|
|
287
|
-
lines.push(' bumpRules:')
|
|
288
|
-
Object.entries(config.versioning.bumpRules).forEach(([key, value]) => {
|
|
289
|
-
lines.push(` ${key}: ${value}`)
|
|
290
|
-
})
|
|
291
|
-
}
|
|
262
|
+
// Note: bumpRules are defined in the semver section, not here
|
|
292
263
|
lines.push('')
|
|
293
264
|
}
|
|
294
265
|
|
|
@@ -395,61 +366,6 @@ export const generate = async (ctx: PinionContext) => {
|
|
|
395
366
|
}
|
|
396
367
|
}
|
|
397
368
|
|
|
398
|
-
// Detect package manager before prompting
|
|
399
|
-
let detectedPackageManager: 'npm' | 'yarn' | 'pnpm' = 'npm'
|
|
400
|
-
if (existsSync(`${cwd}/pnpm-lock.yaml`)) {
|
|
401
|
-
detectedPackageManager = 'pnpm'
|
|
402
|
-
} else if (existsSync(`${cwd}/yarn.lock`)) {
|
|
403
|
-
detectedPackageManager = 'yarn'
|
|
404
|
-
} else if (existsSync(`${cwd}/package-lock.json`)) {
|
|
405
|
-
detectedPackageManager = 'npm'
|
|
406
|
-
}
|
|
407
|
-
|
|
408
|
-
// Detect Nx workspace before prompting
|
|
409
|
-
const nxJsonPath = `${cwd}/nx.json`
|
|
410
|
-
let detectedNxTasks: string[] = []
|
|
411
|
-
let nxDetected = false
|
|
412
|
-
|
|
413
|
-
if (existsSync(nxJsonPath)) {
|
|
414
|
-
try {
|
|
415
|
-
const nxJsonContent = readFileSync(nxJsonPath, 'utf8')
|
|
416
|
-
const nxJson = JSON.parse(nxJsonContent)
|
|
417
|
-
|
|
418
|
-
// Extract tasks from targetDefaults
|
|
419
|
-
const tasks = nxJson.targetDefaults ? Object.keys(nxJson.targetDefaults) : []
|
|
420
|
-
|
|
421
|
-
// Sort tasks in a logical order (quality → test → build → e2e)
|
|
422
|
-
const taskOrder = [
|
|
423
|
-
'lint',
|
|
424
|
-
'typecheck',
|
|
425
|
-
'test',
|
|
426
|
-
'unit-test',
|
|
427
|
-
'build',
|
|
428
|
-
'integration-test',
|
|
429
|
-
'e2e',
|
|
430
|
-
'e2e-ci'
|
|
431
|
-
]
|
|
432
|
-
detectedNxTasks = tasks.sort((a, b) => {
|
|
433
|
-
const aIdx = taskOrder.indexOf(a)
|
|
434
|
-
const bIdx = taskOrder.indexOf(b)
|
|
435
|
-
if (aIdx === -1 && bIdx === -1) return 0
|
|
436
|
-
if (aIdx === -1) return 1
|
|
437
|
-
if (bIdx === -1) return -1
|
|
438
|
-
return aIdx - bIdx
|
|
439
|
-
})
|
|
440
|
-
|
|
441
|
-
nxDetected = true
|
|
442
|
-
console.log('\n✅ Nx workspace detected!')
|
|
443
|
-
console.log(` Found tasks: ${detectedNxTasks.join(', ')}`)
|
|
444
|
-
console.log(' Pipecraft can optimize your CI pipeline using Nx affected commands.\n')
|
|
445
|
-
} catch (error) {
|
|
446
|
-
console.warn('\n⚠️ Found nx.json but could not parse it:', error)
|
|
447
|
-
console.log(' Nx integration will use default tasks.\n')
|
|
448
|
-
nxDetected = true
|
|
449
|
-
detectedNxTasks = ['lint', 'test', 'build', 'integration-test']
|
|
450
|
-
}
|
|
451
|
-
}
|
|
452
|
-
|
|
453
369
|
// Run inquirer prompts
|
|
454
370
|
const answers = await inquirer.prompt([
|
|
455
371
|
{
|
|
@@ -497,22 +413,6 @@ export const generate = async (ctx: PinionContext) => {
|
|
|
497
413
|
default: 'develop,staging,main',
|
|
498
414
|
filter: (input: string) => input.split(',').map(b => b.trim())
|
|
499
415
|
},
|
|
500
|
-
{
|
|
501
|
-
type: 'list',
|
|
502
|
-
name: 'packageManager',
|
|
503
|
-
message: `Which package manager do you use? (detected: ${detectedPackageManager})`,
|
|
504
|
-
choices: ['npm', 'yarn', 'pnpm'],
|
|
505
|
-
default: detectedPackageManager
|
|
506
|
-
},
|
|
507
|
-
{
|
|
508
|
-
type: 'confirm',
|
|
509
|
-
name: 'enableNx',
|
|
510
|
-
message: nxDetected
|
|
511
|
-
? `Enable Nx integration? (detected ${detectedNxTasks.length} tasks)`
|
|
512
|
-
: 'Enable Nx integration?',
|
|
513
|
-
default: nxDetected,
|
|
514
|
-
when: () => nxDetected // Only show if Nx is detected
|
|
515
|
-
},
|
|
516
416
|
{
|
|
517
417
|
type: 'list',
|
|
518
418
|
name: 'domainSelection',
|
|
@@ -594,25 +494,6 @@ export const generate = async (ctx: PinionContext) => {
|
|
|
594
494
|
// Merge answers with context and defaults
|
|
595
495
|
const mergedCtx = { ...ctx, ...defaultConfig, ...answers } as any
|
|
596
496
|
|
|
597
|
-
// Configure Nx based on detection and user confirmation
|
|
598
|
-
let nxConfig:
|
|
599
|
-
| { enabled: boolean; tasks: string[]; baseRef: string; enableCache: boolean }
|
|
600
|
-
| undefined
|
|
601
|
-
if (nxDetected && answers.enableNx) {
|
|
602
|
-
console.log('\n✅ Nx integration enabled!')
|
|
603
|
-
console.log(` Tasks to run: ${detectedNxTasks.join(', ')}\n`)
|
|
604
|
-
|
|
605
|
-
nxConfig = {
|
|
606
|
-
enabled: true,
|
|
607
|
-
tasks: detectedNxTasks,
|
|
608
|
-
baseRef: 'origin/main',
|
|
609
|
-
enableCache: true
|
|
610
|
-
}
|
|
611
|
-
} else if (nxDetected && !answers.enableNx) {
|
|
612
|
-
console.log('\n⚠️ Nx detected but integration disabled.')
|
|
613
|
-
console.log(' You can enable it later by editing .pipecraftrc\n')
|
|
614
|
-
}
|
|
615
|
-
|
|
616
497
|
const configData: any = {
|
|
617
498
|
ciProvider: mergedCtx.ciProvider,
|
|
618
499
|
mergeStrategy: mergedCtx.mergeStrategy,
|
|
@@ -620,19 +501,13 @@ export const generate = async (ctx: PinionContext) => {
|
|
|
620
501
|
initialBranch: mergedCtx.initialBranch,
|
|
621
502
|
finalBranch: mergedCtx.finalBranch,
|
|
622
503
|
branchFlow: mergedCtx.branchFlow,
|
|
623
|
-
|
|
624
|
-
packageManager: mergedCtx.packageManager,
|
|
504
|
+
autoPromote: mergedCtx.autoPromote,
|
|
625
505
|
semver: {
|
|
626
506
|
bumpRules: mergedCtx.semver.bumpRules
|
|
627
507
|
},
|
|
628
508
|
domains: domainConfig // Use user-selected domains instead of defaults
|
|
629
509
|
}
|
|
630
510
|
|
|
631
|
-
// Add Nx config if detected
|
|
632
|
-
if (nxConfig) {
|
|
633
|
-
configData.nx = nxConfig
|
|
634
|
-
}
|
|
635
|
-
|
|
636
511
|
// Generate YAML content with comments
|
|
637
512
|
const yamlContent = generateYamlConfig(configData)
|
|
638
513
|
|