pipecraft 0.28.3 → 0.29.0
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/dist/generators/init.tpl.d.ts.map +1 -1
- package/dist/generators/init.tpl.js +80 -58
- 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 +8 -2
- package/dist/generators/workflows.tpl.js.map +1 -1
- package/dist/templates/actions/detect-changes-nx.yml.tpl.d.ts +32 -0
- package/dist/templates/actions/detect-changes-nx.yml.tpl.d.ts.map +1 -0
- package/dist/templates/actions/detect-changes-nx.yml.tpl.js +227 -0
- package/dist/templates/actions/detect-changes-nx.yml.tpl.js.map +1 -0
- package/dist/templates/workflows/pipeline-nx.yml.tpl.d.ts.map +1 -1
- package/dist/templates/workflows/pipeline-nx.yml.tpl.js +19 -2
- package/dist/templates/workflows/pipeline-nx.yml.tpl.js.map +1 -1
- package/dist/templates/workflows/pipeline.yml.tpl.js +2 -2
- package/dist/templates/workflows/pipeline.yml.tpl.js.map +1 -1
- package/dist/types/index.d.ts +11 -0
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +3 -1
- package/src/generators/init.tpl.ts +136 -114
- package/src/generators/workflows.tpl.ts +10 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.tpl.d.ts","sourceRoot":"","sources":["../../src/generators/init.tpl.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"init.tpl.d.ts","sourceRoot":"","sources":["../../src/generators/init.tpl.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,EAAE,aAAa,EAAqC,MAAM,uBAAuB,CAAA;AA6FxF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,eAAO,MAAM,QAAQ,GAAU,KAAK,aAAa,2BA+IhD,CAAA"}
|
|
@@ -27,8 +27,9 @@
|
|
|
27
27
|
* for the initial release to ensure consistent behavior. Future versions will
|
|
28
28
|
* respect user input and allow customization.
|
|
29
29
|
*/
|
|
30
|
-
import { toFile,
|
|
30
|
+
import { toFile, writeJSON } from '@featherscloud/pinion';
|
|
31
31
|
import { existsSync, readFileSync } from 'fs';
|
|
32
|
+
import inquirer from 'inquirer';
|
|
32
33
|
/**
|
|
33
34
|
* Default PipeCraft configuration for new projects.
|
|
34
35
|
*
|
|
@@ -152,64 +153,84 @@ const configTemplate = (ctx) => {
|
|
|
152
153
|
* - Production branch name
|
|
153
154
|
* - Branch flow sequence
|
|
154
155
|
*/
|
|
155
|
-
export const generate = (ctx) =>
|
|
156
|
-
.
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
type: 'list',
|
|
165
|
-
name: 'ciProvider',
|
|
166
|
-
message: 'Which CI provider are you using?',
|
|
167
|
-
choices: [
|
|
168
|
-
{ name: 'GitHub Actions', value: 'github' },
|
|
169
|
-
{ name: 'GitLab CI/CD', value: 'gitlab' }
|
|
170
|
-
],
|
|
171
|
-
default: 'github'
|
|
172
|
-
},
|
|
173
|
-
{
|
|
174
|
-
type: 'list',
|
|
175
|
-
name: 'mergeStrategy',
|
|
176
|
-
message: 'What merge strategy do you prefer?',
|
|
177
|
-
choices: [
|
|
178
|
-
{ name: 'Fast-forward only (recommended)', value: 'fast-forward' },
|
|
179
|
-
{ name: 'Merge commits', value: 'merge' }
|
|
180
|
-
],
|
|
181
|
-
default: 'fast-forward'
|
|
182
|
-
},
|
|
183
|
-
{
|
|
184
|
-
type: 'confirm',
|
|
185
|
-
name: 'requireConventionalCommits',
|
|
186
|
-
message: 'Require conventional commit format for PR titles?',
|
|
187
|
-
default: true
|
|
188
|
-
},
|
|
189
|
-
{
|
|
190
|
-
type: 'input',
|
|
191
|
-
name: 'initialBranch',
|
|
192
|
-
message: 'What is your development branch name?',
|
|
193
|
-
default: 'develop'
|
|
194
|
-
},
|
|
195
|
-
{
|
|
196
|
-
type: 'input',
|
|
197
|
-
name: 'finalBranch',
|
|
198
|
-
message: 'What is your production branch name?',
|
|
199
|
-
default: 'main'
|
|
200
|
-
},
|
|
201
|
-
{
|
|
202
|
-
type: 'input',
|
|
203
|
-
name: 'branchFlow',
|
|
204
|
-
message: 'Enter your branch flow (comma-separated)',
|
|
205
|
-
default: 'develop,staging,main',
|
|
206
|
-
filter: (input) => input.split(',').map(b => b.trim())
|
|
156
|
+
export const generate = async (ctx) => {
|
|
157
|
+
const cwd = ctx.cwd || process.cwd();
|
|
158
|
+
// Detect package manager before prompting
|
|
159
|
+
let detectedPackageManager = 'npm';
|
|
160
|
+
if (existsSync(`${cwd}/pnpm-lock.yaml`)) {
|
|
161
|
+
detectedPackageManager = 'pnpm';
|
|
162
|
+
}
|
|
163
|
+
else if (existsSync(`${cwd}/yarn.lock`)) {
|
|
164
|
+
detectedPackageManager = 'yarn';
|
|
207
165
|
}
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
166
|
+
else if (existsSync(`${cwd}/package-lock.json`)) {
|
|
167
|
+
detectedPackageManager = 'npm';
|
|
168
|
+
}
|
|
169
|
+
// Run inquirer prompts
|
|
170
|
+
const answers = await inquirer.prompt([
|
|
171
|
+
{
|
|
172
|
+
type: 'input',
|
|
173
|
+
name: 'projectName',
|
|
174
|
+
message: 'What is your project name?',
|
|
175
|
+
default: 'my-project'
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
type: 'list',
|
|
179
|
+
name: 'ciProvider',
|
|
180
|
+
message: 'Which CI provider are you using?',
|
|
181
|
+
choices: [
|
|
182
|
+
{ name: 'GitHub Actions', value: 'github' },
|
|
183
|
+
{ name: 'GitLab CI/CD', value: 'gitlab' }
|
|
184
|
+
],
|
|
185
|
+
default: 'github'
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
type: 'list',
|
|
189
|
+
name: 'mergeStrategy',
|
|
190
|
+
message: 'What merge strategy do you prefer?',
|
|
191
|
+
choices: [
|
|
192
|
+
{ name: 'Fast-forward only (recommended)', value: 'fast-forward' },
|
|
193
|
+
{ name: 'Merge commits', value: 'merge' }
|
|
194
|
+
],
|
|
195
|
+
default: 'fast-forward'
|
|
196
|
+
},
|
|
197
|
+
{
|
|
198
|
+
type: 'confirm',
|
|
199
|
+
name: 'requireConventionalCommits',
|
|
200
|
+
message: 'Require conventional commit format for PR titles?',
|
|
201
|
+
default: true
|
|
202
|
+
},
|
|
203
|
+
{
|
|
204
|
+
type: 'input',
|
|
205
|
+
name: 'initialBranch',
|
|
206
|
+
message: 'What is your development branch name?',
|
|
207
|
+
default: 'develop'
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
type: 'input',
|
|
211
|
+
name: 'finalBranch',
|
|
212
|
+
message: 'What is your production branch name?',
|
|
213
|
+
default: 'main'
|
|
214
|
+
},
|
|
215
|
+
{
|
|
216
|
+
type: 'input',
|
|
217
|
+
name: 'branchFlow',
|
|
218
|
+
message: 'Enter your branch flow (comma-separated)',
|
|
219
|
+
default: 'develop,staging,main',
|
|
220
|
+
filter: (input) => input.split(',').map(b => b.trim())
|
|
221
|
+
},
|
|
222
|
+
{
|
|
223
|
+
type: 'list',
|
|
224
|
+
name: 'packageManager',
|
|
225
|
+
message: `Which package manager do you use? (detected: ${detectedPackageManager})`,
|
|
226
|
+
choices: ['npm', 'yarn', 'pnpm'],
|
|
227
|
+
default: detectedPackageManager
|
|
228
|
+
}
|
|
229
|
+
]);
|
|
230
|
+
// Merge answers with context and defaults
|
|
231
|
+
const mergedCtx = { ...ctx, ...defaultConfig, ...answers };
|
|
211
232
|
// Detect Nx workspace
|
|
212
|
-
const nxJsonPath = `${
|
|
233
|
+
const nxJsonPath = `${cwd}/nx.json`;
|
|
213
234
|
let nxConfig = undefined;
|
|
214
235
|
if (existsSync(nxJsonPath)) {
|
|
215
236
|
try {
|
|
@@ -258,6 +279,7 @@ export const generate = (ctx) => Promise.resolve(ctx)
|
|
|
258
279
|
finalBranch: mergedCtx.finalBranch,
|
|
259
280
|
branchFlow: mergedCtx.branchFlow,
|
|
260
281
|
autoMerge: mergedCtx.autoMerge,
|
|
282
|
+
packageManager: mergedCtx.packageManager,
|
|
261
283
|
semver: {
|
|
262
284
|
bumpRules: mergedCtx.semver.bumpRules
|
|
263
285
|
},
|
|
@@ -268,5 +290,5 @@ export const generate = (ctx) => Promise.resolve(ctx)
|
|
|
268
290
|
configData.nx = nxConfig;
|
|
269
291
|
}
|
|
270
292
|
return writeJSON(() => configData, toFile('.pipecraftrc.json'))(mergedCtx);
|
|
271
|
-
}
|
|
293
|
+
};
|
|
272
294
|
//# sourceMappingURL=init.tpl.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.tpl.js","sourceRoot":"","sources":["../../src/generators/init.tpl.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,EAAiB,MAAM,EAAkB,
|
|
1
|
+
{"version":3,"file":"init.tpl.js","sourceRoot":"","sources":["../../src/generators/init.tpl.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflows.tpl.d.ts","sourceRoot":"","sources":["../../src/generators/workflows.tpl.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAEH,OAAO,EAAE,aAAa,EAA0C,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"workflows.tpl.d.ts","sourceRoot":"","sources":["../../src/generators/workflows.tpl.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAEH,OAAO,EAAE,aAAa,EAA0C,MAAM,uBAAuB,CAAA;AAmD7F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,eAAO,MAAM,QAAQ,GAAI,KAAK,aAAa,GAAG;IAAE,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,GAAG,CAAA;CAAE,iBA4D5G,CAAA"}
|
|
@@ -46,6 +46,7 @@ import { logger } from '../utils/logger.js';
|
|
|
46
46
|
// Import individual workflow templates
|
|
47
47
|
import { generate as generateTagWorkflow } from '../templates/actions/create-tag.yml.tpl.js';
|
|
48
48
|
import { generate as generateChangesWorkflow } from '../templates/actions/detect-changes.yml.tpl.js';
|
|
49
|
+
import { generate as generateChangesNxWorkflow } from '../templates/actions/detect-changes-nx.yml.tpl.js';
|
|
49
50
|
import { generate as generateVersionWorkflow } from '../templates/actions/calculate-version.yml.tpl.js';
|
|
50
51
|
import { generate as generateCreatePRWorkflow } from '../templates/actions/create-pr.yml.tpl.js';
|
|
51
52
|
import { generate as generateBranchWorkflow } from '../templates/actions/manage-branch.yml.tpl.js';
|
|
@@ -150,7 +151,7 @@ export const generate = (ctx) => Promise.resolve(ctx)
|
|
|
150
151
|
})
|
|
151
152
|
.then((ctx) => {
|
|
152
153
|
// Generate individual GitHub Actions and release-it config
|
|
153
|
-
|
|
154
|
+
const generators = [
|
|
154
155
|
generateChangesWorkflow(ctx),
|
|
155
156
|
generateTagWorkflow(ctx),
|
|
156
157
|
generateVersionWorkflow(ctx),
|
|
@@ -159,7 +160,12 @@ export const generate = (ctx) => Promise.resolve(ctx)
|
|
|
159
160
|
generatePromoteBranchWorkflow(ctx),
|
|
160
161
|
generateReleaseWorkflow(ctx),
|
|
161
162
|
generateReleaseItConfig(ctx)
|
|
162
|
-
]
|
|
163
|
+
];
|
|
164
|
+
// Add Nx-specific action if Nx is enabled
|
|
165
|
+
if (ctx.config?.nx?.enabled) {
|
|
166
|
+
generators.push(generateChangesNxWorkflow(ctx));
|
|
167
|
+
}
|
|
168
|
+
return Promise.all(generators).then(() => ctx);
|
|
163
169
|
})
|
|
164
170
|
.then((ctx) => {
|
|
165
171
|
// Generate the main pipeline (Nx or path-based)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflows.tpl.js","sourceRoot":"","sources":["../../src/generators/workflows.tpl.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"workflows.tpl.js","sourceRoot":"","sources":["../../src/generators/workflows.tpl.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAKH,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,IAAI,CAAA;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAA;AAC5B,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAE3C,uCAAuC;AACvC,OAAO,EAAE,QAAQ,IAAI,mBAAmB,EAAE,MAAM,4CAA4C,CAAA;AAC5F,OAAO,EAAE,QAAQ,IAAI,uBAAuB,EAAE,MAAM,gDAAgD,CAAA;AACpG,OAAO,EAAE,QAAQ,IAAI,yBAAyB,EAAE,MAAM,mDAAmD,CAAA;AACzG,OAAO,EAAE,QAAQ,IAAI,uBAAuB,EAAE,MAAM,mDAAmD,CAAA;AACvG,OAAO,EAAE,QAAQ,IAAI,wBAAwB,EAAE,MAAM,2CAA2C,CAAA;AAChG,OAAO,EAAE,QAAQ,IAAI,sBAAsB,EAAE,MAAM,+CAA+C,CAAA;AAClG,OAAO,EAAE,QAAQ,IAAI,6BAA6B,EAAE,MAAM,gDAAgD,CAAA;AAC1G,OAAO,EAAE,QAAQ,IAAI,uBAAuB,EAAE,MAAM,gDAAgD,CAAA;AACpG,OAAO,EAAE,QAAQ,IAAI,yBAAyB,EAAE,MAAM,4CAA4C,CAAA;AAClG,OAAO,EAAE,QAAQ,IAAI,kBAAkB,EAAE,MAAM,+CAA+C,CAAA;AAC9F,OAAO,EAAE,QAAQ,IAAI,uBAAuB,EAAE,MAAM,qDAAqD,CAAA;AACzG,OAAO,EAAE,QAAQ,IAAI,oBAAoB,EAAE,MAAM,kDAAkD,CAAA;AACnG,OAAO,EAAE,QAAQ,IAAI,uBAAuB,EAAE,MAAM,oCAAoC,CAAA;AAExF;;;;;;GAMG;AACH,MAAM,aAAa,GAAG;IACpB,UAAU,EAAE,QAAiB;IAC7B,aAAa,EAAE,cAAuB;IACtC,0BAA0B,EAAE,IAAI;IAChC,aAAa,EAAE,SAAS;IACxB,WAAW,EAAE,MAAM;IACnB,UAAU,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC;IAC1C,MAAM,EAAE;QACN,SAAS,EAAE;YACT,IAAI,EAAE,OAAO;YACb,GAAG,EAAE,OAAO;YACZ,QAAQ,EAAE,OAAO;SAClB;KACF;IACD,OAAO,EAAE;QACP,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,aAAa,CAAC,EAAE,WAAW,EAAE,yBAAyB,EAAE;QACvE,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,aAAa,CAAC,EAAE,WAAW,EAAE,yBAAyB,EAAE;QACvE,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,wBAAwB,EAAE;QACnE,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,sBAAsB,CAAC,EAAE,WAAW,EAAE,6BAA6B,EAAE;KACtF;CACF,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,GAAyF,EAAE,EAAE,CACpH,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC;KACjB,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;IACZ,MAAM,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAA;IAE9C,qCAAqC;IACrC,IAAI,gBAAgB,GAAG,IAAI,CAAA;IAC3B,IAAI,uBAAuB,GAAG,IAAI,CAAA;IAClC,IAAI,GAAG,CAAC,YAAY,IAAI,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;QACrD,IAAI,CAAC;YACH,uBAAuB,GAAG,YAAY,CAAC,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA;YAChE,gBAAgB,GAAG,KAAK,CAAC,uBAAuB,CAAC,CAAA;YACjD,MAAM,CAAC,OAAO,CAAC,qCAAqC,GAAG,CAAC,YAAY,EAAE,CAAC,CAAA;QACzE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC,yCAAyC,KAAK,EAAE,CAAC,CAAA;QAC/D,CAAC;IACH,CAAC;IAED,OAAO,EAAE,GAAG,GAAG,EAAE,GAAG,aAAa,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,GAAG,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,GAAG,CAAC,kBAAkB,EAAE,CAAA;AACnJ,CAAC,CAAC;KACD,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;IACZ,2DAA2D;IAC3D,MAAM,UAAU,GAAG;QACjB,uBAAuB,CAAC,GAAG,CAAC;QAC5B,mBAAmB,CAAC,GAAG,CAAC;QACxB,uBAAuB,CAAC,GAAG,CAAC;QAC5B,wBAAwB,CAAC,GAAG,CAAC;QAC7B,sBAAsB,CAAC,GAAG,CAAC;QAC3B,6BAA6B,CAAC,GAAG,CAAC;QAClC,uBAAuB,CAAC,GAAG,CAAC;QAC5B,uBAAuB,CAAC,GAAG,CAAC;KAC7B,CAAA;IAED,0CAA0C;IAC1C,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC;QAC5B,UAAU,CAAC,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAA;IACjD,CAAC;IAED,OAAO,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAA;AAChD,CAAC,CAAC;KACD,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;IACZ,gDAAgD;IAChD,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAA;QACrD,OAAO,kBAAkB,CAAC,GAAU,CAAC,CAAA;IACvC,CAAC;SAAM,CAAC;QACN,OAAO,yBAAyB,CAAC,GAAG,CAAC,CAAA;IACvC,CAAC;AACH,CAAC,CAAC;KACD,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;IACZ,0CAA0C;IAC1C,OAAO,uBAAuB,CAAC,GAAG,CAAC,CAAA;AACrC,CAAC,CAAC;KACD,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;IACZ,uCAAuC;IACvC,OAAO,oBAAoB,CAAC,GAAG,CAAC,CAAA;AAClC,CAAC,CAAC;KACD,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;IACZ,MAAM,CAAC,OAAO,CAAC,6CAA6C,CAAC,CAAA;IAC7D,OAAO,GAAG,CAAA;AACZ,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Detect Changes Nx Action Template
|
|
3
|
+
*
|
|
4
|
+
* Generates a GitHub composite action that detects which domains have changed
|
|
5
|
+
* using Nx dependency graph analysis with path-based fallback.
|
|
6
|
+
*
|
|
7
|
+
* ## Purpose
|
|
8
|
+
*
|
|
9
|
+
* For Nx monorepos, this action uses `nx show projects --affected` to leverage
|
|
10
|
+
* the dependency graph for intelligent change detection. It maps affected Nx
|
|
11
|
+
* projects to configured domains and falls back to path-based detection when
|
|
12
|
+
* Nx is unavailable.
|
|
13
|
+
*
|
|
14
|
+
* ## Generated Action Location
|
|
15
|
+
*
|
|
16
|
+
* `.github/actions/detect-changes-nx/action.yml`
|
|
17
|
+
*
|
|
18
|
+
* @module templates/actions/detect-changes-nx.yml.tpl
|
|
19
|
+
*/
|
|
20
|
+
import { PinionContext } from '@featherscloud/pinion';
|
|
21
|
+
/**
|
|
22
|
+
* Generator entry point for detect-changes-nx composite action.
|
|
23
|
+
*
|
|
24
|
+
* Generates the `.github/actions/detect-changes-nx/action.yml` file with Nx-aware
|
|
25
|
+
* change detection logic. This action is used by Nx-enabled pipelines.
|
|
26
|
+
*
|
|
27
|
+
* @param {PinionContext} ctx - Pinion generator context
|
|
28
|
+
* @param {Record<string, DomainConfig>} ctx.domains - Domain configurations
|
|
29
|
+
* @returns {Promise<PinionContext>} Updated context after file generation
|
|
30
|
+
*/
|
|
31
|
+
export declare const generate: (ctx: PinionContext) => Promise<any>;
|
|
32
|
+
//# sourceMappingURL=detect-changes-nx.yml.tpl.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detect-changes-nx.yml.tpl.d.ts","sourceRoot":"","sources":["../../../src/templates/actions/detect-changes-nx.yml.tpl.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,aAAa,EAA0B,MAAM,uBAAuB,CAAA;AAmN7E;;;;;;;;;GASG;AACH,eAAO,MAAM,QAAQ,GAAI,KAAK,aAAa,iBAU+D,CAAA"}
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Detect Changes Nx Action Template
|
|
3
|
+
*
|
|
4
|
+
* Generates a GitHub composite action that detects which domains have changed
|
|
5
|
+
* using Nx dependency graph analysis with path-based fallback.
|
|
6
|
+
*
|
|
7
|
+
* ## Purpose
|
|
8
|
+
*
|
|
9
|
+
* For Nx monorepos, this action uses `nx show projects --affected` to leverage
|
|
10
|
+
* the dependency graph for intelligent change detection. It maps affected Nx
|
|
11
|
+
* projects to configured domains and falls back to path-based detection when
|
|
12
|
+
* Nx is unavailable.
|
|
13
|
+
*
|
|
14
|
+
* ## Generated Action Location
|
|
15
|
+
*
|
|
16
|
+
* `.github/actions/detect-changes-nx/action.yml`
|
|
17
|
+
*
|
|
18
|
+
* @module templates/actions/detect-changes-nx.yml.tpl
|
|
19
|
+
*/
|
|
20
|
+
import { toFile, renderTemplate } from '@featherscloud/pinion';
|
|
21
|
+
import fs from 'fs';
|
|
22
|
+
import { logger } from '../../utils/logger.js';
|
|
23
|
+
/**
|
|
24
|
+
* Generates the detect-changes-nx composite action YAML content.
|
|
25
|
+
*
|
|
26
|
+
* Creates a GitHub Actions composite action that:
|
|
27
|
+
* - Checks for Nx availability in the repository
|
|
28
|
+
* - Uses `nx show projects --affected` for dependency graph analysis
|
|
29
|
+
* - Maps affected projects to domains
|
|
30
|
+
* - Falls back to path-based detection if Nx isn't available
|
|
31
|
+
* - Outputs Nx-specific information (affected projects, Nx availability)
|
|
32
|
+
*
|
|
33
|
+
* @param {any} ctx - Context containing domains configuration
|
|
34
|
+
* @param {Record<string, DomainConfig>} ctx.domains - Domain configurations with path patterns
|
|
35
|
+
* @returns {string} YAML content for the composite action
|
|
36
|
+
*/
|
|
37
|
+
const changesNxActionTemplate = (ctx) => {
|
|
38
|
+
const domainOutputs = Object.entries(ctx.domains).map((entry) => {
|
|
39
|
+
const [domainName, domainConfig] = entry;
|
|
40
|
+
return ` ${domainName}:
|
|
41
|
+
description: 'Whether ${domainName} domain has changes'
|
|
42
|
+
value: \${{ steps.merge.outputs.${domainName} }}`;
|
|
43
|
+
}).join('\n');
|
|
44
|
+
const domainFilters = Object.entries(ctx.domains).map((entry) => {
|
|
45
|
+
const [domainName, domainConfig] = entry;
|
|
46
|
+
return ` ${domainName}:\n - '${domainConfig.paths.join("'\\n - '")}'`;
|
|
47
|
+
}).join('\n');
|
|
48
|
+
// Generate Nx pattern matching logic for each domain
|
|
49
|
+
const domainNames = Object.keys(ctx.domains);
|
|
50
|
+
const nxPatternMatching = domainNames.map(domainName => {
|
|
51
|
+
return ` # Check ${domainName} domain patterns
|
|
52
|
+
if echo "$project" | grep -qE "(${domainName}|$(echo "${domainName}" | sed 's/-/[-_]/g'))"; then
|
|
53
|
+
${domainName.toUpperCase()}_AFFECTED=true
|
|
54
|
+
echo " ✅ $project matches ${domainName} domain"
|
|
55
|
+
fi`;
|
|
56
|
+
}).join('\n');
|
|
57
|
+
const nxFlagInit = domainNames.map(domainName => ` ${domainName.toUpperCase()}_AFFECTED=false`).join('\n');
|
|
58
|
+
const nxOutputs = domainNames.map(domainName => ` echo "${domainName}=$${domainName.toUpperCase()}_AFFECTED" >> $GITHUB_OUTPUT`).join('\n');
|
|
59
|
+
const nxFallbackOutputs = domainNames.map(domainName => ` echo "${domainName}=false" >> $GITHUB_OUTPUT`).join('\n');
|
|
60
|
+
const pathFilterOutputs = domainNames.map(domainName => ` echo "${domainName}=\${{ contains(steps.filter.outputs.changes, '${domainName}') }}" >> $GITHUB_OUTPUT`).join('\n');
|
|
61
|
+
const nxMergeOutputs = domainNames.map(domainName => ` echo "${domainName}=\${{ steps.nx-filter.outputs.${domainName} }}" >> $GITHUB_OUTPUT`).join('\n');
|
|
62
|
+
const resultEchoes = domainNames.map(domainName => ` echo " ${domainName}: \${{ steps.merge.outputs.${domainName} }}"`).join('\n');
|
|
63
|
+
// Generate the composite action YAML
|
|
64
|
+
return `name: 'Detect Changes with Nx Support'
|
|
65
|
+
description: 'Enhanced change detection using Nx dependency graph with path-based fallback'
|
|
66
|
+
author: 'Pipecraft'
|
|
67
|
+
|
|
68
|
+
inputs:
|
|
69
|
+
baseRef:
|
|
70
|
+
description: 'Base reference to compare against'
|
|
71
|
+
required: false
|
|
72
|
+
default: 'main'
|
|
73
|
+
useNx:
|
|
74
|
+
description: 'Whether to use Nx dependency graph for change detection'
|
|
75
|
+
required: false
|
|
76
|
+
default: 'true'
|
|
77
|
+
|
|
78
|
+
outputs:
|
|
79
|
+
${domainOutputs}
|
|
80
|
+
nxAvailable:
|
|
81
|
+
description: 'Whether Nx is available in the repository'
|
|
82
|
+
value: \${{ steps.nx-check.outputs.available }}
|
|
83
|
+
affectedProjects:
|
|
84
|
+
description: 'Comma-separated list of affected Nx projects'
|
|
85
|
+
value: \${{ steps.nx-filter.outputs.affectedProjects }}
|
|
86
|
+
|
|
87
|
+
runs:
|
|
88
|
+
using: 'composite'
|
|
89
|
+
steps:
|
|
90
|
+
- name: Checkout Code
|
|
91
|
+
uses: actions/checkout@v4
|
|
92
|
+
with:
|
|
93
|
+
fetch-depth: 0
|
|
94
|
+
|
|
95
|
+
- name: Set Base Branch
|
|
96
|
+
id: set-base
|
|
97
|
+
shell: bash
|
|
98
|
+
run: |
|
|
99
|
+
base_branch=\${{ inputs.baseRef || 'main' }}
|
|
100
|
+
echo "base_branch=$base_branch" >> $GITHUB_OUTPUT
|
|
101
|
+
echo "base_branch=$base_branch" >> $GITHUB_ENV
|
|
102
|
+
|
|
103
|
+
- name: Check for Nx
|
|
104
|
+
id: nx-check
|
|
105
|
+
shell: bash
|
|
106
|
+
run: |
|
|
107
|
+
if [ -f "nx.json" ] || ([ -f "package.json" ] && grep -q '"nx"' package.json); then
|
|
108
|
+
echo "available=true" >> $GITHUB_OUTPUT
|
|
109
|
+
echo "🔍 Nx detected in repository"
|
|
110
|
+
else
|
|
111
|
+
echo "available=false" >> $GITHUB_OUTPUT
|
|
112
|
+
echo "⚠️ Nx not detected, falling back to path-based detection"
|
|
113
|
+
fi
|
|
114
|
+
|
|
115
|
+
- name: Setup Node.js
|
|
116
|
+
if: steps.nx-check.outputs.available == 'true' && inputs.useNx == 'true'
|
|
117
|
+
uses: actions/setup-node@v4
|
|
118
|
+
with:
|
|
119
|
+
node-version: '20'
|
|
120
|
+
|
|
121
|
+
- name: Install Dependencies
|
|
122
|
+
if: steps.nx-check.outputs.available == 'true' && inputs.useNx == 'true'
|
|
123
|
+
shell: bash
|
|
124
|
+
run: |
|
|
125
|
+
echo "📦 Installing dependencies for Nx..."
|
|
126
|
+
if [ -f "pnpm-lock.yaml" ]; then
|
|
127
|
+
corepack enable
|
|
128
|
+
pnpm install --frozen-lockfile || pnpm install
|
|
129
|
+
elif [ -f "yarn.lock" ]; then
|
|
130
|
+
yarn install --frozen-lockfile || yarn install
|
|
131
|
+
elif [ -f "package-lock.json" ]; then
|
|
132
|
+
npm ci || npm install
|
|
133
|
+
else
|
|
134
|
+
npm install
|
|
135
|
+
fi
|
|
136
|
+
|
|
137
|
+
- name: Detect Changes with Nx (if available)
|
|
138
|
+
id: nx-filter
|
|
139
|
+
if: steps.nx-check.outputs.available == 'true' && inputs.useNx == 'true'
|
|
140
|
+
shell: bash
|
|
141
|
+
run: |
|
|
142
|
+
echo "🚀 Using Nx dependency graph for change detection"
|
|
143
|
+
|
|
144
|
+
# Get affected projects using Nx
|
|
145
|
+
if command -v npx >/dev/null 2>&1; then
|
|
146
|
+
# Get list of affected projects (newline-separated)
|
|
147
|
+
AFFECTED_PROJECTS_RAW=$(npx nx show projects --affected --base=\${{ steps.set-base.outputs.base_branch }} 2>/dev/null || echo "")
|
|
148
|
+
|
|
149
|
+
# Convert newlines to commas for storage
|
|
150
|
+
AFFECTED_PROJECTS=$(echo "$AFFECTED_PROJECTS_RAW" | tr '\\n' ',' | sed 's/,$//')
|
|
151
|
+
echo "affectedProjects=$AFFECTED_PROJECTS" >> $GITHUB_OUTPUT
|
|
152
|
+
|
|
153
|
+
if [ -n "$AFFECTED_PROJECTS" ]; then
|
|
154
|
+
echo "📦 Affected Nx projects: $AFFECTED_PROJECTS"
|
|
155
|
+
|
|
156
|
+
# Initialize domain flags
|
|
157
|
+
${nxFlagInit}
|
|
158
|
+
|
|
159
|
+
# Check each affected project against domain patterns (comma-separated)
|
|
160
|
+
IFS=',' read -ra PROJECTS <<< "$AFFECTED_PROJECTS"
|
|
161
|
+
for project in "\${PROJECTS[@]}"; do
|
|
162
|
+
project=$(echo "$project" | xargs) # trim whitespace
|
|
163
|
+
${nxPatternMatching}
|
|
164
|
+
done
|
|
165
|
+
|
|
166
|
+
# Set outputs
|
|
167
|
+
${nxOutputs}
|
|
168
|
+
|
|
169
|
+
else
|
|
170
|
+
echo "No affected projects detected"
|
|
171
|
+
${nxFallbackOutputs}
|
|
172
|
+
fi
|
|
173
|
+
else
|
|
174
|
+
echo "⚠️ npx not available, falling back to path-based detection"
|
|
175
|
+
${nxFallbackOutputs}
|
|
176
|
+
echo "affectedProjects=" >> $GITHUB_OUTPUT
|
|
177
|
+
fi
|
|
178
|
+
|
|
179
|
+
- name: Detect Changes with Paths Filter (fallback)
|
|
180
|
+
uses: dorny/paths-filter@v3
|
|
181
|
+
id: filter
|
|
182
|
+
if: steps.nx-check.outputs.available != 'true' || inputs.useNx != 'true'
|
|
183
|
+
with:
|
|
184
|
+
base: \${{ steps.set-base.outputs.base_branch }}
|
|
185
|
+
filters: |
|
|
186
|
+
${domainFilters}
|
|
187
|
+
|
|
188
|
+
- name: Merge filter outputs
|
|
189
|
+
id: merge
|
|
190
|
+
shell: bash
|
|
191
|
+
run: |
|
|
192
|
+
# Use Nx results if available, otherwise use path filter results
|
|
193
|
+
if [ "\${{ steps.nx-check.outputs.available }}" == "true" ] && [ "\${{ inputs.useNx }}" == "true" ]; then
|
|
194
|
+
${nxMergeOutputs}
|
|
195
|
+
echo "🔍 Using Nx dependency analysis results"
|
|
196
|
+
echo "📦 Affected projects: \${{ steps.nx-filter.outputs.affectedProjects }}"
|
|
197
|
+
else
|
|
198
|
+
${pathFilterOutputs}
|
|
199
|
+
echo "📁 Using path-based change detection"
|
|
200
|
+
fi
|
|
201
|
+
|
|
202
|
+
echo "📋 Change Detection Results:"
|
|
203
|
+
${resultEchoes}
|
|
204
|
+
echo " nx-available: \${{ steps.nx-check.outputs.available }}"
|
|
205
|
+
`;
|
|
206
|
+
};
|
|
207
|
+
/**
|
|
208
|
+
* Generator entry point for detect-changes-nx composite action.
|
|
209
|
+
*
|
|
210
|
+
* Generates the `.github/actions/detect-changes-nx/action.yml` file with Nx-aware
|
|
211
|
+
* change detection logic. This action is used by Nx-enabled pipelines.
|
|
212
|
+
*
|
|
213
|
+
* @param {PinionContext} ctx - Pinion generator context
|
|
214
|
+
* @param {Record<string, DomainConfig>} ctx.domains - Domain configurations
|
|
215
|
+
* @returns {Promise<PinionContext>} Updated context after file generation
|
|
216
|
+
*/
|
|
217
|
+
export const generate = (ctx) => Promise.resolve(ctx)
|
|
218
|
+
.then((ctx) => {
|
|
219
|
+
// Check if file exists to determine merge status
|
|
220
|
+
const filePath = '.github/actions/detect-changes-nx/action.yml';
|
|
221
|
+
const exists = fs.existsSync(filePath);
|
|
222
|
+
const status = exists ? '🔄 Merged with existing' : '📝 Created new';
|
|
223
|
+
logger.verbose(`${status} ${filePath}`);
|
|
224
|
+
return ctx;
|
|
225
|
+
})
|
|
226
|
+
.then(renderTemplate(changesNxActionTemplate, toFile('.github/actions/detect-changes-nx/action.yml')));
|
|
227
|
+
//# sourceMappingURL=detect-changes-nx.yml.tpl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detect-changes-nx.yml.tpl.js","sourceRoot":"","sources":["../../../src/templates/actions/detect-changes-nx.yml.tpl.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline-nx.yml.tpl.d.ts","sourceRoot":"","sources":["../../../src/templates/workflows/pipeline-nx.yml.tpl.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,aAAa,EAA0B,MAAM,uBAAuB,CAAA;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAiBtD,UAAU,iBAAkB,SAAQ,aAAa;IAC/C,MAAM,EAAE,eAAe,CAAA;IACvB,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B;
|
|
1
|
+
{"version":3,"file":"pipeline-nx.yml.tpl.d.ts","sourceRoot":"","sources":["../../../src/templates/workflows/pipeline-nx.yml.tpl.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,aAAa,EAA0B,MAAM,uBAAuB,CAAA;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAiBtD,UAAU,iBAAkB,SAAQ,aAAa;IAC/C,MAAM,EAAE,eAAe,CAAA;IACvB,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B;AAqFD;;GAEG;AACH,eAAO,MAAM,QAAQ,GAAI,KAAK,iBAAiB,iBAwH2F,CAAA"}
|
|
@@ -20,6 +20,7 @@ import { formatIfConditions } from '../yaml-format-utils.js';
|
|
|
20
20
|
function createNxCiJobOperation(ctx) {
|
|
21
21
|
const { config } = ctx;
|
|
22
22
|
const nxConfig = config.nx;
|
|
23
|
+
const packageManager = config.packageManager || 'npm';
|
|
23
24
|
const enableCache = nxConfig.enableCache !== false;
|
|
24
25
|
const taskSteps = nxConfig.tasks
|
|
25
26
|
.map(task => ` - name: Run Nx Affected - ${task}
|
|
@@ -65,10 +66,26 @@ Nx handles dependency detection, caching, and parallel execution internally.
|
|
|
65
66
|
uses: actions/setup-node@v4
|
|
66
67
|
with:
|
|
67
68
|
node-version: '24'
|
|
68
|
-
cache: 'npm'
|
|
69
69
|
|
|
70
70
|
- name: Install Dependencies
|
|
71
|
-
run:
|
|
71
|
+
run: |
|
|
72
|
+
case "${packageManager}" in
|
|
73
|
+
pnpm)
|
|
74
|
+
corepack enable
|
|
75
|
+
pnpm install --frozen-lockfile || pnpm install
|
|
76
|
+
;;
|
|
77
|
+
yarn)
|
|
78
|
+
yarn install --frozen-lockfile || yarn install
|
|
79
|
+
;;
|
|
80
|
+
npm)
|
|
81
|
+
npm ci || npm install
|
|
82
|
+
;;
|
|
83
|
+
*)
|
|
84
|
+
npm install
|
|
85
|
+
;;
|
|
86
|
+
esac
|
|
87
|
+
env:
|
|
88
|
+
packageManager: ${packageManager}
|
|
72
89
|
${cacheStep}
|
|
73
90
|
${taskSteps}
|
|
74
91
|
`)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline-nx.yml.tpl.js","sourceRoot":"","sources":["../../../src/templates/workflows/pipeline-nx.yml.tpl.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAiB,cAAc,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAE7E,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,MAAM,CAAA;AAC/C,OAAO,EAAE,MAAM,IAAI,CAAA;AACnB,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAC9C,OAAO,EAAuB,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAA;AACpH,OAAO,EACL,sBAAsB,EACtB,yBAAyB,EACzB,6BAA6B,EAC7B,+BAA+B,EAC/B,mCAAmC,EACnC,yBAAyB,EACzB,iCAAiC,EACjC,iBAAiB,EAClB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAQ5D;;GAEG;AACH,SAAS,sBAAsB,CAAC,GAAsB;IACpD,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAA;IACtB,MAAM,QAAQ,GAAG,MAAM,CAAC,EAAG,CAAA;IAC3B,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,KAAK,KAAK,CAAA;IAElD,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK;SAC7B,GAAG,CACF,IAAI,CAAC,EAAE,CAAC,mCAAmC,IAAI;wCACb,IAAI,mCAAmC,QAAQ,CAAC,OAAO,IAAI,aAAa,MAAM,CACjH;SACA,IAAI,CAAC,IAAI,CAAC,CAAA;IAEb,MAAM,SAAS,GAAG,WAAW;QAC3B,CAAC,CAAC;;;;;;;;;;;;;CAaL;QACG,CAAC,CAAC,EAAE,CAAA;IAEN,OAAO;QACL,IAAI,EAAE,YAAY;QAClB,SAAS,EAAE,WAAW;QACtB,aAAa,EAAE;;;;;;CAMlB;QACG,KAAK,EAAE,qBAAqB,CAAC
|
|
1
|
+
{"version":3,"file":"pipeline-nx.yml.tpl.js","sourceRoot":"","sources":["../../../src/templates/workflows/pipeline-nx.yml.tpl.ts"],"names":[],"mappings":"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"}
|
|
@@ -31,7 +31,7 @@ export const generate = (ctx) => Promise.resolve(ctx)
|
|
|
31
31
|
createChangesJobOperation({
|
|
32
32
|
domains,
|
|
33
33
|
useNx: false,
|
|
34
|
-
baseRef:
|
|
34
|
+
baseRef: config.finalBranch
|
|
35
35
|
}),
|
|
36
36
|
// NO nx-ci job for path-based (that's the key difference!)
|
|
37
37
|
// Domain test jobs (preserved for user customization)
|
|
@@ -40,7 +40,7 @@ export const generate = (ctx) => Promise.resolve(ctx)
|
|
|
40
40
|
createVersionJobOperation({
|
|
41
41
|
testJobNames: testJobs,
|
|
42
42
|
nxEnabled: false,
|
|
43
|
-
baseRef:
|
|
43
|
+
baseRef: config.finalBranch
|
|
44
44
|
}),
|
|
45
45
|
// Domain deploy jobs (preserved for user customization)
|
|
46
46
|
...createDomainDeployJobOperations({ domains }),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.yml.tpl.js","sourceRoot":"","sources":["../../../src/templates/workflows/pipeline.yml.tpl.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAiB,cAAc,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAE7E,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,MAAM,CAAA;AAC/C,OAAO,EAAE,MAAM,IAAI,CAAA;AACnB,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAC9C,OAAO,EAAuB,mBAAmB,EAAE,MAAM,oCAAoC,CAAA;AAC7F,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EACL,sBAAsB,EACtB,yBAAyB,EACzB,6BAA6B,EAC7B,+BAA+B,EAC/B,mCAAmC,EACnC,yBAAyB,EACzB,iCAAiC,EACjC,iBAAiB,EAClB,MAAM,mBAAmB,CAAA;AAS1B;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,GAA6B,EAAE,EAAE,CACxD,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC;KACjB,IAAI,CAAC,GAAG,CAAC,EAAE;IACV,MAAM,QAAQ,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,iCAAiC,CAAA;IAC7E,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,GAAG,CAAA;IAClC,MAAM,OAAO,GAAG,MAAM,EAAE,OAAO,IAAI,EAAE,CAAA;IAErC,iDAAiD;IACjD,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAE,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAA;IAE3E,yBAAyB;IACzB,MAAM,UAAU,GAA0B;QACxC,uCAAuC;QACvC,GAAG,sBAAsB,CAAC,EAAE,UAAU,EAAE,CAAC;QAEzC,iCAAiC;QACjC,yBAAyB,CAAC;YACxB,OAAO;YACP,KAAK,EAAE,KAAK;YACZ,OAAO,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"pipeline.yml.tpl.js","sourceRoot":"","sources":["../../../src/templates/workflows/pipeline.yml.tpl.ts"],"names":[],"mappings":"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"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -166,6 +166,17 @@ export interface PipecraftConfig {
|
|
|
166
166
|
* test and deployment requirements.
|
|
167
167
|
*/
|
|
168
168
|
domains: Record<string, DomainConfig>;
|
|
169
|
+
/**
|
|
170
|
+
* Package manager used for dependency installation.
|
|
171
|
+
* Auto-detected during init based on lockfile presence.
|
|
172
|
+
*
|
|
173
|
+
* - 'npm': Uses npm (with package-lock.json)
|
|
174
|
+
* - 'yarn': Uses yarn (with yarn.lock)
|
|
175
|
+
* - 'pnpm': Uses pnpm (with pnpm-lock.yaml)
|
|
176
|
+
*
|
|
177
|
+
* @default 'npm'
|
|
178
|
+
*/
|
|
179
|
+
packageManager?: 'npm' | 'yarn' | 'pnpm';
|
|
169
180
|
/**
|
|
170
181
|
* Nx monorepo integration configuration.
|
|
171
182
|
* When enabled, PipeCraft generates workflows that leverage Nx's dependency graph
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pipecraft",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.29.0",
|
|
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",
|
|
@@ -68,6 +68,7 @@
|
|
|
68
68
|
"@eslint/eslintrc": "^3.3.1",
|
|
69
69
|
"@eslint/js": "^9.24.0",
|
|
70
70
|
"@release-it/conventional-changelog": "^10.0.0",
|
|
71
|
+
"@types/inquirer": "^9.0.9",
|
|
71
72
|
"@typescript-eslint/eslint-plugin": "^8.30.1",
|
|
72
73
|
"@typescript-eslint/parser": "^8.30.1",
|
|
73
74
|
"@vitest/coverage-c8": "^0.33.0",
|
|
@@ -82,6 +83,7 @@
|
|
|
82
83
|
"eslint-plugin-react": "^7.37.5",
|
|
83
84
|
"eslint-plugin-react-hooks": "^5.2.0",
|
|
84
85
|
"globals": "^16.0.0",
|
|
86
|
+
"inquirer": "^12.10.0",
|
|
85
87
|
"prettier": "^2.8.8",
|
|
86
88
|
"release-it": "^18.1.2",
|
|
87
89
|
"typedoc": "^0.28.14",
|
|
@@ -28,8 +28,9 @@
|
|
|
28
28
|
* respect user input and allow customization.
|
|
29
29
|
*/
|
|
30
30
|
|
|
31
|
-
import { PinionContext, toFile, renderTemplate,
|
|
31
|
+
import { PinionContext, toFile, renderTemplate, writeJSON } from '@featherscloud/pinion'
|
|
32
32
|
import { existsSync, readFileSync } from 'fs'
|
|
33
|
+
import inquirer from 'inquirer'
|
|
33
34
|
import { IdempotencyManager } from '../utils/idempotency.js'
|
|
34
35
|
import { VersionManager } from '../utils/versioning.js'
|
|
35
36
|
import { PipecraftConfig } from '../types/index.js'
|
|
@@ -161,126 +162,147 @@ const configTemplate = (ctx: PipecraftConfig) => {
|
|
|
161
162
|
* - Production branch name
|
|
162
163
|
* - Branch flow sequence
|
|
163
164
|
*/
|
|
164
|
-
export const generate = (ctx: PinionContext) =>
|
|
165
|
-
|
|
166
|
-
.then(prompt([
|
|
167
|
-
{
|
|
168
|
-
type: 'input',
|
|
169
|
-
name: 'projectName',
|
|
170
|
-
message: 'What is your project name?',
|
|
171
|
-
default: 'my-project'
|
|
172
|
-
},
|
|
173
|
-
{
|
|
174
|
-
type: 'list',
|
|
175
|
-
name: 'ciProvider',
|
|
176
|
-
message: 'Which CI provider are you using?',
|
|
177
|
-
choices: [
|
|
178
|
-
{ name: 'GitHub Actions', value: 'github' },
|
|
179
|
-
{ name: 'GitLab CI/CD', value: 'gitlab' }
|
|
180
|
-
],
|
|
181
|
-
default: 'github'
|
|
182
|
-
},
|
|
183
|
-
{
|
|
184
|
-
type: 'list',
|
|
185
|
-
name: 'mergeStrategy',
|
|
186
|
-
message: 'What merge strategy do you prefer?',
|
|
187
|
-
choices: [
|
|
188
|
-
{ name: 'Fast-forward only (recommended)', value: 'fast-forward' },
|
|
189
|
-
{ name: 'Merge commits', value: 'merge' }
|
|
190
|
-
],
|
|
191
|
-
default: 'fast-forward'
|
|
192
|
-
},
|
|
193
|
-
{
|
|
194
|
-
type: 'confirm',
|
|
195
|
-
name: 'requireConventionalCommits',
|
|
196
|
-
message: 'Require conventional commit format for PR titles?',
|
|
197
|
-
default: true
|
|
198
|
-
},
|
|
199
|
-
{
|
|
200
|
-
type: 'input',
|
|
201
|
-
name: 'initialBranch',
|
|
202
|
-
message: 'What is your development branch name?',
|
|
203
|
-
default: 'develop'
|
|
204
|
-
},
|
|
205
|
-
{
|
|
206
|
-
type: 'input',
|
|
207
|
-
name: 'finalBranch',
|
|
208
|
-
message: 'What is your production branch name?',
|
|
209
|
-
default: 'main'
|
|
210
|
-
},
|
|
211
|
-
{
|
|
212
|
-
type: 'input',
|
|
213
|
-
name: 'branchFlow',
|
|
214
|
-
message: 'Enter your branch flow (comma-separated)',
|
|
215
|
-
default: 'develop,staging,main',
|
|
216
|
-
filter: (input: string) => input.split(',').map(b => b.trim())
|
|
217
|
-
}
|
|
218
|
-
]))
|
|
219
|
-
.then((ctx) => {
|
|
220
|
-
const mergedCtx = { ...ctx, ...defaultConfig } as any
|
|
165
|
+
export const generate = async (ctx: PinionContext) => {
|
|
166
|
+
const cwd = ctx.cwd || process.cwd()
|
|
221
167
|
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
168
|
+
// Detect package manager before prompting
|
|
169
|
+
let detectedPackageManager: 'npm' | 'yarn' | 'pnpm' = 'npm'
|
|
170
|
+
if (existsSync(`${cwd}/pnpm-lock.yaml`)) {
|
|
171
|
+
detectedPackageManager = 'pnpm'
|
|
172
|
+
} else if (existsSync(`${cwd}/yarn.lock`)) {
|
|
173
|
+
detectedPackageManager = 'yarn'
|
|
174
|
+
} else if (existsSync(`${cwd}/package-lock.json`)) {
|
|
175
|
+
detectedPackageManager = 'npm'
|
|
176
|
+
}
|
|
225
177
|
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
178
|
+
// Run inquirer prompts
|
|
179
|
+
const answers = await inquirer.prompt([
|
|
180
|
+
{
|
|
181
|
+
type: 'input',
|
|
182
|
+
name: 'projectName',
|
|
183
|
+
message: 'What is your project name?',
|
|
184
|
+
default: 'my-project'
|
|
185
|
+
},
|
|
186
|
+
{
|
|
187
|
+
type: 'list',
|
|
188
|
+
name: 'ciProvider',
|
|
189
|
+
message: 'Which CI provider are you using?',
|
|
190
|
+
choices: [
|
|
191
|
+
{ name: 'GitHub Actions', value: 'github' },
|
|
192
|
+
{ name: 'GitLab CI/CD', value: 'gitlab' }
|
|
193
|
+
],
|
|
194
|
+
default: 'github'
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
type: 'list',
|
|
198
|
+
name: 'mergeStrategy',
|
|
199
|
+
message: 'What merge strategy do you prefer?',
|
|
200
|
+
choices: [
|
|
201
|
+
{ name: 'Fast-forward only (recommended)', value: 'fast-forward' },
|
|
202
|
+
{ name: 'Merge commits', value: 'merge' }
|
|
203
|
+
],
|
|
204
|
+
default: 'fast-forward'
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
type: 'confirm',
|
|
208
|
+
name: 'requireConventionalCommits',
|
|
209
|
+
message: 'Require conventional commit format for PR titles?',
|
|
210
|
+
default: true
|
|
211
|
+
},
|
|
212
|
+
{
|
|
213
|
+
type: 'input',
|
|
214
|
+
name: 'initialBranch',
|
|
215
|
+
message: 'What is your development branch name?',
|
|
216
|
+
default: 'develop'
|
|
217
|
+
},
|
|
218
|
+
{
|
|
219
|
+
type: 'input',
|
|
220
|
+
name: 'finalBranch',
|
|
221
|
+
message: 'What is your production branch name?',
|
|
222
|
+
default: 'main'
|
|
223
|
+
},
|
|
224
|
+
{
|
|
225
|
+
type: 'input',
|
|
226
|
+
name: 'branchFlow',
|
|
227
|
+
message: 'Enter your branch flow (comma-separated)',
|
|
228
|
+
default: 'develop,staging,main',
|
|
229
|
+
filter: (input: string) => input.split(',').map(b => b.trim())
|
|
230
|
+
},
|
|
231
|
+
{
|
|
232
|
+
type: 'list',
|
|
233
|
+
name: 'packageManager',
|
|
234
|
+
message: `Which package manager do you use? (detected: ${detectedPackageManager})`,
|
|
235
|
+
choices: ['npm', 'yarn', 'pnpm'],
|
|
236
|
+
default: detectedPackageManager
|
|
237
|
+
}
|
|
238
|
+
])
|
|
230
239
|
|
|
231
|
-
|
|
232
|
-
|
|
240
|
+
// Merge answers with context and defaults
|
|
241
|
+
const mergedCtx = { ...ctx, ...defaultConfig, ...answers } as any
|
|
233
242
|
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
const aIdx = taskOrder.indexOf(a)
|
|
238
|
-
const bIdx = taskOrder.indexOf(b)
|
|
239
|
-
if (aIdx === -1 && bIdx === -1) return 0
|
|
240
|
-
if (aIdx === -1) return 1
|
|
241
|
-
if (bIdx === -1) return -1
|
|
242
|
-
return aIdx - bIdx
|
|
243
|
-
})
|
|
243
|
+
// Detect Nx workspace
|
|
244
|
+
const nxJsonPath = `${cwd}/nx.json`
|
|
245
|
+
let nxConfig = undefined
|
|
244
246
|
|
|
245
|
-
|
|
246
|
-
|
|
247
|
+
if (existsSync(nxJsonPath)) {
|
|
248
|
+
try {
|
|
249
|
+
const nxJsonContent = readFileSync(nxJsonPath, 'utf8')
|
|
250
|
+
const nxJson = JSON.parse(nxJsonContent)
|
|
247
251
|
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
tasks: sortedTasks,
|
|
251
|
-
baseRef: 'origin/main',
|
|
252
|
-
enableCache: true
|
|
253
|
-
}
|
|
254
|
-
} catch (error) {
|
|
255
|
-
console.warn('⚠️ Found nx.json but could not parse it:', error)
|
|
256
|
-
console.log(' Using default Nx configuration')
|
|
257
|
-
nxConfig = {
|
|
258
|
-
enabled: true,
|
|
259
|
-
tasks: ['lint', 'test', 'build', 'integration-test'],
|
|
260
|
-
baseRef: 'origin/main',
|
|
261
|
-
enableCache: true
|
|
262
|
-
}
|
|
263
|
-
}
|
|
264
|
-
}
|
|
252
|
+
// Extract tasks from targetDefaults
|
|
253
|
+
const tasks = nxJson.targetDefaults ? Object.keys(nxJson.targetDefaults) : []
|
|
265
254
|
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
}
|
|
255
|
+
// Sort tasks in a logical order (quality → test → build → e2e)
|
|
256
|
+
const taskOrder = ['lint', 'typecheck', 'test', 'unit-test', 'build', 'integration-test', 'e2e', 'e2e-ci']
|
|
257
|
+
const sortedTasks = tasks.sort((a, b) => {
|
|
258
|
+
const aIdx = taskOrder.indexOf(a)
|
|
259
|
+
const bIdx = taskOrder.indexOf(b)
|
|
260
|
+
if (aIdx === -1 && bIdx === -1) return 0
|
|
261
|
+
if (aIdx === -1) return 1
|
|
262
|
+
if (bIdx === -1) return -1
|
|
263
|
+
return aIdx - bIdx
|
|
264
|
+
})
|
|
265
|
+
|
|
266
|
+
console.log('✅ Nx workspace detected - enabling Nx integration')
|
|
267
|
+
console.log(` Detected tasks: ${sortedTasks.join(', ')}`)
|
|
279
268
|
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
269
|
+
nxConfig = {
|
|
270
|
+
enabled: true,
|
|
271
|
+
tasks: sortedTasks,
|
|
272
|
+
baseRef: 'origin/main',
|
|
273
|
+
enableCache: true
|
|
274
|
+
}
|
|
275
|
+
} catch (error) {
|
|
276
|
+
console.warn('⚠️ Found nx.json but could not parse it:', error)
|
|
277
|
+
console.log(' Using default Nx configuration')
|
|
278
|
+
nxConfig = {
|
|
279
|
+
enabled: true,
|
|
280
|
+
tasks: ['lint', 'test', 'build', 'integration-test'],
|
|
281
|
+
baseRef: 'origin/main',
|
|
282
|
+
enableCache: true
|
|
283
283
|
}
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
const configData: any = {
|
|
288
|
+
ciProvider: mergedCtx.ciProvider,
|
|
289
|
+
mergeStrategy: mergedCtx.mergeStrategy,
|
|
290
|
+
requireConventionalCommits: mergedCtx.requireConventionalCommits,
|
|
291
|
+
initialBranch: mergedCtx.initialBranch,
|
|
292
|
+
finalBranch: mergedCtx.finalBranch,
|
|
293
|
+
branchFlow: mergedCtx.branchFlow,
|
|
294
|
+
autoMerge: mergedCtx.autoMerge,
|
|
295
|
+
packageManager: mergedCtx.packageManager,
|
|
296
|
+
semver: {
|
|
297
|
+
bumpRules: mergedCtx.semver.bumpRules
|
|
298
|
+
},
|
|
299
|
+
domains: mergedCtx.domains
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
// Add Nx config if detected
|
|
303
|
+
if (nxConfig) {
|
|
304
|
+
configData.nx = nxConfig
|
|
305
|
+
}
|
|
284
306
|
|
|
285
|
-
|
|
286
|
-
|
|
307
|
+
return writeJSON(() => configData, toFile('.pipecraftrc.json'))(mergedCtx)
|
|
308
|
+
}
|
|
@@ -51,6 +51,7 @@ import { logger } from '../utils/logger.js'
|
|
|
51
51
|
// Import individual workflow templates
|
|
52
52
|
import { generate as generateTagWorkflow } from '../templates/actions/create-tag.yml.tpl.js'
|
|
53
53
|
import { generate as generateChangesWorkflow } from '../templates/actions/detect-changes.yml.tpl.js'
|
|
54
|
+
import { generate as generateChangesNxWorkflow } from '../templates/actions/detect-changes-nx.yml.tpl.js'
|
|
54
55
|
import { generate as generateVersionWorkflow } from '../templates/actions/calculate-version.yml.tpl.js'
|
|
55
56
|
import { generate as generateCreatePRWorkflow } from '../templates/actions/create-pr.yml.tpl.js'
|
|
56
57
|
import { generate as generateBranchWorkflow } from '../templates/actions/manage-branch.yml.tpl.js'
|
|
@@ -159,7 +160,7 @@ export const generate = (ctx: PinionContext & { pipelinePath?: string, outputPip
|
|
|
159
160
|
})
|
|
160
161
|
.then((ctx) => {
|
|
161
162
|
// Generate individual GitHub Actions and release-it config
|
|
162
|
-
|
|
163
|
+
const generators = [
|
|
163
164
|
generateChangesWorkflow(ctx),
|
|
164
165
|
generateTagWorkflow(ctx),
|
|
165
166
|
generateVersionWorkflow(ctx),
|
|
@@ -168,7 +169,14 @@ export const generate = (ctx: PinionContext & { pipelinePath?: string, outputPip
|
|
|
168
169
|
generatePromoteBranchWorkflow(ctx),
|
|
169
170
|
generateReleaseWorkflow(ctx),
|
|
170
171
|
generateReleaseItConfig(ctx)
|
|
171
|
-
]
|
|
172
|
+
]
|
|
173
|
+
|
|
174
|
+
// Add Nx-specific action if Nx is enabled
|
|
175
|
+
if (ctx.config?.nx?.enabled) {
|
|
176
|
+
generators.push(generateChangesNxWorkflow(ctx))
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
return Promise.all(generators).then(() => ctx)
|
|
172
180
|
})
|
|
173
181
|
.then((ctx) => {
|
|
174
182
|
// Generate the main pipeline (Nx or path-based)
|