@catladder/pipeline 3.19.0 → 3.20.1

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 (72) hide show
  1. package/dist/constants.js +1 -1
  2. package/dist/pipeline/agent/createAgentReviewJob.js +1 -0
  3. package/dist/pipeline/createMainPipeline.js +1 -1
  4. package/dist/pipeline/gitlab/gitlabReleaseJobs.d.ts +2 -1
  5. package/dist/pipeline/gitlab/gitlabReleaseJobs.js +48 -3
  6. package/dist/rules/index.d.ts +1 -3
  7. package/dist/rules/index.js +2 -19
  8. package/dist/tsconfig.tsbuildinfo +1 -1
  9. package/dist/types/config.d.ts +5 -0
  10. package/dist/types/release.d.ts +7 -0
  11. package/dist/types/release.js +5 -0
  12. package/examples/__snapshots__/automatic-releases.test.ts.snap +1484 -0
  13. package/examples/__snapshots__/cloud-run-health-check-defaults.test.ts.snap +0 -2
  14. package/examples/__snapshots__/cloud-run-health-check-only-startup.test.ts.snap +0 -2
  15. package/examples/__snapshots__/cloud-run-health-check.test.ts.snap +0 -2
  16. package/examples/__snapshots__/cloud-run-http2.test.ts.snap +0 -2
  17. package/examples/__snapshots__/cloud-run-llama.test.ts.snap +0 -2
  18. package/examples/__snapshots__/cloud-run-memory-limit.test.ts.snap +0 -2
  19. package/examples/__snapshots__/cloud-run-meteor-with-worker.test.ts.snap +0 -2
  20. package/examples/__snapshots__/cloud-run-nextjs.test.ts.snap +0 -2
  21. package/examples/__snapshots__/cloud-run-no-cpu-throttling.test.ts.snap +0 -2
  22. package/examples/__snapshots__/cloud-run-no-service.test.ts.snap +0 -2
  23. package/examples/__snapshots__/cloud-run-non-public.test.ts.snap +0 -2
  24. package/examples/__snapshots__/cloud-run-post-stop-job.test.ts.snap +0 -2
  25. package/examples/__snapshots__/cloud-run-service-custom-vpc-connector.test.ts.snap +0 -2
  26. package/examples/__snapshots__/cloud-run-service-custom-vpc.test.ts.snap +0 -2
  27. package/examples/__snapshots__/cloud-run-service-gen2.test.ts.snap +0 -2
  28. package/examples/__snapshots__/cloud-run-service-increase-timout.test.ts.snap +0 -2
  29. package/examples/__snapshots__/cloud-run-service-with-volumes.test.ts.snap +0 -2
  30. package/examples/__snapshots__/cloud-run-storybook.test.ts.snap +0 -2
  31. package/examples/__snapshots__/cloud-run-with-agents.test.ts.snap +1 -2
  32. package/examples/__snapshots__/cloud-run-with-gpu.test.ts.snap +0 -2
  33. package/examples/__snapshots__/cloud-run-with-ngnix.test.ts.snap +0 -2
  34. package/examples/__snapshots__/cloud-run-with-sql-legacy-jobs.test.ts.snap +0 -2
  35. package/examples/__snapshots__/cloud-run-with-sql-multiple-dbs.test.ts.snap +0 -2
  36. package/examples/__snapshots__/cloud-run-with-sql-reuse-db.test.ts.snap +0 -2
  37. package/examples/__snapshots__/cloud-run-with-sql.test.ts.snap +0 -2
  38. package/examples/__snapshots__/cloud-run-with-worker.test.ts.snap +0 -2
  39. package/examples/__snapshots__/custom-build-job-with-tests.test.ts.snap +0 -2
  40. package/examples/__snapshots__/custom-build-job.test.ts.snap +0 -2
  41. package/examples/__snapshots__/custom-deploy.test.ts.snap +0 -2
  42. package/examples/__snapshots__/custom-envs.test.ts.snap +0 -2
  43. package/examples/__snapshots__/custom-sbom-java.test.ts.snap +0 -2
  44. package/examples/__snapshots__/custom-verify-job.test.ts.snap +0 -2
  45. package/examples/__snapshots__/git-submodule.test.ts.snap +0 -2
  46. package/examples/__snapshots__/kubernetes-application-customization.test.ts.snap +0 -2
  47. package/examples/__snapshots__/kubernetes-with-cloud-sql.test.ts.snap +0 -2
  48. package/examples/__snapshots__/kubernetes-with-jobs.test.ts.snap +0 -2
  49. package/examples/__snapshots__/kubernetes-with-mongodb.test.ts.snap +0 -2
  50. package/examples/__snapshots__/local-dot-env.test.ts.snap +0 -2
  51. package/examples/__snapshots__/meteor-kubernetes.test.ts.snap +0 -2
  52. package/examples/__snapshots__/modify-generated-files.test.ts.snap +0 -2
  53. package/examples/__snapshots__/multiline-var.test.ts.snap +0 -2
  54. package/examples/__snapshots__/native-app.test.ts.snap +0 -2
  55. package/examples/__snapshots__/node-build-with-custom-image.test.ts.snap +0 -2
  56. package/examples/__snapshots__/node-build-with-docker-additions.test.ts.snap +0 -2
  57. package/examples/__snapshots__/override-secrets.test.ts.snap +0 -2
  58. package/examples/__snapshots__/rails-k8s-with-worker-dockerfile.test.ts.snap +0 -2
  59. package/examples/__snapshots__/rails-k8s-with-worker.test.ts.snap +0 -2
  60. package/examples/__snapshots__/referencing-other-vars.test.ts.snap +0 -2
  61. package/examples/__snapshots__/wait-for-other-deploy.test.ts.snap +0 -2
  62. package/examples/__snapshots__/workspace-api-www-turbo-cache.test.ts.snap +0 -2
  63. package/examples/__snapshots__/workspace-api-www.test.ts.snap +0 -2
  64. package/examples/automatic-releases.test.ts +11 -0
  65. package/examples/automatic-releases.ts +28 -0
  66. package/package.json +1 -1
  67. package/src/pipeline/agent/createAgentReviewJob.ts +1 -1
  68. package/src/pipeline/createMainPipeline.ts +9 -7
  69. package/src/pipeline/gitlab/gitlabReleaseJobs.ts +37 -4
  70. package/src/rules/index.ts +0 -32
  71. package/src/types/config.ts +6 -0
  72. package/src/types/release.ts +7 -0
@@ -1,23 +1,56 @@
1
- import { RULES_MANUAL_RELEASE, RULES_RELEASE } from "../../rules";
1
+ import {
2
+ RULE_CONDITION_HOTFIX_BRANCH,
3
+ RULE_CONDITION_MAIN_BRANCH,
4
+ RULE_NEVER_ON_AGENT_TRIGGER,
5
+ RULE_NEVER_ON_RELEASE_COMMIT,
6
+ RULE_NEVER_ON_SCHEDULE,
7
+ } from "../../rules";
2
8
  import { getRunnerImage } from "../../runner";
9
+ import type { Config } from "../../types/config";
10
+ import type { GitlabRule } from "../../types";
3
11
 
4
12
  const EXPIRED_TOKEN_HELP =
5
13
  "echo '👉 The project access token might be invald - run `project-renew-token` in catladder CLI to fix.'";
6
14
 
7
- export const getGitlabReleaseJobs = () => {
15
+ const baseReleaseRules = [
16
+ RULE_NEVER_ON_RELEASE_COMMIT,
17
+ RULE_NEVER_ON_AGENT_TRIGGER,
18
+ RULE_NEVER_ON_SCHEDULE,
19
+ ];
20
+ export const getGitlabReleaseJobs = (config: Config) => {
8
21
  return {
9
22
  ["create release"]: {
10
23
  stage: "release",
11
24
  image: getRunnerImage("semantic-release"),
12
25
  script: ["semanticRelease", EXPIRED_TOKEN_HELP],
13
- rules: RULES_RELEASE,
26
+ rules: [
27
+ ...baseReleaseRules,
28
+ {
29
+ if: RULE_CONDITION_MAIN_BRANCH,
30
+ when: config.releases?.when === "auto" ? "on_success" : "manual",
31
+ },
32
+ {
33
+ if: RULE_CONDITION_HOTFIX_BRANCH,
34
+ when: "manual",
35
+ },
36
+ ] satisfies GitlabRule[],
14
37
  },
15
38
  ["⚠️ force create release"]: {
16
39
  stage: "release",
17
40
  image: getRunnerImage("semantic-release"),
18
41
  script: ["semanticRelease", EXPIRED_TOKEN_HELP],
19
42
  needs: [],
20
- rules: RULES_MANUAL_RELEASE,
43
+ rules: [
44
+ ...baseReleaseRules,
45
+ {
46
+ if: RULE_CONDITION_MAIN_BRANCH,
47
+ when: "manual",
48
+ },
49
+ {
50
+ if: RULE_CONDITION_HOTFIX_BRANCH,
51
+ when: "manual",
52
+ },
53
+ ] satisfies GitlabRule[],
21
54
  },
22
55
  };
23
56
  };
@@ -39,35 +39,3 @@ export const RULE_IS_TAGGED_RELEASE: GitlabRule = {
39
39
 
40
40
  export const RULE_CONDITION_HOTFIX_BRANCH =
41
41
  "$CI_COMMIT_BRANCH =~ /^[0-9]+.([0-9]+|x).x$/";
42
-
43
- export const RULES_RELEASE: GitlabRule[] = [
44
- RULE_NEVER_ON_RELEASE_COMMIT,
45
- RULE_NEVER_ON_AGENT_TRIGGER,
46
- RULE_NEVER_ON_SCHEDULE,
47
- {
48
- if: RULE_CONDITION_MAIN_BRANCH + ' && $AUTO_RELEASE == "true"',
49
- when: "on_success",
50
- },
51
- {
52
- if: RULE_CONDITION_MAIN_BRANCH,
53
- when: "manual",
54
- },
55
- {
56
- if: RULE_CONDITION_HOTFIX_BRANCH,
57
- when: "manual",
58
- },
59
- ];
60
-
61
- export const RULES_MANUAL_RELEASE: GitlabRule[] = [
62
- RULE_NEVER_ON_RELEASE_COMMIT,
63
- RULE_NEVER_ON_AGENT_TRIGGER,
64
- RULE_NEVER_ON_SCHEDULE,
65
- {
66
- if: RULE_CONDITION_MAIN_BRANCH,
67
- when: "manual",
68
- },
69
- {
70
- if: RULE_CONDITION_HOTFIX_BRANCH,
71
- when: "manual",
72
- },
73
- ];
@@ -7,6 +7,7 @@ import type { PartialDeep } from "./utils";
7
7
  import type { PipelineType, WorkspaceBuildConfig } from "..";
8
8
  import type { AgentConfig } from "./agent";
9
9
  import type { Hooks } from "./hooks";
10
+ import type { ReleaseConfig } from "./release";
10
11
 
11
12
  export const ALL_PIPELINE_TRIGGERS = [
12
13
  "mainBranch",
@@ -237,4 +238,9 @@ export type Config<C extends ConfigProps = never> = {
237
238
  * hook into catladder generation
238
239
  */
239
240
  hooks?: Hooks;
241
+
242
+ /**
243
+ * configure tagged releases
244
+ */
245
+ releases?: ReleaseConfig;
240
246
  };
@@ -0,0 +1,7 @@
1
+ export type ReleaseConfig = {
2
+ /**
3
+ * Whether to release automatically or manually on main branch.
4
+ * Defaults to "manuel"
5
+ */
6
+ when?: "manual" | "auto";
7
+ };