@catladder/pipeline 0.0.0-refactor-docker-c24f8608 → 0.0.0-refactor-cache-b38c122b

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 (393) hide show
  1. package/README.md +15 -1
  2. package/dist/build/artifacts/createBuildJobArtifact.d.ts +3 -0
  3. package/dist/build/artifacts/createBuildJobArtifact.js +97 -0
  4. package/dist/build/base/constants.js +1 -1
  5. package/dist/build/base/createAppBuildJob.d.ts +4 -3
  6. package/dist/build/base/createAppBuildJob.js +14 -16
  7. package/dist/build/base/createBuildJobDefinition.d.ts +6 -0
  8. package/dist/build/base/createBuildJobDefinition.js +58 -0
  9. package/dist/build/base/index.d.ts +7 -4
  10. package/dist/build/base/index.js +14 -5
  11. package/dist/build/base/writeBuildInfo.js +1 -1
  12. package/dist/build/base/writeDotEnv.d.ts +2 -1
  13. package/dist/build/base/writeDotEnv.js +17 -3
  14. package/dist/build/cache/createJobCache.d.ts +7 -0
  15. package/dist/build/cache/createJobCache.js +109 -0
  16. package/dist/build/cache/getAllCacheConfigsFromConfig.d.ts +3 -0
  17. package/dist/build/cache/getAllCacheConfigsFromConfig.js +62 -0
  18. package/dist/build/cache/transformLegacyJobCache.d.ts +3 -0
  19. package/dist/build/cache/transformLegacyJobCache.js +29 -0
  20. package/dist/build/custom/__tests__/testJob.test.js +12 -15
  21. package/dist/build/custom/buildJob.js +4 -54
  22. package/dist/build/custom/testJob.d.ts +1 -1
  23. package/dist/build/custom/testJob.js +16 -15
  24. package/dist/build/docker.d.ts +9 -13
  25. package/dist/build/docker.js +25 -18
  26. package/dist/build/index.d.ts +13 -6
  27. package/dist/build/index.js +29 -7
  28. package/dist/build/node/buildJob.d.ts +6 -2
  29. package/dist/build/node/buildJob.js +37 -42
  30. package/dist/build/node/cache.d.ts +7 -6
  31. package/dist/build/node/cache.js +30 -18
  32. package/dist/build/node/constants.js +2 -2
  33. package/dist/build/node/index.d.ts +2 -2
  34. package/dist/build/node/meteor.js +7 -11
  35. package/dist/build/node/testJob.d.ts +3 -2
  36. package/dist/build/node/testJob.js +23 -17
  37. package/dist/build/node/yarn.d.ts +4 -4
  38. package/dist/build/node/yarn.js +5 -9
  39. package/dist/build/rails/build.d.ts +1 -1
  40. package/dist/build/rails/build.js +10 -5
  41. package/dist/build/rails/test.d.ts +1 -1
  42. package/dist/build/rails/test.js +9 -4
  43. package/dist/build/sbom.js +6 -5
  44. package/dist/build/types.d.ts +107 -6
  45. package/dist/build/types.js +7 -1
  46. package/dist/bundles/catladder-gitlab/index.js +3192 -1681
  47. package/dist/catladder-gitlab.js +131 -6
  48. package/dist/config/__tests__/getAllEnvs.test.d.ts +1 -0
  49. package/dist/config/__tests__/getAllEnvs.test.js +79 -0
  50. package/dist/config/__tests__/getAllEnvsInAllComponents.test.d.ts +1 -0
  51. package/dist/config/__tests__/getAllEnvsInAllComponents.test.js +73 -0
  52. package/dist/config/readConfig.d.ts +2 -2
  53. package/dist/config/readConfig.js +188 -37
  54. package/dist/constants.js +1 -1
  55. package/dist/context/createAllComponentsContext.d.ts +12 -0
  56. package/dist/context/createAllComponentsContext.js +159 -0
  57. package/dist/context/createComponentContext.d.ts +11 -0
  58. package/dist/context/createComponentContext.js +256 -0
  59. package/dist/context/createWorkspaceContext.d.ts +16 -0
  60. package/dist/context/createWorkspaceContext.js +173 -0
  61. package/dist/context/getBuildInfoVariables.d.ts +3 -4
  62. package/dist/context/getBuildInfoVariables.js +43 -17
  63. package/dist/context/getEnvironmentContext.d.ts +1 -1
  64. package/dist/context/getEnvironmentVariables.d.ts +2 -5
  65. package/dist/context/getEnvironmentVariables.js +5 -4
  66. package/dist/context/getLabels.js +5 -5
  67. package/dist/context/index.d.ts +2 -17
  68. package/dist/context/index.js +2 -164
  69. package/dist/deploy/base/deploy.d.ts +2 -2
  70. package/dist/deploy/base/deploy.js +29 -14
  71. package/dist/deploy/base/index.d.ts +1 -3
  72. package/dist/deploy/base/rollback.d.ts +1 -1
  73. package/dist/deploy/base/stop.d.ts +1 -1
  74. package/dist/deploy/base/variables.js +1 -1
  75. package/dist/deploy/cloudRun/artifactsRegistry.d.ts +1 -5
  76. package/dist/deploy/cloudRun/artifactsRegistry.js +10 -11
  77. package/dist/deploy/cloudRun/cloudRunRevisions.js +4 -5
  78. package/dist/deploy/cloudRun/createJobs/cloudRunJobs.js +76 -50
  79. package/dist/deploy/cloudRun/createJobs/cloudRunServices.js +5 -1
  80. package/dist/deploy/cloudRun/createJobs/common.js +3 -2
  81. package/dist/deploy/cloudRun/createJobs/index.js +2 -4
  82. package/dist/deploy/cloudRun/index.d.ts +2 -2
  83. package/dist/deploy/custom/deployJob.js +8 -9
  84. package/dist/deploy/custom/index.d.ts +2 -2
  85. package/dist/deploy/dockerTag/deployJob.js +3 -5
  86. package/dist/deploy/dockerTag/index.d.ts +2 -2
  87. package/dist/deploy/index.d.ts +7 -7
  88. package/dist/deploy/kubernetes/additionalSecretKeys.d.ts +3 -1
  89. package/dist/deploy/kubernetes/cloudSql/index.js +12 -10
  90. package/dist/deploy/kubernetes/deployJob.js +6 -9
  91. package/dist/deploy/kubernetes/index.d.ts +2 -2
  92. package/dist/deploy/kubernetes/kubeEnv.js +2 -1
  93. package/dist/deploy/kubernetes/kubeValues.js +10 -10
  94. package/dist/deploy/kubernetes/mongodb.js +11 -11
  95. package/dist/deploy/sbom.d.ts +1 -1
  96. package/dist/deploy/sbom.js +4 -3
  97. package/dist/deploy/types/custom.d.ts +2 -6
  98. package/dist/deploy/types/googleCloudRun.d.ts +26 -0
  99. package/dist/deploy/types/index.d.ts +3 -3
  100. package/dist/deploy/types/index.js +1 -1
  101. package/dist/deploy/utils.js +2 -1
  102. package/dist/packageInfos.d.ts +3 -1
  103. package/dist/packageInfos.js +13 -7
  104. package/dist/pipeline/__tests__/getPipelineStages.test.d.ts +1 -0
  105. package/dist/pipeline/__tests__/getPipelineStages.test.js +73 -0
  106. package/dist/pipeline/createAllJobs.d.ts +12 -10
  107. package/dist/pipeline/createAllJobs.js +85 -24
  108. package/dist/pipeline/createChildPipeline.js +2 -1
  109. package/dist/pipeline/createJobsForComponent.d.ts +3 -3
  110. package/dist/pipeline/createJobsForComponent.js +6 -147
  111. package/dist/pipeline/createJobsForWorkspace.d.ts +3 -0
  112. package/dist/pipeline/createJobsForWorkspace.js +12 -0
  113. package/dist/pipeline/createMainPipeline.js +28 -7
  114. package/dist/pipeline/generatePipelineFiles.d.ts +38 -0
  115. package/dist/pipeline/generatePipelineFiles.js +79 -27
  116. package/dist/pipeline/getPipelineStages.d.ts +3 -4
  117. package/dist/pipeline/getPipelineStages.js +6 -5
  118. package/dist/pipeline/gitlab/createGitlabJobs.d.ts +4 -18
  119. package/dist/pipeline/gitlab/createGitlabJobs.js +206 -93
  120. package/dist/pipeline/gitlab/createGitlabPipeline.js +3 -0
  121. package/dist/pipeline/gitlab/gitlabReleaseJobs.d.ts +2 -0
  122. package/dist/pipeline/gitlab/gitlabReleaseJobs.js +3 -0
  123. package/dist/pipeline/gitlab/sortGitLabJobDefProps.d.ts +7 -0
  124. package/dist/pipeline/gitlab/sortGitLabJobDefProps.js +27 -0
  125. package/dist/pipeline/packageManager.d.ts +3 -2
  126. package/dist/pipeline/packageManager.js +44 -16
  127. package/dist/pipeline/yarn/yarnUtils.d.ts +2 -2
  128. package/dist/pipeline/yarn/yarnUtils.js +12 -11
  129. package/dist/tsconfig.tsbuildinfo +1 -1
  130. package/dist/types/config.d.ts +10 -5
  131. package/dist/types/context.d.ts +91 -19
  132. package/dist/types/context.js +10 -1
  133. package/dist/types/environmentContext.d.ts +5 -6
  134. package/dist/types/gitlab-types.d.ts +2 -2
  135. package/dist/types/index.d.ts +1 -0
  136. package/dist/types/index.js +1 -0
  137. package/dist/types/jobDefinition.d.ts +11 -0
  138. package/dist/types/jobDefinition.js +5 -0
  139. package/dist/types/jobs.d.ts +8 -2
  140. package/dist/utils/index.d.ts +2 -1
  141. package/dist/utils/index.js +7 -2
  142. package/dist/utils/jsonParse.d.ts +1 -0
  143. package/dist/utils/jsonParse.js +14 -0
  144. package/dist/utils/removeUndefined.d.ts +1 -0
  145. package/dist/utils/removeUndefined.js +36 -0
  146. package/dist/utils/writeFiles.d.ts +5 -1
  147. package/dist/utils/writeFiles.js +10 -2
  148. package/examples/.test-gen-ignore +1 -0
  149. package/examples/__snapshots__/cloud-run-http2.test.ts.snap +1342 -0
  150. package/examples/__snapshots__/cloud-run-memory-limit.test.ts.snap +1342 -0
  151. package/examples/__snapshots__/cloud-run-meteor-with-worker.test.ts.snap +1326 -0
  152. package/examples/__snapshots__/cloud-run-no-cpu-throttling.test.ts.snap +1342 -0
  153. package/examples/__snapshots__/cloud-run-no-service.test.ts.snap +1446 -0
  154. package/examples/__snapshots__/cloud-run-non-public.test.ts.snap +1342 -0
  155. package/examples/__snapshots__/cloud-run-post-stop-job.test.ts.snap +1359 -0
  156. package/examples/__snapshots__/cloud-run-service-custom-vpc.test.ts.snap +1342 -0
  157. package/examples/__snapshots__/cloud-run-service-gen2.test.ts.snap +1342 -0
  158. package/examples/__snapshots__/cloud-run-service-increase-timout.test.ts.snap +1342 -0
  159. package/examples/__snapshots__/cloud-run-service-with-volumes.test.ts.snap +1410 -0
  160. package/examples/__snapshots__/cloud-run-storybook.test.ts.snap +1226 -0
  161. package/examples/__snapshots__/cloud-run-with-ngnix.test.ts.snap +1342 -0
  162. package/examples/__snapshots__/cloud-run-with-sql-reuse-db.test.ts.snap +2826 -0
  163. package/examples/__snapshots__/cloud-run-with-sql.test.ts.snap +1737 -0
  164. package/examples/__snapshots__/cloud-run-with-worker.test.ts.snap +1350 -0
  165. package/examples/__snapshots__/custom-build-job-with-tests.test.ts.snap +1193 -0
  166. package/examples/__snapshots__/custom-build-job.test.ts.snap +1082 -0
  167. package/examples/__snapshots__/custom-deploy.test.ts.snap +1100 -0
  168. package/examples/__snapshots__/custom-envs.test.ts.snap +710 -0
  169. package/examples/__snapshots__/custom-sbom-java.test.ts.snap +1090 -0
  170. package/examples/__snapshots__/git-submodule.test.ts.snap +1343 -0
  171. package/examples/__snapshots__/kubernetes-application-customization.test.ts.snap +1779 -0
  172. package/examples/__snapshots__/kubernetes-with-cloud-sql-legacy.test.ts.snap +1791 -0
  173. package/examples/__snapshots__/kubernetes-with-cloud-sql.test.ts.snap +1799 -0
  174. package/examples/__snapshots__/kubernetes-with-jobs.test.ts.snap +3353 -0
  175. package/examples/__snapshots__/kubernetes-with-mongodb.test.ts.snap +1903 -0
  176. package/examples/__snapshots__/local-dot-env.test.ts.snap +1342 -0
  177. package/examples/__snapshots__/meteor-kubernetes.test.ts.snap +1840 -0
  178. package/examples/__snapshots__/multiline-var.test.ts.snap +3377 -0
  179. package/examples/__snapshots__/native-app.test.ts.snap +2158 -0
  180. package/examples/__snapshots__/node-build-with-custom-image.test.ts.snap +1342 -0
  181. package/examples/__snapshots__/node-build-with-docker-additions.test.ts.snap +1350 -0
  182. package/examples/__snapshots__/rails-k8s-with-worker-dockerfile.test.ts.snap +1487 -0
  183. package/examples/__snapshots__/rails-k8s-with-worker.test.ts.snap +1471 -0
  184. package/examples/__snapshots__/wait-for-other-deploy.test.ts.snap +1268 -0
  185. package/examples/__snapshots__/workspace-api-www-custom-cache.test.ts.snap +2374 -0
  186. package/examples/__snapshots__/workspace-api-www.test.ts.snap +2354 -0
  187. package/examples/__utils__/helpers.ts +14 -1
  188. package/examples/cloud-run-http2.test.ts +11 -0
  189. package/examples/cloud-run-http2.ts +29 -0
  190. package/examples/cloud-run-memory-limit.test.ts +11 -0
  191. package/examples/cloud-run-memory-limit.ts +6 -4
  192. package/examples/cloud-run-meteor-with-worker.test.ts +11 -0
  193. package/examples/cloud-run-meteor-with-worker.ts +6 -4
  194. package/examples/cloud-run-no-cpu-throttling.test.ts +11 -0
  195. package/examples/cloud-run-no-cpu-throttling.ts +6 -4
  196. package/examples/cloud-run-no-service.test.ts +11 -0
  197. package/examples/cloud-run-no-service.ts +5 -4
  198. package/examples/cloud-run-non-public.test.ts +11 -0
  199. package/examples/cloud-run-non-public.ts +5 -4
  200. package/examples/cloud-run-post-stop-job.test.ts +11 -0
  201. package/examples/cloud-run-post-stop-job.ts +6 -4
  202. package/examples/cloud-run-service-custom-vpc.test.ts +11 -0
  203. package/examples/cloud-run-service-custom-vpc.ts +30 -0
  204. package/examples/cloud-run-service-gen2.test.ts +11 -0
  205. package/examples/cloud-run-service-gen2.ts +6 -4
  206. package/examples/cloud-run-service-increase-timout.test.ts +11 -0
  207. package/examples/cloud-run-service-increase-timout.ts +29 -0
  208. package/examples/cloud-run-service-with-volumes.test.ts +11 -0
  209. package/examples/cloud-run-service-with-volumes.ts +6 -4
  210. package/examples/cloud-run-storybook.test.ts +11 -0
  211. package/examples/cloud-run-storybook.ts +14 -5
  212. package/examples/cloud-run-with-ngnix.test.ts +11 -0
  213. package/examples/cloud-run-with-ngnix.ts +10 -5
  214. package/examples/cloud-run-with-sql-reuse-db.test.ts +11 -0
  215. package/examples/cloud-run-with-sql-reuse-db.ts +5 -4
  216. package/examples/cloud-run-with-sql.test.ts +11 -0
  217. package/examples/cloud-run-with-sql.ts +7 -20
  218. package/examples/cloud-run-with-worker.test.ts +11 -0
  219. package/examples/cloud-run-with-worker.ts +6 -4
  220. package/examples/custom-build-job-with-tests.test.ts +11 -0
  221. package/examples/custom-build-job-with-tests.ts +5 -4
  222. package/examples/custom-build-job.test.ts +11 -0
  223. package/examples/custom-build-job.ts +5 -4
  224. package/examples/custom-deploy.test.ts +11 -0
  225. package/examples/custom-deploy.ts +5 -4
  226. package/examples/custom-envs.test.ts +11 -0
  227. package/examples/custom-envs.ts +5 -4
  228. package/examples/custom-sbom-java.test.ts +11 -0
  229. package/examples/custom-sbom-java.ts +10 -6
  230. package/examples/git-submodule.test.ts +11 -0
  231. package/examples/git-submodule.ts +30 -0
  232. package/examples/kubernetes-application-customization.test.ts +11 -0
  233. package/examples/kubernetes-application-customization.ts +6 -4
  234. package/examples/kubernetes-with-cloud-sql-legacy.test.ts +11 -0
  235. package/examples/kubernetes-with-cloud-sql-legacy.ts +6 -4
  236. package/examples/kubernetes-with-cloud-sql.test.ts +11 -0
  237. package/examples/kubernetes-with-cloud-sql.ts +6 -4
  238. package/examples/kubernetes-with-jobs.test.ts +11 -0
  239. package/examples/kubernetes-with-jobs.ts +6 -4
  240. package/examples/kubernetes-with-mongodb.test.ts +11 -0
  241. package/examples/kubernetes-with-mongodb.ts +6 -4
  242. package/examples/local-dot-env.test.ts +11 -0
  243. package/examples/local-dot-env.ts +6 -4
  244. package/examples/meteor-kubernetes.test.ts +11 -0
  245. package/examples/meteor-kubernetes.ts +3 -4
  246. package/examples/multiline-var.test.ts +11 -0
  247. package/examples/multiline-var.ts +5 -4
  248. package/examples/native-app.test.ts +11 -0
  249. package/examples/native-app.ts +12 -10
  250. package/examples/node-build-with-custom-image.test.ts +11 -0
  251. package/examples/node-build-with-custom-image.ts +5 -4
  252. package/examples/node-build-with-docker-additions.test.ts +11 -0
  253. package/examples/node-build-with-docker-additions.ts +5 -4
  254. package/examples/rails-k8s-with-worker-dockerfile.test.ts +9 -0
  255. package/examples/rails-k8s-with-worker.test.ts +11 -0
  256. package/examples/rails-k8s-with-worker.ts +4 -10
  257. package/examples/wait-for-other-deploy.test.ts +11 -0
  258. package/examples/wait-for-other-deploy.ts +5 -4
  259. package/examples/workspace-api-www-custom-cache.test.ts +11 -0
  260. package/examples/workspace-api-www-custom-cache.ts +51 -0
  261. package/examples/workspace-api-www.test.ts +11 -0
  262. package/examples/workspace-api-www.ts +45 -0
  263. package/package.json +10 -6
  264. package/scripts/bundle +1 -1
  265. package/scripts/generate-examples-test.ts +91 -0
  266. package/scripts/tsconfig.json +7 -0
  267. package/src/build/artifacts/createBuildJobArtifact.ts +61 -0
  268. package/src/build/base/constants.ts +1 -1
  269. package/src/build/base/createAppBuildJob.ts +37 -26
  270. package/src/build/base/createBuildJobDefinition.ts +37 -0
  271. package/src/build/base/index.ts +35 -6
  272. package/src/build/base/writeBuildInfo.ts +1 -1
  273. package/src/build/base/writeDotEnv.ts +17 -3
  274. package/src/build/cache/createJobCache.ts +82 -0
  275. package/src/build/cache/getAllCacheConfigsFromConfig.ts +26 -0
  276. package/src/build/cache/transformLegacyJobCache.ts +14 -0
  277. package/src/build/custom/__tests__/testJob.test.ts +9 -12
  278. package/src/build/custom/buildJob.ts +5 -28
  279. package/src/build/custom/testJob.ts +14 -13
  280. package/src/build/docker.ts +40 -28
  281. package/src/build/index.ts +39 -7
  282. package/src/build/node/buildJob.ts +62 -68
  283. package/src/build/node/cache.ts +55 -32
  284. package/src/build/node/constants.ts +2 -2
  285. package/src/build/node/index.ts +4 -2
  286. package/src/build/node/meteor.ts +12 -25
  287. package/src/build/node/testJob.ts +40 -24
  288. package/src/build/node/yarn.ts +12 -10
  289. package/src/build/rails/build.ts +17 -7
  290. package/src/build/rails/test.ts +17 -9
  291. package/src/build/sbom.ts +12 -7
  292. package/src/build/types.ts +140 -6
  293. package/src/catladder-gitlab.ts +11 -6
  294. package/src/config/__tests__/__snapshots__/getAllEnvs.test.ts.snap +31 -0
  295. package/src/config/__tests__/__snapshots__/getAllEnvsInAllComponents.test.ts.snap +15 -0
  296. package/src/config/__tests__/getAllEnvs.test.ts +71 -0
  297. package/src/config/__tests__/getAllEnvsInAllComponents.test.ts +63 -0
  298. package/src/config/readConfig.ts +12 -17
  299. package/src/context/createAllComponentsContext.ts +31 -0
  300. package/src/context/createComponentContext.ts +135 -0
  301. package/src/context/createWorkspaceContext.ts +56 -0
  302. package/src/context/getBuildInfoVariables.ts +26 -30
  303. package/src/context/getEnvironmentContext.ts +2 -2
  304. package/src/context/getEnvironmentVariables.ts +12 -7
  305. package/src/context/getLabels.ts +3 -3
  306. package/src/context/index.ts +1 -76
  307. package/src/deploy/base/deploy.ts +46 -32
  308. package/src/deploy/base/index.ts +8 -3
  309. package/src/deploy/base/rollback.ts +1 -4
  310. package/src/deploy/base/stop.ts +1 -4
  311. package/src/deploy/base/variables.ts +1 -1
  312. package/src/deploy/cloudRun/artifactsRegistry.ts +8 -14
  313. package/src/deploy/cloudRun/cloudRunRevisions.ts +3 -5
  314. package/src/deploy/cloudRun/createJobs/cloudRunJobs.ts +109 -74
  315. package/src/deploy/cloudRun/createJobs/cloudRunServices.ts +5 -1
  316. package/src/deploy/cloudRun/createJobs/common.ts +2 -2
  317. package/src/deploy/cloudRun/createJobs/index.ts +1 -4
  318. package/src/deploy/cloudRun/index.ts +68 -67
  319. package/src/deploy/custom/deployJob.ts +9 -8
  320. package/src/deploy/custom/index.ts +2 -2
  321. package/src/deploy/dockerTag/deployJob.ts +2 -5
  322. package/src/deploy/dockerTag/index.ts +8 -7
  323. package/src/deploy/index.ts +11 -9
  324. package/src/deploy/kubernetes/additionalSecretKeys.ts +3 -1
  325. package/src/deploy/kubernetes/cloudSql/index.ts +8 -5
  326. package/src/deploy/kubernetes/deployJob.ts +3 -6
  327. package/src/deploy/kubernetes/index.ts +42 -41
  328. package/src/deploy/kubernetes/kubeEnv.ts +1 -1
  329. package/src/deploy/kubernetes/kubeValues.ts +3 -3
  330. package/src/deploy/kubernetes/mongodb.ts +6 -6
  331. package/src/deploy/sbom.ts +11 -7
  332. package/src/deploy/types/custom.ts +3 -7
  333. package/src/deploy/types/googleCloudRun.ts +29 -0
  334. package/src/deploy/types/index.ts +2 -2
  335. package/src/deploy/utils.ts +1 -1
  336. package/src/packageInfos.ts +7 -3
  337. package/src/pipeline/__tests__/__snapshots__/getPipelineStages.test.ts.snap +69 -0
  338. package/src/pipeline/__tests__/getPipelineStages.test.ts +63 -0
  339. package/src/pipeline/createAllJobs.ts +61 -41
  340. package/src/pipeline/createChildPipeline.ts +2 -0
  341. package/src/pipeline/createJobsForComponent.ts +7 -31
  342. package/src/pipeline/createJobsForWorkspace.ts +12 -0
  343. package/src/pipeline/createMainPipeline.ts +43 -23
  344. package/src/pipeline/generatePipelineFiles.ts +63 -25
  345. package/src/pipeline/getPipelineStages.ts +6 -5
  346. package/src/pipeline/gitlab/createGitlabJobs.ts +276 -116
  347. package/src/pipeline/gitlab/createGitlabPipeline.ts +5 -1
  348. package/src/pipeline/gitlab/gitlabReleaseJobs.ts +5 -0
  349. package/src/pipeline/gitlab/sortGitLabJobDefProps.ts +59 -0
  350. package/src/pipeline/packageManager.ts +27 -11
  351. package/src/pipeline/yarn/yarnUtils.ts +9 -6
  352. package/src/types/config.ts +12 -2
  353. package/src/types/context.ts +124 -20
  354. package/src/types/environmentContext.ts +6 -7
  355. package/src/types/gitlab-types.ts +2 -2
  356. package/src/types/index.ts +1 -0
  357. package/src/types/jobDefinition.ts +34 -0
  358. package/src/types/jobs.ts +8 -9
  359. package/src/utils/index.ts +4 -1
  360. package/src/utils/jsonParse.ts +7 -0
  361. package/src/utils/removeUndefined.ts +4 -0
  362. package/src/utils/writeFiles.ts +14 -1
  363. package/examples/__snapshots__/cloud-run-memory-limit.ts.snap +0 -1971
  364. package/examples/__snapshots__/cloud-run-meteor-with-worker.ts.snap +0 -1939
  365. package/examples/__snapshots__/cloud-run-no-cpu-throttling.ts.snap +0 -1971
  366. package/examples/__snapshots__/cloud-run-no-service.ts.snap +0 -2023
  367. package/examples/__snapshots__/cloud-run-non-public.ts.snap +0 -1971
  368. package/examples/__snapshots__/cloud-run-post-stop-job.ts.snap +0 -1982
  369. package/examples/__snapshots__/cloud-run-service-gen2.ts.snap +0 -1971
  370. package/examples/__snapshots__/cloud-run-service-with-volumes.ts.snap +0 -2015
  371. package/examples/__snapshots__/cloud-run-storybook.ts.snap +0 -1687
  372. package/examples/__snapshots__/cloud-run-with-ngnix.ts.snap +0 -1971
  373. package/examples/__snapshots__/cloud-run-with-sql-reuse-db.ts.snap +0 -3947
  374. package/examples/__snapshots__/cloud-run-with-sql.ts.snap +0 -3946
  375. package/examples/__snapshots__/cloud-run-with-worker.ts.snap +0 -1979
  376. package/examples/__snapshots__/custom-build-job-with-tests.ts.snap +0 -1795
  377. package/examples/__snapshots__/custom-build-job.ts.snap +0 -1495
  378. package/examples/__snapshots__/custom-deploy.ts.snap +0 -1733
  379. package/examples/__snapshots__/custom-envs.ts.snap +0 -1181
  380. package/examples/__snapshots__/custom-sbom-java.ts.snap +0 -1503
  381. package/examples/__snapshots__/kubernetes-application-customization.ts.snap +0 -2462
  382. package/examples/__snapshots__/kubernetes-with-cloud-sql-legacy.ts.snap +0 -2474
  383. package/examples/__snapshots__/kubernetes-with-cloud-sql.ts.snap +0 -2482
  384. package/examples/__snapshots__/kubernetes-with-jobs.ts.snap +0 -4570
  385. package/examples/__snapshots__/kubernetes-with-mongodb.ts.snap +0 -2586
  386. package/examples/__snapshots__/local-dot-env.ts.snap +0 -1971
  387. package/examples/__snapshots__/meteor-kubernetes.ts.snap +0 -2507
  388. package/examples/__snapshots__/multiline-var.ts.snap +0 -4500
  389. package/examples/__snapshots__/native-app.ts.snap +0 -3171
  390. package/examples/__snapshots__/node-build-with-custom-image.ts.snap +0 -1971
  391. package/examples/__snapshots__/node-build-with-docker-additions.ts.snap +0 -1979
  392. package/examples/__snapshots__/rails-k8s-with-worker.ts.snap +0 -4029
  393. package/examples/__snapshots__/wait-for-other-deploy.ts.snap +0 -2117
package/README.md CHANGED
@@ -1,3 +1,17 @@
1
1
  ## @catladder/pipeline 🐱 🔧
2
2
 
3
- See [@catladder/cli](https://www.npmjs.com/package/@catladder/cli).
3
+ Panter workflow for cloud CI/CD and DevOps.
4
+
5
+ **It just works™**
6
+
7
+ ## Getting started
8
+
9
+ [See the documentation][docs-getting-started].
10
+
11
+ [docs-getting-started]: https://catladder.git.panter.biz/catladder/docs/getting_started "Getting started"
12
+
13
+ ## Contribution
14
+
15
+ [See contribution guide][docs-contribute].
16
+
17
+ [docs-contribute]: https://catladder.git.panter.biz/catladder/docs/contribute "Contribution guide"
@@ -0,0 +1,3 @@
1
+ import { type Context } from "../../types";
2
+ import type { CatladderJob } from "../../types/jobs";
3
+ export declare const createBuildJobArtifacts: (context: Context) => CatladderJob["artifacts"];
@@ -0,0 +1,97 @@
1
+ "use strict";
2
+
3
+ var __assign = this && this.__assign || function () {
4
+ __assign = Object.assign || function (t) {
5
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
6
+ s = arguments[i];
7
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __read = this && this.__read || function (o, n) {
14
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
15
+ if (!m) return o;
16
+ var i = m.call(o),
17
+ r,
18
+ ar = [],
19
+ e;
20
+ try {
21
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
22
+ } catch (error) {
23
+ e = {
24
+ error: error
25
+ };
26
+ } finally {
27
+ try {
28
+ if (r && !r.done && (m = i["return"])) m.call(i);
29
+ } finally {
30
+ if (e) throw e.error;
31
+ }
32
+ }
33
+ return ar;
34
+ };
35
+ var __spreadArray = this && this.__spreadArray || function (to, from, pack) {
36
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
37
+ if (ar || !(i in from)) {
38
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
39
+ ar[i] = from[i];
40
+ }
41
+ }
42
+ return to.concat(ar || Array.prototype.slice.call(from));
43
+ };
44
+ Object.defineProperty(exports, "__esModule", {
45
+ value: true
46
+ });
47
+ exports.createBuildJobArtifacts = void 0;
48
+ var path_1 = require("path");
49
+ var types_1 = require("../../types");
50
+ var lodash_1 = require("lodash");
51
+ var writeDotEnv_1 = require("../base/writeDotEnv");
52
+ var createBuildJobArtifacts = function (context) {
53
+ var _a, _b;
54
+ var paths = context.type === "workspace" ? context.components.flatMap(function (c) {
55
+ return getArtifactsPathForComponent(c);
56
+ }) : getArtifactsPathForComponent(context, ["__build_info.json"]);
57
+ // esxclude .env files if generated
58
+ var exclude = context.type === "workspace" ? context.components.flatMap(function (c) {
59
+ return getDotEnvPathsForComponent(c);
60
+ }) : getDotEnvPathsForComponent(context);
61
+ return __assign(__assign({
62
+ paths: (0, lodash_1.uniq)(paths).sort(function (a, b) {
63
+ return a.localeCompare(b);
64
+ })
65
+ }, exclude.length > 0 ? {
66
+ exclude: exclude
67
+ } : {}), {
68
+ expire_in: "1 day",
69
+ when: "always",
70
+ reports:
71
+ // TODO: support for junit reports in other builds
72
+ context.type === "component" && (0, types_1.componentContextIsStandaloneBuild)(context) ? {
73
+ junit: (_b = (_a = context.build.config.artifactsReports) === null || _a === void 0 ? void 0 : _a.junit) === null || _b === void 0 ? void 0 : _b.map(function (p) {
74
+ return (0, path_1.join)(context.build.dir, p);
75
+ })
76
+ } : {}
77
+ });
78
+ };
79
+ exports.createBuildJobArtifacts = createBuildJobArtifacts;
80
+ var getArtifactsPathForComponent = function (c, additionalPaths) {
81
+ var _a, _b;
82
+ return (_b = __spreadArray(__spreadArray([], __read((_a = c.build.config.artifactsPaths) !== null && _a !== void 0 ? _a : []), false), __read(additionalPaths !== null && additionalPaths !== void 0 ? additionalPaths : []), false)) === null || _b === void 0 ? void 0 : _b.flatMap(function (artifact) {
83
+ return c.build
84
+ // in theory, we only need "direct",
85
+ // but in some cases project may have packages in the workspace that create build artifacts, which aren't components
86
+ // this highly depends on the build tool. To be safe, we get all
87
+ .getComponentDirs("all").flatMap(function (cDir) {
88
+ return (0, path_1.join)(cDir, artifact);
89
+ });
90
+ });
91
+ };
92
+ var getDotEnvPathsForComponent = function (c) {
93
+ if ((0, writeDotEnv_1.componentContextNeedsBuildTimeDotEnv)(c)) {
94
+ return [(0, path_1.join)(c.build.dir, ".env")];
95
+ }
96
+ return [];
97
+ };
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.RUNNER_BUILD_RESOURCE_VARIABLES = exports.APP_BUILD_JOB_NAME = void 0;
7
7
  exports.APP_BUILD_JOB_NAME = "🔨 app";
8
8
  exports.RUNNER_BUILD_RESOURCE_VARIABLES = {
9
- KUBERNETES_CPU_REQUEST: "0.5",
9
+ KUBERNETES_CPU_REQUEST: "0.45",
10
10
  KUBERNETES_MEMORY_REQUEST: "1Gi",
11
11
  KUBERNETES_MEMORY_LIMIT: "4Gi"
12
12
  };
@@ -1,9 +1,10 @@
1
- import type { ComponentContext } from "../..";
1
+ import type { BuildContextStandalone, ComponentContext, WorkspaceContext } from "../..";
2
+ import type { AppBuildJobDefinition } from "../../types/jobDefinition";
2
3
  import type { CatladderJob } from "../../types/jobs";
3
- export type AppBuildJobDefinition = Partial<CatladderJob>;
4
- export declare const createAppBuildJob: (context: ComponentContext, {
4
+ export declare const createAppBuildJob: (context: ComponentContext<BuildContextStandalone> | WorkspaceContext, {
5
5
  script,
6
6
  variables,
7
7
  runnerVariables,
8
+ cache,
8
9
  ...def
9
10
  }: AppBuildJobDefinition) => CatladderJob;
@@ -54,38 +54,36 @@ Object.defineProperty(exports, "__esModule", {
54
54
  });
55
55
  exports.createAppBuildJob = void 0;
56
56
  var lodash_1 = require("lodash");
57
- var path_1 = require("path");
58
57
  var __1 = require("../..");
59
58
  var utils_1 = require("../../utils");
59
+ var createBuildJobArtifact_1 = require("../artifacts/createBuildJobArtifact");
60
+ var createJobCache_1 = require("../cache/createJobCache");
60
61
  var yarn_1 = require("../node/yarn");
61
62
  var constants_1 = require("./constants");
62
63
  var writeBuildInfo_1 = require("./writeBuildInfo");
63
64
  var writeDotEnv_1 = require("./writeDotEnv");
64
65
  var createAppBuildJob = function (context, _a) {
65
- var _b, _c, _d, _e, _f;
66
+ var _b, _c;
66
67
  var script = _a.script,
67
68
  variables = _a.variables,
68
69
  runnerVariables = _a.runnerVariables,
69
- def = __rest(_a, ["script", "variables", "runnerVariables"]);
70
+ cache = _a.cache,
71
+ def = __rest(_a, ["script", "variables", "runnerVariables", "cache"]);
70
72
  return (0, lodash_1.merge)({
71
73
  name: constants_1.APP_BUILD_JOB_NAME,
72
74
  envMode: "jobPerEnv",
73
75
  stage: "build",
74
76
  image: (0, __1.getRunnerImage)("jobs-default"),
75
77
  needs: [],
76
- cache: [],
77
- variables: __assign(__assign(__assign(__assign({}, variables !== null && variables !== void 0 ? variables : {}), context.environment.envVars), context.environment.jobOnlyVars.build.envVars), (_b = context.componentConfig.build.extraVars) !== null && _b !== void 0 ? _b : {}),
78
- runnerVariables: __assign(__assign(__assign({}, constants_1.RUNNER_BUILD_RESOURCE_VARIABLES), runnerVariables !== null && runnerVariables !== void 0 ? runnerVariables : {}), (_c = context.componentConfig.build.runnerVariables) !== null && _c !== void 0 ? _c : {}),
79
- script: __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], __read(context.componentConfig.dotEnv === true // don't build when set to `local`
80
- ? (0, writeDotEnv_1.writeDotEnv)(context) : []), false), __read((0, writeBuildInfo_1.writeBuildInfo)(context)), false), __read((0, yarn_1.ensureNodeVersion)(context.buildContext)), false), ["cd ".concat(context.componentConfig.dir)], false), __read((_d = (0, utils_1.ensureArray)(script)) !== null && _d !== void 0 ? _d : []), false),
81
- artifacts: {
82
- paths: [(0, path_1.join)(context.componentConfig.dir, "__build_info.json")],
83
- reports: {
84
- junit: (_f = (_e = context.componentConfig.build.artifactsReports) === null || _e === void 0 ? void 0 : _e.junit) === null || _f === void 0 ? void 0 : _f.map(function (p) {
85
- return (0, path_1.join)(context.componentConfig.dir, p);
86
- })
87
- }
88
- }
78
+ cache: cache ? (0, createJobCache_1.createJobCacheFromCacheConfigs)(context, cache) : undefined,
79
+ variables: __assign(__assign({}, variables !== null && variables !== void 0 ? variables : {}), context.type === "component" ? __assign(__assign(__assign({}, context.environment.envVars), context.environment.jobOnlyVars.build.envVars), (_b = context.build.config.extraVars) !== null && _b !== void 0 ? _b : {}) : {}),
80
+ runnerVariables: __assign(__assign(__assign({}, constants_1.RUNNER_BUILD_RESOURCE_VARIABLES), runnerVariables !== null && runnerVariables !== void 0 ? runnerVariables : {}), (_c = context.build.config.runnerVariables) !== null && _c !== void 0 ? _c : {}),
81
+ script: __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], __read(context.type === "component" ? (0, writeDotEnv_1.componentContextNeedsBuildTimeDotEnv)(context) ? (0, writeDotEnv_1.writeDotEnv)(context) : [] : context.type === "workspace" ? context.components.filter(function (c) {
82
+ return (0, writeDotEnv_1.componentContextNeedsBuildTimeDotEnv)(c);
83
+ }).flatMap(function (c) {
84
+ return (0, writeDotEnv_1.writeDotEnv)(c);
85
+ }) : []), false), __read(context.type === "component" ? (0, writeBuildInfo_1.writeBuildInfo)(context) : []), false), __read((0, yarn_1.ensureNodeVersion)(context)), false), ["cd ".concat(context.build.dir)], false), __read((0, utils_1.ensureArray)(script)), false),
86
+ artifacts: (0, createBuildJobArtifact_1.createBuildJobArtifacts)(context)
89
87
  }, def);
90
88
  };
91
89
  exports.createAppBuildJob = createAppBuildJob;
@@ -0,0 +1,6 @@
1
+ import type { BuildConfigStandalone, WorkspaceBuildConfig } from "..";
2
+ import type { AppBuildJobDefinition, Context } from "../../types";
3
+ export declare const createBuildJobDefinition: (context: Context, buildConfig: BuildConfigStandalone | WorkspaceBuildConfig, customize?: Pick<AppBuildJobDefinition, "cache"> & {
4
+ prescript?: string[];
5
+ postscript?: string[];
6
+ }) => AppBuildJobDefinition | undefined;
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+
3
+ var __read = this && this.__read || function (o, n) {
4
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
5
+ if (!m) return o;
6
+ var i = m.call(o),
7
+ r,
8
+ ar = [],
9
+ e;
10
+ try {
11
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
12
+ } catch (error) {
13
+ e = {
14
+ error: error
15
+ };
16
+ } finally {
17
+ try {
18
+ if (r && !r.done && (m = i["return"])) m.call(i);
19
+ } finally {
20
+ if (e) throw e.error;
21
+ }
22
+ }
23
+ return ar;
24
+ };
25
+ var __spreadArray = this && this.__spreadArray || function (to, from, pack) {
26
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
27
+ if (ar || !(i in from)) {
28
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
29
+ ar[i] = from[i];
30
+ }
31
+ }
32
+ return to.concat(ar || Array.prototype.slice.call(from));
33
+ };
34
+ Object.defineProperty(exports, "__esModule", {
35
+ value: true
36
+ });
37
+ exports.createBuildJobDefinition = void 0;
38
+ var runner_1 = require("../../runner");
39
+ var utils_1 = require("../../utils");
40
+ var getAllCacheConfigsFromConfig_1 = require("../cache/getAllCacheConfigsFromConfig");
41
+ var constants_1 = require("../node/constants");
42
+ var createBuildJobDefinition = function (context, buildConfig, customize) {
43
+ var _a, _b, _c, _d;
44
+ if (customize === void 0) {
45
+ customize = {};
46
+ }
47
+ if (buildConfig.buildCommand === null) return undefined;
48
+ var defaultImage = (0, runner_1.getRunnerImage)("jobs-default");
49
+ return {
50
+ image: (_a = buildConfig.jobImage) !== null && _a !== void 0 ? _a : defaultImage,
51
+ runnerVariables: constants_1.NODE_RUNNER_BUILD_VARIABLES,
52
+ cache: __spreadArray(__spreadArray([], __read((_b = customize.cache) !== null && _b !== void 0 ? _b : []), false), __read((0, getAllCacheConfigsFromConfig_1.getAllCacheConfigsFromConfig)(context, buildConfig)), false),
53
+ services: "jobServices" in buildConfig ? buildConfig.jobServices : undefined,
54
+ script: __spreadArray(__spreadArray(__spreadArray([], __read((_c = customize.prescript) !== null && _c !== void 0 ? _c : []), false), __read((0, utils_1.ensureArray)(buildConfig.buildCommand)), false), __read((_d = customize.postscript) !== null && _d !== void 0 ? _d : []), false),
55
+ jobTags: buildConfig.jobTags
56
+ };
57
+ };
58
+ exports.createBuildJobDefinition = createBuildJobDefinition;
@@ -1,8 +1,11 @@
1
- import type { ComponentContext } from "../../types/context";
1
+ import type { WorkspaceContext } from "../../types/context";
2
+ import { type ComponentContext } from "../../types/context";
3
+ import type { AppBuildJobDefinition, DockerBuildJobDefinition } from "../../types/jobDefinition";
2
4
  import type { CatladderJob } from "../../types/jobs";
3
- import type { DockerBuildJobDefinition } from "../docker";
4
- import type { AppBuildJobDefinition } from "./createAppBuildJob";
5
- export declare const createBuildJobs: (context: ComponentContext, definitions: {
5
+ export declare const createComponentBuildJobs: (context: ComponentContext, definitions: {
6
6
  appBuild?: AppBuildJobDefinition;
7
7
  dockerBuild: DockerBuildJobDefinition;
8
+ }) => CatladderJob[];
9
+ export declare const createWorkspaceBuildJobs: (context: WorkspaceContext, definitions: {
10
+ appBuild?: AppBuildJobDefinition;
8
11
  }) => CatladderJob[];
@@ -44,16 +44,25 @@ var __spreadArray = this && this.__spreadArray || function (to, from, pack) {
44
44
  Object.defineProperty(exports, "__esModule", {
45
45
  value: true
46
46
  });
47
- exports.createBuildJobs = void 0;
47
+ exports.createWorkspaceBuildJobs = exports.createComponentBuildJobs = void 0;
48
48
  var sbom_1 = require("../../deploy/sbom");
49
+ var context_1 = require("../../types/context");
49
50
  var docker_1 = require("../docker");
50
51
  var sbom_2 = require("../sbom");
51
52
  var constants_1 = require("./constants");
52
53
  var createAppBuildJob_1 = require("./createAppBuildJob");
53
- var createBuildJobs = function (context, definitions) {
54
+ var createComponentBuildJobs = function (context, definitions) {
54
55
  var _a;
55
- return __spreadArray(__spreadArray(__spreadArray([], __read(definitions.appBuild ? [(0, createAppBuildJob_1.createAppBuildJob)(context, definitions.appBuild)] : []), false), __read((0, docker_1.requiresDockerBuild)(context) ? [(0, docker_1.createDockerBuildJobBase)(context, __assign(__assign({}, definitions.dockerBuild), {
56
- needs: __spreadArray(__spreadArray([], __read((_a = definitions.dockerBuild.needs) !== null && _a !== void 0 ? _a : []), false), __read(definitions.appBuild ? [constants_1.APP_BUILD_JOB_NAME] : []), false)
56
+ return __spreadArray(__spreadArray(__spreadArray([], __read(definitions.appBuild && (0, context_1.componentContextIsStandaloneBuild)(context) ? [(0, createAppBuildJob_1.createAppBuildJob)(context, definitions.appBuild)] : []), false), __read((0, docker_1.requiresDockerBuild)(context) ? [(0, docker_1.createDockerBuildJobBase)(context, __assign(__assign({}, definitions.dockerBuild), {
57
+ needs: __spreadArray(__spreadArray([], __read((_a = definitions.dockerBuild.needs) !== null && _a !== void 0 ? _a : []), false), __read(definitions.appBuild && (0, context_1.componentContextIsStandaloneBuild)(context) ? [constants_1.APP_BUILD_JOB_NAME] : (0, context_1.componentContextHasWorkspaceBuild)(context) ? [{
58
+ job: constants_1.APP_BUILD_JOB_NAME,
59
+ artifacts: true,
60
+ workspaceName: context.build.workspaceName
61
+ }] : []), false)
57
62
  }))] : []), false), __read((0, sbom_1.sbomDeactivated)(context) ? [] : [(0, sbom_2.createSbomBuildJob)(context)]), false);
58
63
  };
59
- exports.createBuildJobs = createBuildJobs;
64
+ exports.createComponentBuildJobs = createComponentBuildJobs;
65
+ var createWorkspaceBuildJobs = function (context, definitions) {
66
+ return definitions.appBuild ? [(0, createAppBuildJob_1.createAppBuildJob)(context, definitions.appBuild)] : [];
67
+ };
68
+ exports.createWorkspaceBuildJobs = createWorkspaceBuildJobs;
@@ -5,6 +5,6 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.writeBuildInfo = void 0;
7
7
  var writeBuildInfo = function (context) {
8
- return ["echo '{\"id\":\"".concat(context.environment.envVars.BUILD_INFO_BUILD_ID, "\",\"time\":\"").concat(context.environment.envVars.BUILD_INFO_BUILD_TIME, "\"}' > ").concat(context.componentConfig.dir, "/__build_info.json")];
8
+ return ["echo '{\"id\":\"".concat(context.environment.envVars.BUILD_INFO_BUILD_ID, "\",\"time\":\"").concat(context.environment.envVars.BUILD_INFO_BUILD_TIME, "\"}' > ").concat(context.build.dir, "/__build_info.json")];
9
9
  };
10
10
  exports.writeBuildInfo = writeBuildInfo;
@@ -4,4 +4,5 @@ import type { ComponentContext } from "../../types";
4
4
  * @param context
5
5
  * @returns
6
6
  */
7
- export declare const writeDotEnv: (context: ComponentContext) => string[];
7
+ export declare const writeDotEnv: (context: ComponentContext) => string[];
8
+ export declare const componentContextNeedsBuildTimeDotEnv: (context: ComponentContext) => boolean;
@@ -25,8 +25,10 @@ var __read = this && this.__read || function (o, n) {
25
25
  Object.defineProperty(exports, "__esModule", {
26
26
  value: true
27
27
  });
28
- exports.writeDotEnv = void 0;
28
+ exports.componentContextNeedsBuildTimeDotEnv = exports.writeDotEnv = void 0;
29
29
  var lodash_1 = require("lodash");
30
+ var gitlab_1 = require("../../utils/gitlab");
31
+ var getBuildInfoVariables_1 = require("../../context/getBuildInfoVariables");
30
32
  /**
31
33
  * writes a .env file in the components folder
32
34
  * @param context
@@ -41,12 +43,24 @@ var writeDotEnv = function (context) {
41
43
  var _b = __read(_a, 2),
42
44
  value = _b[1];
43
45
  return !(0, lodash_1.isNil)(value);
46
+ })
47
+ // filter out build variables, since they may interfer with caching like turbo
48
+ // build variables are rarely used anyway and we may treat them differently in the future
49
+ .filter(function (_a) {
50
+ var _b = __read(_a, 1),
51
+ key = _b[0];
52
+ return !getBuildInfoVariables_1.ALL_BUILD_VARIABLES.includes(key);
44
53
  }).map(function (_a) {
45
54
  var _b = __read(_a, 2),
46
55
  key = _b[0],
47
56
  value = _b[1];
48
57
  return "".concat(key, "=").concat(value === null || value === void 0 ? void 0 : value.toString().replaceAll("\n", "\\n"));
49
58
  }).join("\n");
50
- return ["cat <<EOF > ".concat(context.componentConfig.dir, "/.env\n").concat(keyValueString, "\nEOF")];
59
+ return (0, gitlab_1.collapseableSection)("write-dotenv-" + context.name, "write dot env")(["cat <<EOF > ".concat(context.build.dir, "/.env\n").concat(keyValueString, "\nEOF")]);
60
+ };
61
+ exports.writeDotEnv = writeDotEnv;
62
+ var componentContextNeedsBuildTimeDotEnv = function (context) {
63
+ return context.componentConfig.dotEnv === true; // don't build when set to `local`
51
64
  };
52
- exports.writeDotEnv = writeDotEnv;
65
+
66
+ exports.componentContextNeedsBuildTimeDotEnv = componentContextNeedsBuildTimeDotEnv;
@@ -0,0 +1,7 @@
1
+ import type { CacheConfig } from "..";
2
+ import type { Context } from "../../types";
3
+ import type { CatladderJobCache } from "../../types/jobs";
4
+ import type { WithCacheConfig } from "../types";
5
+ export declare const createJobCacheFromCacheConfigs: (context: Context, caches: CacheConfig[]) => CatladderJobCache[] | undefined;
6
+ /** shortcut, used in some build types */
7
+ export declare const createJobCacheFromConfig: (context: Context, configWithCache: WithCacheConfig) => import("../../types").GitlabJobCache[] | undefined;
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+
3
+ var __assign = this && this.__assign || function () {
4
+ __assign = Object.assign || function (t) {
5
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
6
+ s = arguments[i];
7
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __rest = this && this.__rest || function (s, e) {
14
+ var t = {};
15
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
16
+ if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
17
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
18
+ }
19
+ return t;
20
+ };
21
+ var __read = this && this.__read || function (o, n) {
22
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
23
+ if (!m) return o;
24
+ var i = m.call(o),
25
+ r,
26
+ ar = [],
27
+ e;
28
+ try {
29
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
30
+ } catch (error) {
31
+ e = {
32
+ error: error
33
+ };
34
+ } finally {
35
+ try {
36
+ if (r && !r.done && (m = i["return"])) m.call(i);
37
+ } finally {
38
+ if (e) throw e.error;
39
+ }
40
+ }
41
+ return ar;
42
+ };
43
+ var __spreadArray = this && this.__spreadArray || function (to, from, pack) {
44
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
45
+ if (ar || !(i in from)) {
46
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
47
+ ar[i] = from[i];
48
+ }
49
+ }
50
+ return to.concat(ar || Array.prototype.slice.call(from));
51
+ };
52
+ Object.defineProperty(exports, "__esModule", {
53
+ value: true
54
+ });
55
+ exports.createJobCacheFromConfig = exports.createJobCacheFromCacheConfigs = void 0;
56
+ var path_1 = require("path");
57
+ var getAllCacheConfigsFromConfig_1 = require("./getAllCacheConfigsFromConfig");
58
+ var createJobCacheFromCacheConfigs = function (context, caches) {
59
+ if (caches.length === 0) return undefined;
60
+ var simpleCacheDefs = caches.filter(function (c) {
61
+ return !("key" in c);
62
+ });
63
+ var advancedCacheDefs = caches.filter(function (c) {
64
+ return "key" in c;
65
+ });
66
+ // simple caches are merged together into one. This is because e.g. gitlab has a limit of 4 caches, see https://gitlab.com/gitlab-org/gitlab/-/issues/421962
67
+ var simpleCaches = simpleCacheDefs.length > 0 ? [{
68
+ key: context.name + "-default",
69
+ policy: "pull-push",
70
+ paths: simpleCacheDefs.flatMap(function (c) {
71
+ return c.paths.map(function (p) {
72
+ var _a;
73
+ var baseDir = c.pathMode === "absolute" ? "" : (_a = c.baseDir) !== null && _a !== void 0 ? _a : context.build.dir;
74
+ return (0, path_1.join)(baseDir, p);
75
+ });
76
+ })
77
+ }] : [];
78
+ var advancedCaches = advancedCacheDefs.map(function (_a) {
79
+ var _b;
80
+ var key = _a.key,
81
+ paths = _a.paths,
82
+ policy = _a.policy,
83
+ scope = _a.scope,
84
+ pathMode = _a.pathMode,
85
+ buildDir = _a.buildDir,
86
+ rest = __rest(_a, ["key", "paths", "policy", "scope", "pathMode", "buildDir"]);
87
+ var baseDir = pathMode === "absolute" ? "" : buildDir !== null && buildDir !== void 0 ? buildDir : context.build.dir;
88
+ var transformedKey = scope === "global" ? key : typeof key === "string" ? (scope === "buildDir" // really edge case...
89
+ ? baseDir : context.name) + "-" + key : __assign(__assign({}, key), {
90
+ files: (_b = key.files) === null || _b === void 0 ? void 0 : _b.map(function (f) {
91
+ return pathMode === "absolute" ? f : (0, path_1.join)(baseDir, f);
92
+ })
93
+ });
94
+ return __assign({
95
+ key: transformedKey,
96
+ policy: policy !== null && policy !== void 0 ? policy : "pull-push",
97
+ paths: pathMode === "absolute" ? paths : paths === null || paths === void 0 ? void 0 : paths.map(function (p) {
98
+ return (0, path_1.join)(baseDir, p);
99
+ })
100
+ }, rest);
101
+ });
102
+ return __spreadArray(__spreadArray([], __read(advancedCaches), false), __read(simpleCaches), false);
103
+ };
104
+ exports.createJobCacheFromCacheConfigs = createJobCacheFromCacheConfigs;
105
+ /** shortcut, used in some build types */
106
+ var createJobCacheFromConfig = function (context, configWithCache) {
107
+ return (0, exports.createJobCacheFromCacheConfigs)(context, (0, getAllCacheConfigsFromConfig_1.getAllCacheConfigsFromConfig)(context, configWithCache));
108
+ };
109
+ exports.createJobCacheFromConfig = createJobCacheFromConfig;
@@ -0,0 +1,3 @@
1
+ import type { Context } from "../../types";
2
+ import type { CacheConfig, WithCacheConfig } from "../types";
3
+ export declare const getAllCacheConfigsFromConfig: (context: Context, configWithCache: WithCacheConfig) => CacheConfig[];
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+
3
+ var __assign = this && this.__assign || function () {
4
+ __assign = Object.assign || function (t) {
5
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
6
+ s = arguments[i];
7
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __read = this && this.__read || function (o, n) {
14
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
15
+ if (!m) return o;
16
+ var i = m.call(o),
17
+ r,
18
+ ar = [],
19
+ e;
20
+ try {
21
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
22
+ } catch (error) {
23
+ e = {
24
+ error: error
25
+ };
26
+ } finally {
27
+ try {
28
+ if (r && !r.done && (m = i["return"])) m.call(i);
29
+ } finally {
30
+ if (e) throw e.error;
31
+ }
32
+ }
33
+ return ar;
34
+ };
35
+ var __spreadArray = this && this.__spreadArray || function (to, from, pack) {
36
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
37
+ if (ar || !(i in from)) {
38
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
39
+ ar[i] = from[i];
40
+ }
41
+ }
42
+ return to.concat(ar || Array.prototype.slice.call(from));
43
+ };
44
+ Object.defineProperty(exports, "__esModule", {
45
+ value: true
46
+ });
47
+ exports.getAllCacheConfigsFromConfig = void 0;
48
+ var index_1 = require("../../utils/index");
49
+ var transformLegacyJobCache_1 = require("./transformLegacyJobCache");
50
+ var getAllCacheConfigsFromConfig = function (context, configWithCache) {
51
+ return __spreadArray(__spreadArray(__spreadArray([], __read("jobCache" in configWithCache ? (0, transformLegacyJobCache_1.transformLegacyJobCache)(configWithCache.jobCache) : []), false), __read((0, index_1.ensureArray)(configWithCache.cache)), false), __read(context.type === "workspace" ?
52
+ // also add cache configs of the components of that workspace
53
+ context.components.flatMap(function (componentContext) {
54
+ var _a;
55
+ return (_a = (0, index_1.ensureArray)(componentContext.build.config.cache).map(function (c) {
56
+ return __assign(__assign({}, c), {
57
+ baseDir: componentContext.build.dir
58
+ });
59
+ })) !== null && _a !== void 0 ? _a : [];
60
+ }) : []), false);
61
+ };
62
+ exports.getAllCacheConfigsFromConfig = getAllCacheConfigsFromConfig;
@@ -0,0 +1,3 @@
1
+ import type { CacheConfigAdvanced } from "..";
2
+ import type { CatladderJobCache } from "../../types/jobs";
3
+ export declare function transformLegacyJobCache(jobCache: CatladderJobCache | CatladderJobCache[] | undefined): CacheConfigAdvanced[];
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+
3
+ var __assign = this && this.__assign || function () {
4
+ __assign = Object.assign || function (t) {
5
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
6
+ s = arguments[i];
7
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ Object.defineProperty(exports, "__esModule", {
14
+ value: true
15
+ });
16
+ exports.transformLegacyJobCache = void 0;
17
+ var utils_1 = require("../../utils");
18
+ function transformLegacyJobCache(jobCache) {
19
+ return (0, utils_1.ensureArray)(jobCache).map(function (cache) {
20
+ var _a, _b;
21
+ return __assign(__assign({
22
+ pathMode: "absolute"
23
+ }, cache), {
24
+ key: (_a = cache.key) !== null && _a !== void 0 ? _a : "default",
25
+ paths: (_b = cache.paths) !== null && _b !== void 0 ? _b : []
26
+ });
27
+ });
28
+ }
29
+ exports.transformLegacyJobCache = transformLegacyJobCache;
@@ -5,32 +5,29 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  var testJob_1 = require("../testJob");
7
7
  describe("createCustomTestJobs", function () {
8
- var componentConfig = {
9
- dir: ".",
10
- build: {
11
- type: "custom",
12
- docker: {
13
- type: "custom"
14
- },
15
- jobImage: ""
16
- },
17
- deploy: {}
18
- };
19
8
  var baseContext = {
20
- componentName: "testComponent",
9
+ name: "testComponent",
21
10
  environment: {
22
11
  jobOnlyVars: {
23
12
  build: {}
24
13
  }
25
14
  },
26
- componentConfig: componentConfig
15
+ build: {
16
+ config: {
17
+ type: "custom",
18
+ docker: {
19
+ type: "custom"
20
+ },
21
+ jobImage: ""
22
+ }
23
+ }
27
24
  };
28
25
  it("throws error when not build type custom", function () {
29
- componentConfig.build.type = "node";
26
+ baseContext.build.config.type = "node";
30
27
  expect(function () {
31
28
  return (0, testJob_1.createCustomTestJobs)(baseContext);
32
29
  }).toThrowError("deploy config is not custom");
33
- componentConfig.build.type = "custom";
30
+ baseContext.build.config.type = "custom";
34
31
  });
35
32
  it("returns empty array if no audit, lint, and test definition", function () {
36
33
  var jobs = (0, testJob_1.createCustomTestJobs)(baseContext);