pipecraft 0.29.2 → 0.36.2

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.
Files changed (136) hide show
  1. package/README.md +98 -34
  2. package/dist/cli/index.d.ts +3 -3
  3. package/dist/cli/index.js +66 -24
  4. package/dist/cli/index.js.map +1 -1
  5. package/dist/generators/init.tpl.d.ts +4 -4
  6. package/dist/generators/init.tpl.d.ts.map +1 -1
  7. package/dist/generators/init.tpl.js +369 -79
  8. package/dist/generators/init.tpl.js.map +1 -1
  9. package/dist/generators/workflows.tpl.d.ts +9 -9
  10. package/dist/generators/workflows.tpl.d.ts.map +1 -1
  11. package/dist/generators/workflows.tpl.js +33 -24
  12. package/dist/generators/workflows.tpl.js.map +1 -1
  13. package/dist/templates/actions/calculate-version.yml.tpl.d.ts +7 -4
  14. package/dist/templates/actions/calculate-version.yml.tpl.d.ts.map +1 -1
  15. package/dist/templates/actions/calculate-version.yml.tpl.js +16 -9
  16. package/dist/templates/actions/calculate-version.yml.tpl.js.map +1 -1
  17. package/dist/templates/actions/create-pr.yml.tpl.d.ts +5 -2
  18. package/dist/templates/actions/create-pr.yml.tpl.d.ts.map +1 -1
  19. package/dist/templates/actions/create-pr.yml.tpl.js +9 -6
  20. package/dist/templates/actions/create-pr.yml.tpl.js.map +1 -1
  21. package/dist/templates/actions/create-release.yml.tpl.d.ts +5 -2
  22. package/dist/templates/actions/create-release.yml.tpl.d.ts.map +1 -1
  23. package/dist/templates/actions/create-release.yml.tpl.js +9 -6
  24. package/dist/templates/actions/create-release.yml.tpl.js.map +1 -1
  25. package/dist/templates/actions/create-tag.yml.tpl.d.ts +5 -2
  26. package/dist/templates/actions/create-tag.yml.tpl.d.ts.map +1 -1
  27. package/dist/templates/actions/create-tag.yml.tpl.js +9 -6
  28. package/dist/templates/actions/create-tag.yml.tpl.js.map +1 -1
  29. package/dist/templates/actions/detect-changes.yml.tpl.d.ts +24 -52
  30. package/dist/templates/actions/detect-changes.yml.tpl.d.ts.map +1 -1
  31. package/dist/templates/actions/detect-changes.yml.tpl.js +281 -108
  32. package/dist/templates/actions/detect-changes.yml.tpl.js.map +1 -1
  33. package/dist/templates/actions/manage-branch.yml.tpl.d.ts +5 -2
  34. package/dist/templates/actions/manage-branch.yml.tpl.d.ts.map +1 -1
  35. package/dist/templates/actions/manage-branch.yml.tpl.js +9 -6
  36. package/dist/templates/actions/manage-branch.yml.tpl.js.map +1 -1
  37. package/dist/templates/actions/promote-branch.yml.tpl.d.ts +5 -2
  38. package/dist/templates/actions/promote-branch.yml.tpl.d.ts.map +1 -1
  39. package/dist/templates/actions/promote-branch.yml.tpl.js +27 -76
  40. package/dist/templates/actions/promote-branch.yml.tpl.js.map +1 -1
  41. package/dist/templates/actions/run-nx-affected.yml.tpl.d.ts +33 -0
  42. package/dist/templates/actions/run-nx-affected.yml.tpl.d.ts.map +1 -0
  43. package/dist/templates/actions/run-nx-affected.yml.tpl.js +346 -0
  44. package/dist/templates/actions/run-nx-affected.yml.tpl.js.map +1 -0
  45. package/dist/templates/release-it.cjs.tpl.d.ts +1 -1
  46. package/dist/templates/release-it.cjs.tpl.d.ts.map +1 -1
  47. package/dist/templates/release-it.cjs.tpl.js +24 -26
  48. package/dist/templates/release-it.cjs.tpl.js.map +1 -1
  49. package/dist/templates/workflows/enforce-pr-target.yml.tpl.d.ts +1 -1
  50. package/dist/templates/workflows/enforce-pr-target.yml.tpl.d.ts.map +1 -1
  51. package/dist/templates/workflows/enforce-pr-target.yml.tpl.js +2 -3
  52. package/dist/templates/workflows/enforce-pr-target.yml.tpl.js.map +1 -1
  53. package/dist/templates/workflows/pipeline-nx.yml.tpl.d.ts +2 -2
  54. package/dist/templates/workflows/pipeline-nx.yml.tpl.d.ts.map +1 -1
  55. package/dist/templates/workflows/pipeline-nx.yml.tpl.js +300 -93
  56. package/dist/templates/workflows/pipeline-nx.yml.tpl.js.map +1 -1
  57. package/dist/templates/workflows/pipeline.yml.tpl.d.ts +2 -2
  58. package/dist/templates/workflows/pipeline.yml.tpl.d.ts.map +1 -1
  59. package/dist/templates/workflows/pipeline.yml.tpl.js +347 -74
  60. package/dist/templates/workflows/pipeline.yml.tpl.js.map +1 -1
  61. package/dist/templates/workflows/pr-title-check.yml.tpl.d.ts +1 -1
  62. package/dist/templates/workflows/pr-title-check.yml.tpl.d.ts.map +1 -1
  63. package/dist/templates/workflows/pr-title-check.yml.tpl.js +101 -22
  64. package/dist/templates/workflows/pr-title-check.yml.tpl.js.map +1 -1
  65. package/dist/templates/workflows/shared/index.d.ts +3 -2
  66. package/dist/templates/workflows/shared/index.d.ts.map +1 -1
  67. package/dist/templates/workflows/shared/index.js +3 -2
  68. package/dist/templates/workflows/shared/index.js.map +1 -1
  69. package/dist/templates/workflows/shared/operations-changes.d.ts +13 -2
  70. package/dist/templates/workflows/shared/operations-changes.d.ts.map +1 -1
  71. package/dist/templates/workflows/shared/operations-changes.js +47 -16
  72. package/dist/templates/workflows/shared/operations-changes.js.map +1 -1
  73. package/dist/templates/workflows/shared/operations-domain-jobs.d.ts +18 -1
  74. package/dist/templates/workflows/shared/operations-domain-jobs.d.ts.map +1 -1
  75. package/dist/templates/workflows/shared/operations-domain-jobs.js +143 -19
  76. package/dist/templates/workflows/shared/operations-domain-jobs.js.map +1 -1
  77. package/dist/templates/workflows/shared/operations-gate.d.ts +32 -0
  78. package/dist/templates/workflows/shared/operations-gate.d.ts.map +1 -0
  79. package/dist/templates/workflows/shared/operations-gate.js +77 -0
  80. package/dist/templates/workflows/shared/operations-gate.js.map +1 -0
  81. package/dist/templates/workflows/shared/operations-header.d.ts +1 -1
  82. package/dist/templates/workflows/shared/operations-header.d.ts.map +1 -1
  83. package/dist/templates/workflows/shared/operations-header.js +46 -6
  84. package/dist/templates/workflows/shared/operations-header.js.map +1 -1
  85. package/dist/templates/workflows/shared/operations-tag-promote.d.ts +5 -1
  86. package/dist/templates/workflows/shared/operations-tag-promote.d.ts.map +1 -1
  87. package/dist/templates/workflows/shared/operations-tag-promote.js +138 -31
  88. package/dist/templates/workflows/shared/operations-tag-promote.js.map +1 -1
  89. package/dist/templates/workflows/shared/operations-version.d.ts +3 -1
  90. package/dist/templates/workflows/shared/operations-version.d.ts.map +1 -1
  91. package/dist/templates/workflows/shared/operations-version.js +18 -10
  92. package/dist/templates/workflows/shared/operations-version.js.map +1 -1
  93. package/dist/templates/yaml-format-utils.d.ts.map +1 -1
  94. package/dist/templates/yaml-format-utils.js.map +1 -1
  95. package/dist/types/index.d.ts +57 -4
  96. package/dist/types/index.d.ts.map +1 -1
  97. package/dist/utils/action-reference.d.ts +73 -0
  98. package/dist/utils/action-reference.d.ts.map +1 -0
  99. package/dist/utils/action-reference.js +120 -0
  100. package/dist/utils/action-reference.js.map +1 -0
  101. package/dist/utils/ast-path-operations.d.ts +3 -3
  102. package/dist/utils/ast-path-operations.d.ts.map +1 -1
  103. package/dist/utils/ast-path-operations.js +58 -17
  104. package/dist/utils/ast-path-operations.js.map +1 -1
  105. package/dist/utils/config.d.ts +11 -5
  106. package/dist/utils/config.d.ts.map +1 -1
  107. package/dist/utils/config.js +33 -8
  108. package/dist/utils/config.js.map +1 -1
  109. package/dist/utils/github-setup.d.ts +4 -4
  110. package/dist/utils/github-setup.d.ts.map +1 -1
  111. package/dist/utils/github-setup.js +57 -36
  112. package/dist/utils/github-setup.js.map +1 -1
  113. package/dist/utils/logger.d.ts.map +1 -1
  114. package/dist/utils/logger.js.map +1 -1
  115. package/dist/utils/messaging.d.ts.map +1 -1
  116. package/dist/utils/messaging.js +7 -3
  117. package/dist/utils/messaging.js.map +1 -1
  118. package/dist/utils/preflight.d.ts +2 -2
  119. package/dist/utils/preflight.d.ts.map +1 -1
  120. package/dist/utils/preflight.js +43 -41
  121. package/dist/utils/preflight.js.map +1 -1
  122. package/dist/utils/versioning.d.ts +1 -1
  123. package/dist/utils/versioning.d.ts.map +1 -1
  124. package/dist/utils/versioning.js +10 -10
  125. package/dist/utils/versioning.js.map +1 -1
  126. package/package.json +11 -4
  127. package/src/generators/init.tpl.ts +434 -96
  128. package/src/generators/workflows.tpl.ts +54 -45
  129. package/dist/templates/actions/detect-changes-nx.yml.tpl.d.ts +0 -32
  130. package/dist/templates/actions/detect-changes-nx.yml.tpl.d.ts.map +0 -1
  131. package/dist/templates/actions/detect-changes-nx.yml.tpl.js +0 -227
  132. package/dist/templates/actions/detect-changes-nx.yml.tpl.js.map +0 -1
  133. package/dist/utils/idempotency.d.ts +0 -187
  134. package/dist/utils/idempotency.d.ts.map +0 -1
  135. package/dist/utils/idempotency.js +0 -304
  136. package/dist/utils/idempotency.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"operations-domain-jobs.js","sourceRoot":"","sources":["../../../../src/templates/workflows/shared/operations-domain-jobs.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAuB,qBAAqB,EAAE,MAAM,uCAAuC,CAAA;AAMlG;;GAEG;AACH,MAAM,UAAU,6BAA6B,CAAC,GAAsB;IAClE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,CAAA;IACvB,MAAM,UAAU,GAA0B,EAAE,CAAA;IAE5C,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,KAAK,CAAC,CAAA;IAE9F,eAAe,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;QACxC,UAAU,CAAC,IAAI,CAAC;YACd,IAAI,EAAE,aAAa,MAAM,EAAE;YAC3B,SAAS,EAAE,UAAU,EAAE,+BAA+B;YACtD,yCAAyC;YACzC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI;gBACjB,aAAa,EAAE;;;;;;CAMtB;aACM,CAAC;YACF,KAAK,EAAE,qBAAqB,CAAC;;qCAEE,MAAM;;;;;;kCAMT,MAAM;oBACpB,MAAM;;oCAEU,MAAM;;qDAEW,MAAM;GACxD,CAAC;SACC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,OAAO,UAAU,CAAA;AACnB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,+BAA+B,CAAC,GAAsB;IACpE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,CAAA;IACvB,MAAM,UAAU,GAA0B,EAAE,CAAA;IAE5C,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,CAAA;IAEjG,iBAAiB,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;QAC1C,UAAU,CAAC,IAAI,CAAC;YACd,IAAI,EAAE,eAAe,MAAM,EAAE;YAC7B,SAAS,EAAE,UAAU,EAAE,+BAA+B;YACtD,2CAA2C;YAC3C,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI;gBACjB,aAAa,EAAE;;;;;;CAMtB;aACM,CAAC;YACF,KAAK,EAAE,qBAAqB,CAAC;;sFAEmD,MAAM;;;;;;kCAM1D,MAAM;uBACjB,MAAM;;4BAED,MAAM;;sCAEI,MAAM;GACzC,CAAC;SACC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,OAAO,UAAU,CAAA;AACnB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mCAAmC,CAAC,GAAsB;IACxE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,CAAA;IACvB,MAAM,UAAU,GAA0B,EAAE,CAAA;IAE5C,MAAM,qBAAqB,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,cAAc,KAAK,IAAI,CAAC,CAAA;IAEzG,qBAAqB,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;QAC9C,UAAU,CAAC,IAAI,CAAC;YACd,IAAI,EAAE,oBAAoB,MAAM,EAAE;YAClC,SAAS,EAAE,UAAU,EAAE,+BAA+B;YACtD,gDAAgD;YAChD,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI;gBACjB,aAAa,EAAE;;;;;;CAMtB;aACM,CAAC;YACF,KAAK,EAAE,qBAAqB,CAAC;sBACb,MAAM;;;;;;;kCAOM,MAAM;qBACnB,MAAM;yCACc,MAAM,8BAA8B,MAAM;;0BAEzD,MAAM;;2CAEW,MAAM;GAC9C,CAAC;SACC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,OAAO,UAAU,CAAA;AACnB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAA4B;IAK5D,OAAO;QACL,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;QACtG,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3G,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,cAAc,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC;KACzH,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"operations-domain-jobs.js","sourceRoot":"","sources":["../../../../src/templates/workflows/shared/operations-domain-jobs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Gate Job Operation
3
+ *
4
+ * Creates a gate job that enforces "at least one success AND no failures" pattern
5
+ * for all test jobs. This provides a single point of control for gating downstream
6
+ * jobs like tag, promote, and deploy.
7
+ */
8
+ import { type PathOperationConfig } from '../../../utils/ast-path-operations.js';
9
+ export interface GateJobContext {
10
+ testJobNames: string[];
11
+ deployJobNames?: string[];
12
+ /**
13
+ * All jobs by prefix (from getDomainJobNames)
14
+ * Allows gating on any custom prefix jobs (e.g., lint, build, etc.)
15
+ */
16
+ allJobsByPrefix?: Record<string, string[]>;
17
+ }
18
+ /**
19
+ * Create a gate job operation that runs after all test jobs
20
+ *
21
+ * The gate job:
22
+ * - Runs on ALL events (PRs, push to any branch)
23
+ * - Depends on all test jobs
24
+ * - Uses "at least one success AND no failures" pattern
25
+ * - Provides a single gate point for downstream jobs (tag, deploy, etc.)
26
+ * - Always runs (even if tests are skipped) using always()
27
+ *
28
+ * @param ctx - Context containing test job names
29
+ * @returns Path operation config for the gate job
30
+ */
31
+ export declare function createGateJobOperation(ctx: GateJobContext): PathOperationConfig;
32
+ //# sourceMappingURL=operations-gate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operations-gate.d.ts","sourceRoot":"","sources":["../../../../src/templates/workflows/shared/operations-gate.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAEL,KAAK,mBAAmB,EACzB,MAAM,uCAAuC,CAAA;AAE9C,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;IACzB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;CAC3C;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,cAAc,GAAG,mBAAmB,CA2D/E"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * Gate Job Operation
3
+ *
4
+ * Creates a gate job that enforces "at least one success AND no failures" pattern
5
+ * for all test jobs. This provides a single point of control for gating downstream
6
+ * jobs like tag, promote, and deploy.
7
+ */
8
+ import { createValueFromString } from '../../../utils/ast-path-operations.js';
9
+ /**
10
+ * Create a gate job operation that runs after all test jobs
11
+ *
12
+ * The gate job:
13
+ * - Runs on ALL events (PRs, push to any branch)
14
+ * - Depends on all test jobs
15
+ * - Uses "at least one success AND no failures" pattern
16
+ * - Provides a single gate point for downstream jobs (tag, deploy, etc.)
17
+ * - Always runs (even if tests are skipped) using always()
18
+ *
19
+ * @param ctx - Context containing test job names
20
+ * @returns Path operation config for the gate job
21
+ */
22
+ export function createGateJobOperation(ctx) {
23
+ const { testJobNames, deployJobNames = [], allJobsByPrefix = {} } = ctx;
24
+ // Collect all jobs from all prefixes
25
+ const allPrefixJobs = Object.values(allJobsByPrefix).flat();
26
+ // Combine test jobs, deploy jobs, and all prefix-based jobs
27
+ // Use Set to deduplicate (test/deploy jobs might also be in allJobsByPrefix)
28
+ const allGateJobs = Array.from(new Set([...testJobNames, ...deployJobNames, ...allPrefixJobs]));
29
+ if (allGateJobs.length === 0) {
30
+ // No jobs to gate - return a minimal gate that always succeeds
31
+ return {
32
+ path: 'jobs.gate',
33
+ operation: 'overwrite',
34
+ spaceBefore: true,
35
+ commentBefore: `
36
+ =============================================================================
37
+ GATE (⚠️ Managed by Pipecraft - do not modify)
38
+ =============================================================================
39
+ Gate job that ensures tests pass before allowing tag/promote/deploy.
40
+ Uses pattern: at least ONE success AND NO failures (skipped is OK).
41
+ `,
42
+ value: createValueFromString(`
43
+ needs: [ version ]
44
+ if: \${{ always() && needs.version.result == 'success' }}
45
+ runs-on: ubuntu-latest
46
+ steps:
47
+ - name: Gate passed
48
+ run: echo "No test jobs configured - gate passes"
49
+ `)
50
+ };
51
+ }
52
+ // Build the "at least one success AND no failures" condition
53
+ const noFailures = allGateJobs.map(job => `needs.${job}.result != 'failure'`).join(' && ');
54
+ const atLeastOneSuccess = allGateJobs.map(job => `needs.${job}.result == 'success'`).join(' || ');
55
+ const gateCondition = `always() && needs.version.result == 'success' && (${noFailures}) && (${atLeastOneSuccess})`;
56
+ return {
57
+ path: 'jobs.gate',
58
+ operation: 'overwrite',
59
+ spaceBefore: true,
60
+ commentBefore: `
61
+ =============================================================================
62
+ GATE (⚠️ Managed by Pipecraft - do not modify)
63
+ =============================================================================
64
+ Gate job that ensures tests pass before allowing tag/promote/deploy.
65
+ Uses pattern: at least ONE success AND NO failures (skipped is OK).
66
+ `,
67
+ value: createValueFromString(`
68
+ needs: [ version, ${allGateJobs.join(', ')} ]
69
+ if: \${{ ${gateCondition} }}
70
+ runs-on: ubuntu-latest
71
+ steps:
72
+ - name: Gate passed
73
+ run: echo "All tests passed - gate allows progression"
74
+ `)
75
+ };
76
+ }
77
+ //# sourceMappingURL=operations-gate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operations-gate.js","sourceRoot":"","sources":["../../../../src/templates/workflows/shared/operations-gate.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,qBAAqB,EAEtB,MAAM,uCAAuC,CAAA;AAY9C;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,sBAAsB,CAAC,GAAmB;IACxD,MAAM,EAAE,YAAY,EAAE,cAAc,GAAG,EAAE,EAAE,eAAe,GAAG,EAAE,EAAE,GAAG,GAAG,CAAA;IAEvE,qCAAqC;IACrC,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,CAAA;IAE3D,4DAA4D;IAC5D,6EAA6E;IAC7E,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,YAAY,EAAE,GAAG,cAAc,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC,CAAA;IAE/F,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,+DAA+D;QAC/D,OAAO;YACL,IAAI,EAAE,WAAW;YACjB,SAAS,EAAE,WAAW;YACtB,WAAW,EAAE,IAAI;YACjB,aAAa,EAAE;;;;;;CAMpB;YACK,KAAK,EAAE,qBAAqB,CAAC;;;;;;;GAOhC,CAAC;SACC,CAAA;IACH,CAAC;IAED,6DAA6D;IAC7D,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,GAAG,sBAAsB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAC1F,MAAM,iBAAiB,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,GAAG,sBAAsB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACjG,MAAM,aAAa,GAAG,qDAAqD,UAAU,SAAS,iBAAiB,GAAG,CAAA;IAElH,OAAO;QACL,IAAI,EAAE,WAAW;QACjB,SAAS,EAAE,WAAW;QACtB,WAAW,EAAE,IAAI;QACjB,aAAa,EAAE;;;;;;CAMlB;QACG,KAAK,EAAE,qBAAqB,CAAC;wBACT,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;eAC/B,aAAa;;;;;GAKzB,CAAC;KACD,CAAA;AACH,CAAC"}
@@ -4,7 +4,7 @@
4
4
  * Generates workflow header operations (name, run-name, on triggers) that are
5
5
  * common to both Nx and path-based pipeline templates.
6
6
  */
7
- import { PathOperationConfig } from '../../../utils/ast-path-operations.js';
7
+ import type { PathOperationConfig } from '../../../utils/ast-path-operations.js';
8
8
  export interface HeaderContext {
9
9
  branchFlow: string[];
10
10
  }
@@ -1 +1 @@
1
- {"version":3,"file":"operations-header.d.ts","sourceRoot":"","sources":["../../../../src/templates/workflows/shared/operations-header.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAA;AAG3E,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,EAAE,CAAA;CACrB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,aAAa,GAAG,mBAAmB,EAAE,CA2JhF"}
1
+ {"version":3,"file":"operations-header.d.ts","sourceRoot":"","sources":["../../../../src/templates/workflows/shared/operations-header.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAA;AAEhF,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,EAAE,CAAA;CACrB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,aAAa,GAAG,mBAAmB,EAAE,CAsMhF"}
@@ -11,7 +11,7 @@ import { Scalar } from 'yaml';
11
11
  export function createHeaderOperations(ctx) {
12
12
  const { branchFlow } = ctx;
13
13
  // Provide sensible defaults if branchFlow is invalid
14
- const validBranchFlow = (branchFlow && Array.isArray(branchFlow) && branchFlow.length > 0) ? branchFlow : ['main'];
14
+ const validBranchFlow = branchFlow && Array.isArray(branchFlow) && branchFlow.length > 0 ? branchFlow : ['main'];
15
15
  const branchList = validBranchFlow.join(',');
16
16
  return [
17
17
  // =============================================================================
@@ -20,11 +20,7 @@ export function createHeaderOperations(ctx) {
20
20
  {
21
21
  path: 'name',
22
22
  operation: 'preserve',
23
- value: (() => {
24
- const nameScalar = new Scalar('Pipeline');
25
- nameScalar.type = Scalar.QUOTE_DOUBLE;
26
- return nameScalar;
27
- })(),
23
+ value: new Scalar('Pipeline'),
28
24
  required: true
29
25
  },
30
26
  // =============================================================================
@@ -36,12 +32,56 @@ export function createHeaderOperations(ctx) {
36
32
  value: (() => {
37
33
  const runNameScalar = new Scalar(`\${{ github.event_name == 'pull_request' && !contains('${branchList}', github.head_ref) && github.event.pull_request.title || github.ref_name }} #\${{ inputs.run_number || github.run_number }}\${{ inputs.version && format(' - {0}', inputs.version) || '' }}`);
38
34
  runNameScalar.type = Scalar.QUOTE_DOUBLE;
35
+ runNameScalar.type = 'QUOTE_DOUBLE';
39
36
  return runNameScalar;
40
37
  })(),
41
38
  required: true,
42
39
  spaceBefore: true
43
40
  },
44
41
  // =============================================================================
42
+ // ENVIRONMENT VARIABLES
43
+ // =============================================================================
44
+ {
45
+ path: 'env',
46
+ operation: 'preserve',
47
+ value: {},
48
+ required: true,
49
+ spaceBefore: true,
50
+ commentBefore: `Git fetch depth configuration
51
+ - FETCH_DEPTH_AFFECTED: For change detection and Nx affected analysis
52
+ Lower values (50-100) improve performance, higher values (200+) improve accuracy
53
+ Use 0 for complete history if your branches diverge significantly
54
+ - FETCH_DEPTH_VERSIONING: For semantic version calculation (needs git tags)
55
+ Should almost always be 0 to access all tags
56
+
57
+ Runtime versions
58
+ Update these to match your project's requirements without regenerating workflows`
59
+ },
60
+ {
61
+ path: 'env.FETCH_DEPTH_AFFECTED',
62
+ operation: 'preserve',
63
+ value: new Scalar('100'),
64
+ required: true
65
+ },
66
+ {
67
+ path: 'env.FETCH_DEPTH_VERSIONING',
68
+ operation: 'preserve',
69
+ value: new Scalar('0'),
70
+ required: true
71
+ },
72
+ {
73
+ path: 'env.NODE_VERSION',
74
+ operation: 'preserve',
75
+ value: new Scalar('24'),
76
+ required: true
77
+ },
78
+ {
79
+ path: 'env.PNPM_VERSION',
80
+ operation: 'preserve',
81
+ value: new Scalar('10'),
82
+ required: true
83
+ },
84
+ // =============================================================================
45
85
  // WORKFLOW TRIGGERS
46
86
  // =============================================================================
47
87
  {
@@ -1 +1 @@
1
- {"version":3,"file":"operations-header.js","sourceRoot":"","sources":["../../../../src/templates/workflows/shared/operations-header.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"operations-header.js","sourceRoot":"","sources":["../../../../src/templates/workflows/shared/operations-header.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAO7B;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,GAAkB;IACvD,MAAM,EAAE,UAAU,EAAE,GAAG,GAAG,CAAA;IAC1B,qDAAqD;IACrD,MAAM,eAAe,GACnB,UAAU,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;IAC1F,MAAM,UAAU,GAAG,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAE5C,OAAO;QACL,gFAAgF;QAChF,gBAAgB;QAChB,gFAAgF;QAChF;YACE,IAAI,EAAE,MAAM;YACZ,SAAS,EAAE,UAAU;YACrB,KAAK,EAAE,IAAI,MAAM,CAAC,UAAU,CAAC;YAC7B,QAAQ,EAAE,IAAI;SACf;QAED,gFAAgF;QAChF,4CAA4C;QAC5C,gFAAgF;QAChF;YACE,IAAI,EAAE,UAAU;YAChB,SAAS,EAAE,UAAU;YACrB,KAAK,EAAE,CAAC,GAAG,EAAE;gBACX,MAAM,aAAa,GAAG,IAAI,MAAM,CAC9B,0DAA0D,UAAU,8LAA8L,CACnQ,CAAA;gBACD,aAAa,CAAC,IAAI,GAAG,MAAM,CAAC,YAAY,CAEvC;gBAAC,aAAqB,CAAC,IAAI,GAAG,cAAc,CAAA;gBAC7C,OAAO,aAAa,CAAA;YACtB,CAAC,CAAC,EAAE;YACJ,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,IAAI;SAClB;QAED,gFAAgF;QAChF,wBAAwB;QACxB,gFAAgF;QAChF;YACE,IAAI,EAAE,KAAK;YACX,SAAS,EAAE,UAAU;YACrB,KAAK,EAAE,EAAE;YACT,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,IAAI;YACjB,aAAa,EAAE;;;;;;;;kFAQ6D;SAC7E;QACD;YACE,IAAI,EAAE,0BAA0B;YAChC,SAAS,EAAE,UAAU;YACrB,KAAK,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC;YACxB,QAAQ,EAAE,IAAI;SACf;QACD;YACE,IAAI,EAAE,4BAA4B;YAClC,SAAS,EAAE,UAAU;YACrB,KAAK,EAAE,IAAI,MAAM,CAAC,GAAG,CAAC;YACtB,QAAQ,EAAE,IAAI;SACf;QACD;YACE,IAAI,EAAE,kBAAkB;YACxB,SAAS,EAAE,UAAU;YACrB,KAAK,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC;YACvB,QAAQ,EAAE,IAAI;SACf;QACD;YACE,IAAI,EAAE,kBAAkB;YACxB,SAAS,EAAE,UAAU;YACrB,KAAK,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC;YACvB,QAAQ,EAAE,IAAI;SACf;QAED,gFAAgF;QAChF,oBAAoB;QACpB,gFAAgF;QAChF;YACE,IAAI,EAAE,IAAI;YACV,SAAS,EAAE,KAAK;YAChB,KAAK,EAAE,EAAE;YACT,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,IAAI;SAClB;QAED,2BAA2B;QAC3B;YACE,IAAI,EAAE,qCAAqC;YAC3C,SAAS,EAAE,KAAK;YAChB,KAAK,EAAE;gBACL,WAAW,EAAE,uBAAuB;gBACpC,QAAQ,EAAE,KAAK;gBACf,IAAI,EAAE,QAAQ;aACf;YACD,QAAQ,EAAE,IAAI;SACf;QACD;YACE,IAAI,EAAE,qCAAqC;YAC3C,SAAS,EAAE,KAAK;YAChB,KAAK,EAAE;gBACL,WAAW,EAAE,mCAAmC;gBAChD,QAAQ,EAAE,KAAK;gBACf,IAAI,EAAE,QAAQ;aACf;YACD,QAAQ,EAAE,IAAI;SACf;QACD;YACE,IAAI,EAAE,wCAAwC;YAC9C,SAAS,EAAE,KAAK;YAChB,KAAK,EAAE;gBACL,WAAW,EAAE,6CAA6C;gBAC1D,QAAQ,EAAE,KAAK;gBACf,IAAI,EAAE,QAAQ;aACf;YACD,QAAQ,EAAE,IAAI;SACf;QACD;YACE,IAAI,EAAE,uCAAuC;YAC7C,SAAS,EAAE,KAAK;YAChB,KAAK,EAAE;gBACL,WAAW,EAAE,2CAA2C;gBACxD,QAAQ,EAAE,KAAK;gBACf,IAAI,EAAE,QAAQ;aACf;YACD,QAAQ,EAAE,IAAI;SACf;QAED,mDAAmD;QACnD;YACE,IAAI,EAAE,iCAAiC;YACvC,SAAS,EAAE,KAAK;YAChB,KAAK,EAAE;gBACL,WAAW,EAAE,uBAAuB;gBACpC,QAAQ,EAAE,KAAK;gBACf,IAAI,EAAE,QAAQ;aACf;YACD,QAAQ,EAAE,IAAI;SACf;QACD;YACE,IAAI,EAAE,iCAAiC;YACvC,SAAS,EAAE,KAAK;YAChB,KAAK,EAAE;gBACL,WAAW,EAAE,mCAAmC;gBAChD,QAAQ,EAAE,KAAK;gBACf,IAAI,EAAE,QAAQ;aACf;YACD,QAAQ,EAAE,IAAI;SACf;QACD;YACE,IAAI,EAAE,oCAAoC;YAC1C,SAAS,EAAE,KAAK;YAChB,KAAK,EAAE;gBACL,WAAW,EAAE,6CAA6C;gBAC1D,QAAQ,EAAE,KAAK;gBACf,IAAI,EAAE,QAAQ;aACf;YACD,QAAQ,EAAE,IAAI;SACf;QACD;YACE,IAAI,EAAE,mCAAmC;YACzC,SAAS,EAAE,KAAK;YAChB,KAAK,EAAE;gBACL,WAAW,EAAE,2CAA2C;gBACxD,QAAQ,EAAE,KAAK;gBACf,IAAI,EAAE,QAAQ;aACf;YACD,QAAQ,EAAE,IAAI;SACf;QAED,eAAe;QACf;YACE,IAAI,EAAE,kBAAkB;YACxB,SAAS,EAAE,KAAK;YAChB,KAAK,EAAE,eAAe;YACtB,QAAQ,EAAE,IAAI;SACf;QAED,uBAAuB;QACvB;YACE,IAAI,EAAE,uBAAuB;YAC7B,SAAS,EAAE,KAAK;YAChB,KAAK,EAAE,CAAC,QAAQ,EAAE,aAAa,EAAE,UAAU,CAAC;YAC5C,QAAQ,EAAE,IAAI;SACf;QACD;YACE,IAAI,EAAE,0BAA0B;YAChC,SAAS,EAAE,KAAK;YAChB,KAAK,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,6BAA6B;YAC1D,QAAQ,EAAE,IAAI;SACf;KACF,CAAA;AACH,CAAC"}
@@ -3,11 +3,15 @@
3
3
  *
4
4
  * Generates the tag creation, branch promotion, and GitHub release jobs.
5
5
  */
6
- import { PathOperationConfig } from '../../../utils/ast-path-operations.js';
6
+ import { type PathOperationConfig } from '../../../utils/ast-path-operations.js';
7
+ import type { PipecraftConfig } from '../../../types/index.js';
7
8
  export interface TagPromoteContext {
8
9
  branchFlow: string[];
9
10
  deployJobNames: string[];
10
11
  remoteTestJobNames: string[];
12
+ testJobNames?: string[];
13
+ autoMerge?: Record<string, boolean>;
14
+ config?: Partial<PipecraftConfig>;
11
15
  }
12
16
  /**
13
17
  * Create tag, promote, and release job operations
@@ -1 +1 @@
1
- {"version":3,"file":"operations-tag-promote.d.ts","sourceRoot":"","sources":["../../../../src/templates/workflows/shared/operations-tag-promote.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,mBAAmB,EAAyB,MAAM,uCAAuC,CAAA;AAElG,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,cAAc,EAAE,MAAM,EAAE,CAAA;IACxB,kBAAkB,EAAE,MAAM,EAAE,CAAA;CAC7B;AAED;;GAEG;AACH,wBAAgB,iCAAiC,CAAC,GAAG,EAAE,iBAAiB,GAAG,mBAAmB,EAAE,CA2F/F"}
1
+ {"version":3,"file":"operations-tag-promote.d.ts","sourceRoot":"","sources":["../../../../src/templates/workflows/shared/operations-tag-promote.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAEL,KAAK,mBAAmB,EACzB,MAAM,uCAAuC,CAAA;AAE9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAE9D,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,cAAc,EAAE,MAAM,EAAE,CAAA;IACxB,kBAAkB,EAAE,MAAM,EAAE,CAAA;IAC5B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACnC,MAAM,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAA;CAClC;AAED;;GAEG;AACH,wBAAgB,iCAAiC,CAAC,GAAG,EAAE,iBAAiB,GAAG,mBAAmB,EAAE,CAsJ/F"}
@@ -4,50 +4,88 @@
4
4
  * Generates the tag creation, branch promotion, and GitHub release jobs.
5
5
  */
6
6
  import { createValueFromString } from '../../../utils/ast-path-operations.js';
7
+ import { getActionReference } from '../../../utils/action-reference.js';
7
8
  /**
8
9
  * Create tag, promote, and release job operations
9
10
  */
10
11
  export function createTagPromoteReleaseOperations(ctx) {
11
- const { branchFlow, deployJobNames, remoteTestJobNames } = ctx;
12
+ const { branchFlow, deployJobNames, remoteTestJobNames, testJobNames = [], config = {} } = ctx;
12
13
  // Provide sensible defaults if branchFlow is invalid
13
- const validBranchFlow = (branchFlow && Array.isArray(branchFlow) && branchFlow.length > 0) ? branchFlow : ['main'];
14
- const allDeploymentJobs = [...deployJobNames, ...remoteTestJobNames];
14
+ const validBranchFlow = branchFlow && Array.isArray(branchFlow) && branchFlow.length > 0 ? branchFlow : ['main'];
15
15
  const initialBranch = validBranchFlow[0];
16
+ // Get action references based on configuration
17
+ const tagActionRef = getActionReference('create-tag', config);
18
+ const promoteActionRef = getActionReference('promote-branch', config);
19
+ const releaseActionRef = getActionReference('create-release', config);
16
20
  // Build tag job conditional (should only run on initial branch, not on PRs)
21
+ // Now depends on the gate job instead of individual test jobs
17
22
  const tagConditions = [
18
23
  'always()',
19
- 'github.event_name != \'pull_request\'',
24
+ "github.event_name != 'pull_request'",
20
25
  `github.ref_name == '${initialBranch}'`,
21
- 'needs.version.result == \'success\'',
22
- 'needs.version.outputs.version != \'\''
26
+ "needs.version.result == 'success'",
27
+ "needs.version.outputs.version != ''",
28
+ "needs.gate.result == 'success'" // Gate job must succeed
23
29
  ];
24
- if (allDeploymentJobs.length > 0) {
25
- const noFailures = allDeploymentJobs.map(job => `needs.${job}.result != 'failure'`).join(' && ');
26
- const atLeastOneSuccess = allDeploymentJobs.map(job => `needs.${job}.result == 'success'`).join(' || ');
27
- tagConditions.push(`(${noFailures})`);
28
- tagConditions.push(`(${atLeastOneSuccess})`);
29
- }
30
- const tagNeedsArray = ['version', ...allDeploymentJobs];
30
+ // Default needs: version + gate (gate already checks all test jobs)
31
+ const tagNeedsArray = ['version', 'gate'];
32
+ const defaultTagIfCondition = tagConditions.join(' && ');
31
33
  return [
32
- // TAG JOB
34
+ // TAG JOB - Ensure the job key exists with comment (but don't overwrite existing job)
33
35
  {
34
36
  path: 'jobs.tag',
35
- operation: 'overwrite',
37
+ operation: 'preserve',
38
+ spaceBefore: true,
36
39
  commentBefore: `
37
40
  =============================================================================
38
- TAG & PROMOTE (⚠️ Managed by Pipecraft - do not modify)
41
+ TAG (⚠️ Managed by Pipecraft - customizable needs and if)
39
42
  =============================================================================
40
- Creates git tags and promotes code through branch flow.
43
+ Creates git tags and promotes code through branch flow.
44
+ The 'needs' and 'if' fields are customizable and will be preserved.
45
+ All other fields (runs-on, steps) are managed by Pipecraft.
41
46
  `,
47
+ value: {} // Empty object - just ensures the job exists with the comment
48
+ },
49
+ // TAG JOB NEEDS - Preserve user customizations, default to version + gate
50
+ {
51
+ path: 'jobs.tag.needs',
52
+ operation: 'preserve',
53
+ value: tagNeedsArray
54
+ },
55
+ // TAG JOB IF - Preserve user customizations, default to standard conditions
56
+ //
57
+ // Now simplified: just check that gate job succeeded (gate already validates all tests)
58
+ //
59
+ // Pattern:
60
+ // if: ${{
61
+ // always() &&
62
+ // github.event_name != 'pull_request' &&
63
+ // github.ref_name == 'develop' &&
64
+ // needs.version.result == 'success' &&
65
+ // needs.version.outputs.version != '' &&
66
+ // needs.gate.result == 'success'
67
+ // }}
68
+ {
69
+ path: 'jobs.tag.if',
70
+ operation: 'preserve',
71
+ value: createValueFromString(`\${{ ${defaultTagIfCondition} }}`)
72
+ },
73
+ // TAG JOB RUNS-ON - Always managed
74
+ {
75
+ path: 'jobs.tag.runs-on',
76
+ operation: 'overwrite',
77
+ value: 'ubuntu-latest'
78
+ },
79
+ // TAG JOB STEPS - Always managed
80
+ {
81
+ path: 'jobs.tag.steps',
82
+ operation: 'overwrite',
42
83
  value: createValueFromString(`
43
- if: \${{ ${tagConditions.join(' && ')} }}
44
- needs: [ ${tagNeedsArray.join(', ')} ]
45
- runs-on: ubuntu-latest
46
- steps:
47
84
  - uses: actions/checkout@v4
48
85
  with:
49
86
  ref: \${{ inputs.commitSha || github.sha }}
50
- - uses: ./.github/actions/create-tag
87
+ fetch-depth: \${{ env.FETCH_DEPTH_VERSIONING }}
88
+ - uses: ${tagActionRef}
51
89
  with:
52
90
  version: \${{ needs.version.outputs.version }}
53
91
  commitSha: \${{ inputs.commitSha || github.sha }}
@@ -57,35 +95,52 @@ Creates git tags and promotes code through branch flow.
57
95
  {
58
96
  path: 'jobs.promote',
59
97
  operation: 'overwrite',
98
+ spaceBefore: true,
99
+ commentBefore: `
100
+ =============================================================================
101
+ PROMOTE (⚠️ Managed by Pipecraft - do not modify)
102
+ =============================================================================
103
+ Promotes code from develop to staging or main via PR.
104
+ `,
60
105
  value: createValueFromString(`
61
- if: \${{ always() && (github.event_name == 'push' || github.event_name == 'workflow_dispatch') && needs.version.result == 'success' && needs.version.outputs.version != '' && (needs.tag.result == 'success' || needs.tag.result == 'skipped') && (${buildPromotableBranchesCondition(validBranchFlow)}) }}
62
106
  needs: [ version, tag ]
107
+ if: \${{ always() && (github.event_name == 'push' || github.event_name == 'workflow_dispatch') && needs.version.result == 'success' && needs.version.outputs.version != '' && (needs.tag.result == 'success' || needs.tag.result == 'skipped') && (${buildPromotableBranchesCondition(validBranchFlow)}) }}
63
108
  runs-on: ubuntu-latest
64
109
  steps:
65
110
  - uses: actions/checkout@v4
66
111
  with:
67
112
  ref: \${{ inputs.commitSha || github.sha }}
68
- - uses: ./.github/actions/promote-branch
113
+ fetch-depth: \${{ env.FETCH_DEPTH_VERSIONING }}
114
+ - uses: ${promoteActionRef}
69
115
  with:
70
116
  version: \${{ needs.version.outputs.version }}
71
- currentBranch: \${{ github.ref_name }}
72
- nextBranch: \${{ ${buildNextBranchExpression(validBranchFlow)} }}
73
- runNumber: \${{ github.run_number }}
117
+ sourceBranch: \${{ github.ref_name }}
118
+ targetBranch: \${{ ${buildTargetBranchExpression(validBranchFlow)} }}
119
+ autoMerge: \${{ ${buildAutoMergeExpression(validBranchFlow, ctx.autoMerge)} }}
120
+ run_number: \${{ inputs.run_number || github.run_number }}
74
121
  `)
75
122
  },
76
123
  // RELEASE JOB
77
124
  {
78
125
  path: 'jobs.release',
79
126
  operation: 'overwrite',
127
+ spaceBefore: true,
128
+ commentBefore: `
129
+ =============================================================================
130
+ RELEASE (⚠️ Managed by Pipecraft - do not modify)
131
+ =============================================================================
132
+ Creates a release for the version.
133
+ `,
80
134
  value: createValueFromString(`
81
- if: \${{ always() && github.ref_name == '${validBranchFlow[validBranchFlow.length - 1]}' && needs.version.result == 'success' && needs.version.outputs.version != '' && needs.tag.result == 'success' }}
82
135
  needs: [ tag, version ]
136
+ if: \${{ always() && github.ref_name == '${validBranchFlow[validBranchFlow.length - 1]}' && needs.version.result == 'success' && needs.version.outputs.version != '' && needs.tag.result == 'success' }}
83
137
  runs-on: ubuntu-latest
84
138
  steps:
85
139
  - uses: actions/checkout@v4
86
140
  with:
87
141
  ref: \${{ inputs.commitSha || github.sha }}
88
- - uses: ./.github/actions/create-release
142
+ fetch-depth: \${{ env.FETCH_DEPTH_VERSIONING }}
143
+ - uses: ${releaseActionRef}
89
144
  with:
90
145
  version: \${{ needs.version.outputs.version }}
91
146
  commitSha: \${{ inputs.commitSha || github.sha }}
@@ -93,6 +148,39 @@ Creates git tags and promotes code through branch flow.
93
148
  }
94
149
  ];
95
150
  }
151
+ /**
152
+ * Builds a condition that ensures at least ONE success AND NO failures for a set of jobs.
153
+ *
154
+ * This is the standard pattern for gating jobs (like tag) that depend on multiple test/deploy jobs.
155
+ *
156
+ * Pattern:
157
+ * - NO failures: All jobs must not be 'failure' (skipped is OK, failure is not)
158
+ * - AT LEAST ONE success: At least one job must be 'success' (skipped doesn't count as success)
159
+ *
160
+ * @param jobNames - Array of job names to check (e.g., ['test-cicd', 'test-core', 'deploy-docs'])
161
+ * @returns Condition string like: "(needs.job1.result != 'failure' && needs.job2.result != 'failure') && (needs.job1.result == 'success' || needs.job2.result == 'success')"
162
+ *
163
+ * @example
164
+ * ```typescript
165
+ * // For test jobs
166
+ * buildAtLeastOneSuccessNoFailuresCondition(['test-cicd', 'test-core', 'test-docs'])
167
+ * // Returns: "(needs.test-cicd.result != 'failure' && needs.test-core.result != 'failure' && needs.test-docs.result != 'failure') && (needs.test-cicd.result == 'success' || needs.test-core.result == 'success' || needs.test-docs.result == 'success')"
168
+ *
169
+ * // For deployment jobs
170
+ * buildAtLeastOneSuccessNoFailuresCondition(['deploy-staging', 'deploy-prod'])
171
+ * // Returns: "(needs.deploy-staging.result != 'failure' && needs.deploy-prod.result != 'failure') && (needs.deploy-staging.result == 'success' || needs.deploy-prod.result == 'success')"
172
+ * ```
173
+ */
174
+ function buildAtLeastOneSuccessNoFailuresCondition(jobNames) {
175
+ if (jobNames.length === 0) {
176
+ return '';
177
+ }
178
+ // Ensure NO failures (skipped is OK, but failure is not)
179
+ const noFailures = jobNames.map(job => `needs.${job}.result != 'failure'`).join(' && ');
180
+ // Ensure AT LEAST ONE success (skipped jobs don't count as success)
181
+ const atLeastOneSuccess = jobNames.map(job => `needs.${job}.result == 'success'`).join(' || ');
182
+ return `(${noFailures}) && (${atLeastOneSuccess})`;
183
+ }
96
184
  /**
97
185
  * Helper to build promotable branches condition
98
186
  * Returns a condition that checks if current branch is promotable (all except final branch)
@@ -102,14 +190,33 @@ function buildPromotableBranchesCondition(branchFlow) {
102
190
  return promotableBranches.map(branch => `github.ref_name == '${branch}'`).join(' || ');
103
191
  }
104
192
  /**
105
- * Helper to build the nextBranch expression
193
+ * Helper to build the targetBranch expression
194
+ * Maps each source branch to its target branch
106
195
  */
107
- function buildNextBranchExpression(branchFlow) {
196
+ function buildTargetBranchExpression(branchFlow) {
108
197
  if (branchFlow.length === 1)
109
198
  return `''`;
110
199
  if (branchFlow.length === 2)
111
200
  return `'${branchFlow[1]}'`;
112
201
  // For 3+ branches: develop → staging, staging → main
202
+ // github.ref_name == 'develop' && 'staging' || 'main'
113
203
  return `github.ref_name == '${branchFlow[0]}' && '${branchFlow[1]}' || '${branchFlow[branchFlow.length - 1]}'`;
114
204
  }
205
+ /**
206
+ * Helper to build the autoMerge expression
207
+ * Maps each target branch to its autoMerge setting
208
+ */
209
+ function buildAutoMergeExpression(branchFlow, autoMerge) {
210
+ if (!autoMerge || branchFlow.length === 1)
211
+ return `'false'`;
212
+ if (branchFlow.length === 2) {
213
+ const target = branchFlow[1];
214
+ return `'${autoMerge[target] ? 'true' : 'false'}'`;
215
+ }
216
+ // For 3+ branches: develop → staging (check staging autoMerge), staging → main (check main autoMerge)
217
+ // github.ref_name == 'develop' && 'true' || 'false'
218
+ const stagingTarget = branchFlow[1];
219
+ const mainTarget = branchFlow[branchFlow.length - 1];
220
+ return `github.ref_name == '${branchFlow[0]}' && '${autoMerge[stagingTarget] ? 'true' : 'false'}' || '${autoMerge[mainTarget] ? 'true' : 'false'}'`;
221
+ }
115
222
  //# sourceMappingURL=operations-tag-promote.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"operations-tag-promote.js","sourceRoot":"","sources":["../../../../src/templates/workflows/shared/operations-tag-promote.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"operations-tag-promote.js","sourceRoot":"","sources":["../../../../src/templates/workflows/shared/operations-tag-promote.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,qBAAqB,EAEtB,MAAM,uCAAuC,CAAA;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAA;AAYvE;;GAEG;AACH,MAAM,UAAU,iCAAiC,CAAC,GAAsB;IACtE,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,kBAAkB,EAAE,YAAY,GAAG,EAAE,EAAE,MAAM,GAAG,EAAE,EAAE,GAAG,GAAG,CAAA;IAC9F,qDAAqD;IACrD,MAAM,eAAe,GACnB,UAAU,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;IAC1F,MAAM,aAAa,GAAG,eAAe,CAAC,CAAC,CAAC,CAAA;IAExC,+CAA+C;IAC/C,MAAM,YAAY,GAAG,kBAAkB,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA;IAC7D,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAA;IACrE,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAA;IAErE,4EAA4E;IAC5E,8DAA8D;IAC9D,MAAM,aAAa,GAAG;QACpB,UAAU;QACV,qCAAqC;QACrC,uBAAuB,aAAa,GAAG;QACvC,mCAAmC;QACnC,qCAAqC;QACrC,gCAAgC,CAAC,wBAAwB;KAC1D,CAAA;IAED,oEAAoE;IACpE,MAAM,aAAa,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;IACzC,MAAM,qBAAqB,GAAG,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAExD,OAAO;QACL,sFAAsF;QACtF;YACE,IAAI,EAAE,UAAU;YAChB,SAAS,EAAE,UAAU;YACrB,WAAW,EAAE,IAAI;YACjB,aAAa,EAAE;;;;;;;CAOpB;YACK,KAAK,EAAE,EAAE,CAAC,8DAA8D;SACzE;QACD,0EAA0E;QAC1E;YACE,IAAI,EAAE,gBAAgB;YACtB,SAAS,EAAE,UAAU;YACrB,KAAK,EAAE,aAAa;SACrB;QACD,4EAA4E;QAC5E,EAAE;QACF,wFAAwF;QACxF,EAAE;QACF,WAAW;QACX,YAAY;QACZ,kBAAkB;QAClB,6CAA6C;QAC7C,sCAAsC;QACtC,2CAA2C;QAC3C,6CAA6C;QAC7C,qCAAqC;QACrC,OAAO;QACP;YACE,IAAI,EAAE,aAAa;YACnB,SAAS,EAAE,UAAU;YACrB,KAAK,EAAE,qBAAqB,CAAC,QAAQ,qBAAqB,KAAK,CAAC;SACjE;QACD,mCAAmC;QACnC;YACE,IAAI,EAAE,kBAAkB;YACxB,SAAS,EAAE,WAAW;YACtB,KAAK,EAAE,eAAe;SACvB;QACD,iCAAiC;QACjC;YACE,IAAI,EAAE,gBAAgB;YACtB,SAAS,EAAE,WAAW;YACtB,KAAK,EAAE,qBAAqB,CAAC;;;;;gBAKnB,YAAY;;;;GAIzB,CAAC;SACC;QAED,cAAc;QACd;YACE,IAAI,EAAE,cAAc;YACpB,SAAS,EAAE,WAAW;YACtB,WAAW,EAAE,IAAI;YACjB,aAAa,EAAE;;;;;CAKpB;YACK,KAAK,EAAE,qBAAqB,CAAC;;yPAEsN,gCAAgC,CACnR,eAAe,CAChB;;;;;;;gBAOW,gBAAgB;;;;+BAID,2BAA2B,CAAC,eAAe,CAAC;4BAC/C,wBAAwB,CAAC,eAAe,EAAE,GAAG,CAAC,SAAS,CAAC;;GAEjF,CAAC;SACC;QAED,cAAc;QACd;YACE,IAAI,EAAE,cAAc;YACpB,SAAS,EAAE,WAAW;YACtB,WAAW,EAAE,IAAI;YACjB,aAAa,EAAE;;;;;CAKpB;YACK,KAAK,EAAE,qBAAqB,CAAC;;+CAG7B,eAAe,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAC5C;;;;;;;gBAOY,gBAAgB;;;;GAI7B,CAAC;SACC;KACF,CAAA;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,SAAS,yCAAyC,CAAC,QAAkB;IACnE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,EAAE,CAAA;IACX,CAAC;IAED,yDAAyD;IACzD,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,GAAG,sBAAsB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAEvF,oEAAoE;IACpE,MAAM,iBAAiB,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,GAAG,sBAAsB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAE9F,OAAO,IAAI,UAAU,SAAS,iBAAiB,GAAG,CAAA;AACpD,CAAC;AAED;;;GAGG;AACH,SAAS,gCAAgC,CAAC,UAAoB;IAC5D,MAAM,kBAAkB,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA,CAAC,mCAAmC;IACtF,OAAO,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,uBAAuB,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;AACxF,CAAC;AAED;;;GAGG;AACH,SAAS,2BAA2B,CAAC,UAAoB;IACvD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IACxC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,UAAU,CAAC,CAAC,CAAC,GAAG,CAAA;IAExD,qDAAqD;IACrD,sDAAsD;IACtD,OAAO,uBAAuB,UAAU,CAAC,CAAC,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,SAC/D,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAClC,GAAG,CAAA;AACL,CAAC;AAED;;;GAGG;AACH,SAAS,wBAAwB,CAC/B,UAAoB,EACpB,SAAmC;IAEnC,IAAI,CAAC,SAAS,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAA;IAC3D,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,CAAA;QAC5B,OAAO,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,GAAG,CAAA;IACpD,CAAC;IAED,sGAAsG;IACtG,oDAAoD;IACpD,MAAM,aAAa,GAAG,UAAU,CAAC,CAAC,CAAC,CAAA;IACnC,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IACpD,OAAO,uBAAuB,UAAU,CAAC,CAAC,CAAC,SACzC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OACtC,SAAS,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,GAAG,CAAA;AACtD,CAAC"}
@@ -3,11 +3,13 @@
3
3
  *
4
4
  * Generates the version calculation job that determines the next semantic version.
5
5
  */
6
- import { PathOperationConfig } from '../../../utils/ast-path-operations.js';
6
+ import { type PathOperationConfig } from '../../../utils/ast-path-operations.js';
7
+ import type { PipecraftConfig } from '../../../types/index.js';
7
8
  export interface VersionContext {
8
9
  testJobNames: string[];
9
10
  nxEnabled?: boolean;
10
11
  baseRef?: string;
12
+ config?: Partial<PipecraftConfig>;
11
13
  }
12
14
  /**
13
15
  * Create the version calculation job operation
@@ -1 +1 @@
1
- {"version":3,"file":"operations-version.d.ts","sourceRoot":"","sources":["../../../../src/templates/workflows/shared/operations-version.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,mBAAmB,EAAyB,MAAM,uCAAuC,CAAA;AAElG,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,cAAc,GAAG,mBAAmB,CAkDlF"}
1
+ {"version":3,"file":"operations-version.d.ts","sourceRoot":"","sources":["../../../../src/templates/workflows/shared/operations-version.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAEL,KAAK,mBAAmB,EACzB,MAAM,uCAAuC,CAAA;AAE9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAE9D,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAA;CAClC;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,cAAc,GAAG,mBAAmB,CA2DlF"}