@catladder/pipeline 0.0.0-more-collapse-deeb54d7 → 0.0.0-multiple-gitlab-includes-3df5566d
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +17 -0
- package/dist/bash/BashExpression.d.ts +36 -0
- package/dist/bash/BashExpression.js +114 -0
- package/dist/bash/bashEscape.d.ts +34 -0
- package/dist/bash/bashEscape.js +114 -0
- package/dist/bash/bashExpressionPerPipelineType.d.ts +6 -0
- package/dist/bash/bashExpressionPerPipelineType.js +11 -0
- package/dist/bash/bashYaml.d.ts +10 -0
- package/dist/bash/bashYaml.js +69 -0
- package/dist/bash/getInjectVarsScript.d.ts +2 -0
- package/dist/bash/getInjectVarsScript.js +47 -0
- package/dist/bash/index.d.ts +2 -0
- package/dist/bash/index.js +26 -0
- package/dist/build/artifacts/createBuildJobArtifact.d.ts +3 -0
- package/dist/build/artifacts/createBuildJobArtifact.js +97 -0
- package/dist/build/base/__tests__/createArtifactsConfig.test.js +3 -1
- package/dist/build/base/constants.d.ts +0 -1
- package/dist/build/base/constants.js +4 -3
- package/dist/build/base/createAppBuildJob.d.ts +5 -3
- package/dist/build/base/createAppBuildJob.js +18 -15
- package/dist/build/base/createArtifactsConfig.d.ts +1 -1
- package/dist/build/base/createArtifactsConfig.js +3 -1
- package/dist/build/base/createBuildJobDefinition.d.ts +6 -0
- package/dist/build/base/createBuildJobDefinition.js +58 -0
- package/dist/build/base/index.d.ts +7 -4
- package/dist/build/base/index.js +17 -6
- package/dist/build/base/writeBuildInfo.d.ts +2 -2
- package/dist/build/base/writeBuildInfo.js +4 -3
- package/dist/build/base/writeDotEnv.d.ts +3 -2
- package/dist/build/base/writeDotEnv.js +30 -6
- package/dist/build/cache/createJobCache.d.ts +7 -0
- package/dist/build/cache/createJobCache.js +115 -0
- package/dist/build/cache/getAllCacheConfigsFromConfig.d.ts +3 -0
- package/dist/build/cache/getAllCacheConfigsFromConfig.js +64 -0
- package/dist/build/cache/transformLegacyJobCache.d.ts +3 -0
- package/dist/build/cache/transformLegacyJobCache.js +29 -0
- package/dist/build/custom/__tests__/testJob.test.js +15 -16
- package/dist/build/custom/buildJob.d.ts +2 -2
- package/dist/build/custom/buildJob.js +8 -67
- package/dist/build/custom/index.d.ts +2 -2
- package/dist/build/custom/index.js +3 -1
- package/dist/build/custom/testJob.d.ts +4 -4
- package/dist/build/custom/testJob.js +25 -21
- package/dist/build/docker.d.ts +48 -39
- package/dist/build/docker.js +112 -37
- package/dist/build/index.d.ts +14 -7
- package/dist/build/index.js +44 -16
- package/dist/build/node/buildJob.d.ts +6 -2
- package/dist/build/node/buildJob.js +39 -48
- package/dist/build/node/cache.d.ts +4 -5
- package/dist/build/node/cache.js +18 -23
- package/dist/build/node/constants.d.ts +0 -1
- package/dist/build/node/constants.js +5 -4
- package/dist/build/node/index.d.ts +4 -4
- package/dist/build/node/index.js +3 -1
- package/dist/build/node/meteor.d.ts +2 -2
- package/dist/build/node/meteor.js +10 -12
- package/dist/build/node/testJob.d.ts +3 -2
- package/dist/build/node/testJob.js +29 -19
- package/dist/build/node/yarn.d.ts +3 -2
- package/dist/build/node/yarn.js +13 -13
- package/dist/build/rails/build.d.ts +2 -2
- package/dist/build/rails/build.js +24 -8
- package/dist/build/rails/index.d.ts +2 -2
- package/dist/build/rails/index.js +3 -1
- package/dist/build/rails/test.d.ts +2 -2
- package/dist/build/rails/test.js +20 -12
- package/dist/build/sbom.d.ts +2 -2
- package/dist/build/sbom.js +9 -6
- package/dist/build/types.d.ts +152 -47
- package/dist/build/types.js +10 -2
- package/dist/catladder-gitlab.js +129 -49
- package/dist/config/__tests__/configruedEnvs.test.js +3 -1
- package/dist/config/__tests__/getAllEnvs.test.js +79 -0
- package/dist/config/__tests__/getAllEnvsInAllComponents.test.d.ts +1 -0
- package/dist/config/__tests__/getAllEnvsInAllComponents.test.js +73 -0
- package/dist/config/configruedEnvs.js +3 -1
- package/dist/config/index.js +13 -7
- package/dist/config/readConfig.d.ts +2 -2
- package/dist/config/readConfig.js +191 -40
- package/dist/constants.js +5 -3
- package/dist/context/createAllComponentsContext.d.ts +12 -0
- package/dist/{pipeline/commitInfo/getCommitInfo.js → context/createAllComponentsContext.js} +35 -19
- package/dist/context/createComponentContext.d.ts +11 -0
- package/dist/context/createComponentContext.js +255 -0
- package/dist/context/createWorkspaceContext.d.ts +16 -0
- package/dist/context/createWorkspaceContext.js +173 -0
- package/dist/context/getBuildInfoVariables.d.ts +6 -0
- package/dist/context/getBuildInfoVariables.js +55 -0
- package/dist/context/getEnvConfig.js +5 -2
- package/dist/context/getEnvType.js +3 -1
- package/dist/context/getEnvironment.d.ts +3 -3
- package/dist/context/getEnvironment.js +11 -12
- package/dist/context/getEnvironmentContext.d.ts +7 -3
- package/dist/context/getEnvironmentContext.js +21 -11
- package/dist/context/getEnvironmentVariables.d.ts +22 -5
- package/dist/context/getEnvironmentVariables.js +81 -49
- package/dist/context/getLabels.d.ts +2 -2
- package/dist/context/getLabels.js +9 -7
- package/dist/context/getReviewSlug.d.ts +4 -0
- package/dist/context/getReviewSlug.js +21 -0
- package/dist/context/index.d.ts +2 -4
- package/dist/context/index.js +15 -162
- package/dist/context/transformJobOnlyVars.d.ts +5 -2
- package/dist/context/transformJobOnlyVars.js +4 -2
- package/dist/context/utils/envVars.d.ts +1 -1
- package/dist/context/utils/envVars.js +5 -2
- package/dist/defaults/index.js +3 -1
- package/dist/deploy/base/deploy.d.ts +3 -3
- package/dist/deploy/base/deploy.js +38 -22
- package/dist/deploy/base/index.d.ts +3 -5
- package/dist/deploy/base/index.js +3 -1
- package/dist/deploy/base/rollback.d.ts +3 -3
- package/dist/deploy/base/rollback.js +13 -9
- package/dist/deploy/base/stop.d.ts +3 -3
- package/dist/deploy/base/stop.js +16 -11
- package/dist/deploy/base/types.d.ts +1 -1
- package/dist/deploy/base/types.js +3 -1
- package/dist/deploy/base/variables.d.ts +0 -1
- package/dist/deploy/base/variables.js +4 -3
- package/dist/deploy/cloudRun/artifactsRegistry.d.ts +19 -0
- package/dist/deploy/cloudRun/artifactsRegistry.js +125 -0
- package/dist/deploy/cloudRun/cleanup.d.ts +2 -0
- package/dist/deploy/cloudRun/cleanup.js +53 -0
- package/dist/deploy/cloudRun/cloudRunRevisions.d.ts +2 -0
- package/dist/deploy/cloudRun/cloudRunRevisions.js +62 -0
- package/dist/deploy/cloudRun/createJobs/cloudRunJobs.d.ts +7 -0
- package/dist/deploy/cloudRun/createJobs/cloudRunJobs.js +207 -0
- package/dist/deploy/cloudRun/createJobs/cloudRunServices.d.ts +4 -0
- package/dist/deploy/cloudRun/createJobs/cloudRunServices.js +96 -0
- package/dist/deploy/cloudRun/createJobs/common.d.ts +18 -0
- package/dist/deploy/cloudRun/createJobs/common.js +93 -0
- package/dist/deploy/cloudRun/createJobs/constants.d.ts +1 -0
- package/dist/deploy/cloudRun/createJobs/constants.js +7 -0
- package/dist/deploy/cloudRun/createJobs/getCloudRunDeployScripts.d.ts +2 -0
- package/dist/deploy/cloudRun/createJobs/getCloudRunDeployScripts.js +62 -0
- package/dist/deploy/cloudRun/createJobs/getCloudRunStopScripts.d.ts +2 -0
- package/dist/deploy/cloudRun/createJobs/getCloudRunStopScripts.js +54 -0
- package/dist/deploy/cloudRun/createJobs/index.d.ts +3 -0
- package/dist/deploy/cloudRun/createJobs/index.js +57 -0
- package/dist/deploy/cloudRun/createJobs/volumes.d.ts +3 -0
- package/dist/deploy/cloudRun/createJobs/volumes.js +58 -0
- package/dist/deploy/cloudRun/index.d.ts +2 -2
- package/dist/deploy/cloudRun/index.js +17 -10
- package/dist/deploy/cloudRun/utils/createArgsString.d.ts +3 -1
- package/dist/deploy/cloudRun/utils/createArgsString.js +25 -17
- package/dist/deploy/cloudRun/utils/database.d.ts +6 -4
- package/dist/deploy/cloudRun/utils/database.js +28 -15
- package/dist/deploy/cloudRun/utils/gcloudServiceAccountLoginCommands.d.ts +2 -2
- package/dist/deploy/cloudRun/utils/gcloudServiceAccountLoginCommands.js +4 -2
- package/dist/deploy/cloudRun/utils/getServiceName.d.ts +2 -0
- package/dist/deploy/cloudRun/utils/getServiceName.js +10 -0
- package/dist/deploy/cloudRun/utils/jobName.d.ts +2 -1
- package/dist/deploy/cloudRun/utils/jobName.js +4 -2
- package/dist/deploy/cloudRun/utils/removeFirstLinesFromCommandOutput.d.ts +9 -0
- package/dist/deploy/cloudRun/utils/removeFirstLinesFromCommandOutput.js +18 -0
- package/dist/deploy/cloudSql/utils.d.ts +2 -1
- package/dist/deploy/cloudSql/utils.js +7 -2
- package/dist/deploy/custom/deployJob.d.ts +2 -2
- package/dist/deploy/custom/deployJob.js +10 -9
- package/dist/deploy/custom/index.d.ts +2 -2
- package/dist/deploy/custom/index.js +3 -1
- package/dist/deploy/dockerTag/deployJob.d.ts +2 -2
- package/dist/deploy/dockerTag/deployJob.js +38 -7
- package/dist/deploy/dockerTag/index.d.ts +2 -2
- package/dist/deploy/dockerTag/index.js +3 -1
- package/dist/deploy/index.d.ts +10 -9
- package/dist/deploy/index.js +13 -7
- package/dist/deploy/kubernetes/additionalSecretKeys.d.ts +3 -1
- package/dist/deploy/kubernetes/additionalSecretKeys.js +3 -1
- package/dist/deploy/kubernetes/cloudSql/index.d.ts +6 -5
- package/dist/deploy/kubernetes/cloudSql/index.js +14 -21
- package/dist/deploy/kubernetes/deployJob.d.ts +2 -2
- package/dist/deploy/kubernetes/deployJob.js +23 -22
- package/dist/deploy/kubernetes/index.d.ts +2 -2
- package/dist/deploy/kubernetes/index.js +52 -15
- package/dist/deploy/kubernetes/kubeEnv.d.ts +5 -4
- package/dist/deploy/kubernetes/kubeEnv.js +9 -5
- package/dist/deploy/kubernetes/kubeValues.d.ts +5 -6
- package/dist/deploy/kubernetes/kubeValues.js +16 -18
- package/dist/deploy/kubernetes/mongodb.d.ts +2 -2
- package/dist/deploy/kubernetes/mongodb.js +14 -12
- package/dist/deploy/sbom.d.ts +4 -4
- package/dist/deploy/sbom.js +7 -4
- package/dist/deploy/types/base.d.ts +5 -5
- package/dist/deploy/types/base.js +3 -1
- package/dist/deploy/types/custom.d.ts +3 -7
- package/dist/deploy/types/custom.js +3 -1
- package/dist/deploy/types/dockerTag.d.ts +3 -1
- package/dist/deploy/types/dockerTag.js +3 -1
- package/dist/deploy/types/googleCloudRun.d.ts +127 -24
- package/dist/deploy/types/googleCloudRun.js +3 -1
- package/dist/deploy/types/index.d.ts +6 -6
- package/dist/deploy/types/index.js +14 -8
- package/dist/deploy/types/kubernetes.d.ts +25 -54
- package/dist/deploy/types/kubernetes.js +3 -1
- package/dist/deploy/utils.d.ts +2 -2
- package/dist/deploy/utils.js +5 -2
- package/dist/globalScriptFunctions/index.d.ts +14 -0
- package/dist/globalScriptFunctions/index.js +37 -0
- package/dist/index.d.ts +5 -2
- package/dist/index.js +18 -9
- package/dist/packageInfos.d.ts +4 -0
- package/dist/packageInfos.js +20 -0
- package/dist/pipeline/__tests__/getPipelineStages.test.d.ts +1 -0
- package/dist/pipeline/__tests__/getPipelineStages.test.js +73 -0
- package/dist/pipeline/createAllJobs.d.ts +16 -6
- package/dist/pipeline/createAllJobs.js +99 -27
- package/dist/pipeline/createJobsForComponent.d.ts +2 -2
- package/dist/pipeline/createJobsForComponent.js +9 -149
- package/dist/pipeline/createJobsForWorkspace.d.ts +3 -0
- package/dist/pipeline/createJobsForWorkspace.js +12 -0
- package/dist/pipeline/createMainPipeline.d.ts +3 -0
- package/dist/pipeline/createMainPipeline.js +283 -0
- package/dist/pipeline/generatePipelineFiles.d.ts +7 -0
- package/dist/pipeline/generatePipelineFiles.js +304 -0
- package/dist/pipeline/getPipelineStages.d.ts +7 -0
- package/dist/pipeline/getPipelineStages.js +56 -0
- package/dist/pipeline/gitlab/createGitlabJobs.d.ts +11 -14
- package/dist/pipeline/gitlab/createGitlabJobs.js +258 -74
- package/dist/pipeline/gitlab/createGitlabPipeline.d.ts +9 -0
- package/dist/pipeline/gitlab/createGitlabPipeline.js +77 -0
- package/dist/pipeline/gitlab/gitlabReleaseJobs.d.ts +33 -0
- package/dist/pipeline/gitlab/gitlabReleaseJobs.js +25 -0
- package/dist/pipeline/gitlab/sortGitLabJobDefProps.d.ts +7 -0
- package/dist/pipeline/gitlab/sortGitLabJobDefProps.js +27 -0
- package/dist/pipeline/index.d.ts +3 -2
- package/dist/pipeline/index.js +16 -9
- package/dist/pipeline/packageManager.d.ts +3 -2
- package/dist/pipeline/packageManager.js +50 -24
- package/dist/pipeline/yarn/yarnUtils.d.ts +3 -2
- package/dist/pipeline/yarn/yarnUtils.js +65 -17
- package/dist/rules/index.d.ts +7 -2
- package/dist/rules/index.js +34 -16
- package/dist/runner/index.d.ts +1 -1
- package/dist/runner/index.js +3 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/config.d.ts +44 -29
- package/dist/types/config.js +5 -2
- package/dist/types/context.d.ts +124 -40
- package/dist/types/context.js +12 -1
- package/dist/types/environmentContext.d.ts +15 -12
- package/dist/types/environmentContext.js +3 -1
- package/dist/types/gitlab-ci-yml.d.ts +30 -30
- package/dist/types/gitlab-ci-yml.js +3 -2
- package/dist/types/gitlab-types.d.ts +8 -8
- package/dist/types/gitlab-types.js +3 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.js +14 -7
- package/dist/types/jobDefinition.d.ts +11 -0
- package/dist/types/jobDefinition.js +5 -0
- package/dist/types/jobs.d.ts +30 -15
- package/dist/types/jobs.js +3 -1
- package/dist/types/pipeline.d.ts +3 -3
- package/dist/types/pipeline.js +3 -1
- package/dist/types/utils.d.ts +1 -1
- package/dist/types/utils.js +3 -1
- package/dist/utils/gitlab.js +7 -2
- package/dist/utils/index.d.ts +2 -1
- package/dist/utils/index.js +10 -3
- package/dist/utils/jsonParse.d.ts +1 -0
- package/dist/utils/jsonParse.js +14 -0
- package/dist/utils/removeUndefined.d.ts +1 -0
- package/dist/utils/removeUndefined.js +36 -0
- package/dist/utils/writeFiles.d.ts +11 -0
- package/dist/{pipeline/commitInfo/getBuildId.js → utils/writeFiles.js} +39 -22
- package/dist/variables/VariableValue.d.ts +3 -0
- package/dist/variables/VariableValue.js +5 -0
- package/dist/variables/VariableValueContainingReferences.d.ts +24 -0
- package/dist/variables/VariableValueContainingReferences.js +97 -0
- package/dist/variables/__tests__/resolveAllReferences.test.d.ts +1 -0
- package/dist/variables/__tests__/resolveAllReferences.test.js +218 -0
- package/dist/variables/__tests__/resolveAllReferencesOnce.test.d.ts +1 -0
- package/dist/variables/__tests__/resolveAllReferencesOnce.test.js +171 -0
- package/dist/variables/__tests__/resolveReferencesOnce.test.d.ts +1 -0
- package/dist/variables/__tests__/resolveReferencesOnce.test.js +199 -0
- package/dist/variables/__tests__/variableValue.test.d.ts +1 -0
- package/dist/variables/__tests__/variableValue.test.js +36 -0
- package/dist/variables/resolveAllReferences.d.ts +3 -0
- package/dist/{pipeline/createChildPipeline.js → variables/resolveAllReferences.js} +44 -47
- package/dist/variables/resolveAllReferencesOnce.d.ts +5 -0
- package/dist/variables/resolveAllReferencesOnce.js +191 -0
- package/dist/variables/resolveReferencesOnce.d.ts +8 -0
- package/dist/variables/resolveReferencesOnce.js +22 -0
- package/examples/.test-gen-ignore +1 -0
- package/examples/__snapshots__/cloud-run-http2.test.ts.snap +1418 -0
- package/examples/__snapshots__/cloud-run-memory-limit.test.ts.snap +1418 -0
- package/examples/__snapshots__/cloud-run-meteor-with-worker.test.ts.snap +1418 -0
- package/examples/__snapshots__/cloud-run-nextjs.test.ts.snap +1434 -0
- package/examples/__snapshots__/cloud-run-no-cpu-throttling.test.ts.snap +1418 -0
- package/examples/__snapshots__/cloud-run-no-service.test.ts.snap +1526 -0
- package/examples/__snapshots__/cloud-run-non-public.test.ts.snap +1418 -0
- package/examples/__snapshots__/cloud-run-post-stop-job.test.ts.snap +1436 -0
- package/examples/__snapshots__/cloud-run-service-custom-vpc-connector.test.ts.snap +1418 -0
- package/examples/__snapshots__/cloud-run-service-custom-vpc.test.ts.snap +1418 -0
- package/examples/__snapshots__/cloud-run-service-gen2.test.ts.snap +1418 -0
- package/examples/__snapshots__/cloud-run-service-increase-timout.test.ts.snap +1418 -0
- package/examples/__snapshots__/cloud-run-service-with-volumes.test.ts.snap +1490 -0
- package/examples/__snapshots__/cloud-run-storybook.test.ts.snap +1302 -0
- package/examples/__snapshots__/cloud-run-with-ngnix.test.ts.snap +1418 -0
- package/examples/__snapshots__/cloud-run-with-sql-reuse-db.test.ts.snap +2998 -0
- package/examples/__snapshots__/cloud-run-with-sql.test.ts.snap +1733 -0
- package/examples/__snapshots__/cloud-run-with-worker.test.ts.snap +1426 -0
- package/examples/__snapshots__/custom-build-job-with-tests.test.ts.snap +1285 -0
- package/examples/__snapshots__/custom-build-job.test.ts.snap +1174 -0
- package/examples/__snapshots__/custom-deploy.test.ts.snap +1168 -0
- package/examples/__snapshots__/custom-envs.test.ts.snap +798 -0
- package/examples/__snapshots__/custom-sbom-java.test.ts.snap +1182 -0
- package/examples/__snapshots__/git-submodule.test.ts.snap +1419 -0
- package/examples/__snapshots__/kubernetes-application-customization.test.ts.snap +1759 -0
- package/examples/__snapshots__/kubernetes-with-cloud-sql.test.ts.snap +1779 -0
- package/examples/__snapshots__/kubernetes-with-jobs.test.ts.snap +3357 -0
- package/examples/__snapshots__/kubernetes-with-mongodb.test.ts.snap +1883 -0
- package/examples/__snapshots__/local-dot-env.test.ts.snap +1342 -0
- package/examples/__snapshots__/meteor-kubernetes.test.ts.snap +1836 -0
- package/examples/__snapshots__/multiline-var.test.ts.snap +5679 -0
- package/examples/__snapshots__/native-app.test.ts.snap +2206 -0
- package/examples/__snapshots__/node-build-with-custom-image.test.ts.snap +1418 -0
- package/examples/__snapshots__/node-build-with-docker-additions.test.ts.snap +1426 -0
- package/examples/__snapshots__/rails-k8s-with-worker-dockerfile.test.ts.snap +1487 -0
- package/examples/__snapshots__/rails-k8s-with-worker.test.ts.snap +1471 -0
- package/examples/__snapshots__/referencing-other-vars.test.ts.snap +4739 -0
- package/examples/__snapshots__/wait-for-other-deploy.test.ts.snap +1368 -0
- package/examples/__snapshots__/workspace-api-www-turbo-cache.test.ts.snap +2338 -0
- package/examples/__snapshots__/workspace-api-www.test.ts.snap +2330 -0
- package/examples/__utils__/helpers.ts +9 -12
- package/examples/cloud-run-http2.test.ts +11 -0
- package/examples/cloud-run-http2.ts +29 -0
- package/examples/cloud-run-memory-limit.test.ts +11 -0
- package/examples/cloud-run-memory-limit.ts +10 -5
- package/examples/cloud-run-meteor-with-worker.test.ts +11 -0
- package/examples/cloud-run-meteor-with-worker.ts +37 -0
- package/examples/cloud-run-nextjs.test.ts +11 -0
- package/examples/cloud-run-nextjs.ts +28 -0
- package/examples/cloud-run-no-cpu-throttling.test.ts +11 -0
- package/examples/cloud-run-no-cpu-throttling.ts +6 -4
- package/examples/cloud-run-no-service.test.ts +11 -0
- package/examples/cloud-run-no-service.ts +33 -0
- package/examples/cloud-run-non-public.test.ts +11 -0
- package/examples/cloud-run-non-public.ts +5 -4
- package/examples/cloud-run-post-stop-job.test.ts +11 -0
- package/examples/cloud-run-post-stop-job.ts +42 -0
- package/examples/cloud-run-service-custom-vpc-connector.test.ts +11 -0
- package/examples/cloud-run-service-custom-vpc-connector.ts +30 -0
- package/examples/cloud-run-service-custom-vpc.test.ts +11 -0
- package/examples/cloud-run-service-custom-vpc.ts +31 -0
- package/examples/cloud-run-service-gen2.test.ts +11 -0
- package/examples/cloud-run-service-gen2.ts +29 -0
- package/examples/cloud-run-service-increase-timout.test.ts +11 -0
- package/examples/cloud-run-service-increase-timout.ts +29 -0
- package/examples/cloud-run-service-with-volumes.test.ts +11 -0
- package/examples/cloud-run-service-with-volumes.ts +56 -0
- package/examples/cloud-run-storybook.test.ts +11 -0
- package/examples/cloud-run-storybook.ts +33 -0
- package/examples/cloud-run-with-ngnix.test.ts +11 -0
- package/examples/cloud-run-with-ngnix.ts +29 -0
- package/examples/cloud-run-with-sql-reuse-db.test.ts +11 -0
- package/examples/cloud-run-with-sql-reuse-db.ts +5 -4
- package/examples/cloud-run-with-sql.test.ts +11 -0
- package/examples/cloud-run-with-sql.ts +6 -20
- package/examples/cloud-run-with-worker.test.ts +11 -0
- package/examples/cloud-run-with-worker.ts +37 -0
- package/examples/custom-build-job-with-tests.test.ts +11 -0
- package/examples/custom-build-job-with-tests.ts +5 -4
- package/examples/custom-build-job.test.ts +11 -0
- package/examples/custom-build-job.ts +5 -4
- package/examples/custom-deploy.test.ts +11 -0
- package/examples/custom-deploy.ts +12 -4
- package/examples/custom-envs.test.ts +11 -0
- package/examples/custom-envs.ts +5 -4
- package/examples/custom-sbom-java.test.ts +11 -0
- package/examples/custom-sbom-java.ts +10 -6
- package/examples/git-submodule.test.ts +11 -0
- package/examples/git-submodule.ts +30 -0
- package/examples/kubernetes-application-customization.test.ts +11 -0
- package/examples/kubernetes-application-customization.ts +7 -4
- package/examples/kubernetes-with-cloud-sql.test.ts +11 -0
- package/examples/kubernetes-with-cloud-sql.ts +7 -4
- package/examples/kubernetes-with-jobs.test.ts +11 -0
- package/examples/kubernetes-with-jobs.ts +7 -4
- package/examples/kubernetes-with-mongodb.test.ts +11 -0
- package/examples/kubernetes-with-mongodb.ts +7 -4
- package/examples/local-dot-env.test.ts +11 -0
- package/examples/local-dot-env.ts +27 -0
- package/examples/meteor-kubernetes.test.ts +11 -0
- package/examples/meteor-kubernetes.ts +4 -5
- package/examples/multiline-var.test.ts +11 -0
- package/examples/multiline-var.ts +107 -0
- package/examples/native-app.test.ts +11 -0
- package/examples/native-app.ts +22 -17
- package/examples/node-build-with-custom-image.test.ts +11 -0
- package/examples/node-build-with-custom-image.ts +5 -4
- package/examples/node-build-with-docker-additions.test.ts +11 -0
- package/examples/node-build-with-docker-additions.ts +29 -0
- package/examples/rails-k8s-with-worker-dockerfile.test.ts +33 -0
- package/examples/rails-k8s-with-worker.test.ts +11 -0
- package/examples/rails-k8s-with-worker.ts +14 -11
- package/examples/referencing-other-vars.test.ts +11 -0
- package/examples/referencing-other-vars.ts +83 -0
- package/examples/wait-for-other-deploy.test.ts +11 -0
- package/examples/wait-for-other-deploy.ts +5 -4
- package/examples/workspace-api-www-turbo-cache.test.ts +11 -0
- package/examples/workspace-api-www-turbo-cache.ts +52 -0
- package/examples/workspace-api-www.test.ts +11 -0
- package/examples/workspace-api-www.ts +46 -0
- package/package.json +75 -26
- package/scripts/generate-examples-test.ts +84 -0
- package/scripts/generate-gitlab-ci-types.ts +2 -2
- package/scripts/tsconfig.json +7 -0
- package/src/bash/BashExpression.ts +78 -0
- package/src/bash/bashEscape.ts +158 -0
- package/src/bash/bashExpressionPerPipelineType.ts +16 -0
- package/src/bash/bashYaml.ts +80 -0
- package/src/bash/getInjectVarsScript.ts +21 -0
- package/src/bash/index.ts +2 -0
- package/src/build/artifacts/createBuildJobArtifact.ts +61 -0
- package/src/build/base/__tests__/createArtifactsConfig.test.ts +3 -3
- package/src/build/base/constants.ts +2 -2
- package/src/build/base/createAppBuildJob.ts +40 -24
- package/src/build/base/createArtifactsConfig.ts +2 -2
- package/src/build/base/createBuildJobDefinition.ts +37 -0
- package/src/build/base/index.ts +37 -8
- package/src/build/base/writeBuildInfo.ts +3 -3
- package/src/build/base/writeDotEnv.ts +25 -6
- package/src/build/cache/createJobCache.ts +83 -0
- package/src/build/cache/getAllCacheConfigsFromConfig.ts +28 -0
- package/src/build/cache/transformLegacyJobCache.ts +14 -0
- package/src/build/custom/__tests__/testJob.test.ts +10 -13
- package/src/build/custom/buildJob.ts +11 -37
- package/src/build/custom/index.ts +2 -2
- package/src/build/custom/testJob.ts +24 -22
- package/src/build/docker.ts +145 -49
- package/src/build/index.ts +42 -10
- package/src/build/node/buildJob.ts +65 -62
- package/src/build/node/cache.ts +30 -35
- package/src/build/node/constants.ts +2 -3
- package/src/build/node/index.ts +8 -4
- package/src/build/node/meteor.ts +16 -24
- package/src/build/node/testJob.ts +47 -26
- package/src/build/node/yarn.ts +32 -16
- package/src/build/rails/build.ts +21 -9
- package/src/build/rails/index.ts +2 -2
- package/src/build/rails/test.ts +22 -12
- package/src/build/sbom.ts +15 -10
- package/src/build/types.ts +190 -47
- package/src/catladder-gitlab.ts +7 -56
- package/src/config/__tests__/__snapshots__/getAllEnvs.test.ts.snap +31 -0
- package/src/config/__tests__/__snapshots__/getAllEnvsInAllComponents.test.ts.snap +15 -0
- package/src/config/__tests__/getAllEnvs.test.ts +71 -0
- package/src/config/__tests__/getAllEnvsInAllComponents.test.ts +63 -0
- package/src/config/configruedEnvs.ts +6 -6
- package/src/config/readConfig.ts +15 -22
- package/src/constants.ts +5 -2
- package/src/context/createAllComponentsContext.ts +31 -0
- package/src/context/createComponentContext.ts +134 -0
- package/src/context/createWorkspaceContext.ts +56 -0
- package/src/context/getBuildInfoVariables.ts +36 -0
- package/src/context/getEnvConfig.ts +3 -3
- package/src/context/getEnvType.ts +1 -1
- package/src/context/getEnvironment.ts +8 -24
- package/src/context/getEnvironmentContext.ts +25 -29
- package/src/context/getEnvironmentVariables.ts +104 -76
- package/src/context/getLabels.ts +5 -5
- package/src/context/getReviewSlug.ts +27 -0
- package/src/context/index.ts +1 -65
- package/src/context/transformJobOnlyVars.ts +6 -3
- package/src/context/utils/envVars.ts +5 -4
- package/src/deploy/base/deploy.ts +63 -47
- package/src/deploy/base/index.ts +11 -6
- package/src/deploy/base/rollback.ts +11 -16
- package/src/deploy/base/stop.ts +11 -15
- package/src/deploy/base/variables.ts +1 -2
- package/src/deploy/cloudRun/artifactsRegistry.ts +126 -0
- package/src/deploy/cloudRun/cleanup.ts +30 -0
- package/src/deploy/cloudRun/cloudRunRevisions.ts +65 -0
- package/src/deploy/cloudRun/createJobs/cloudRunJobs.ts +227 -0
- package/src/deploy/cloudRun/createJobs/cloudRunServices.ts +86 -0
- package/src/deploy/cloudRun/createJobs/common.ts +59 -0
- package/src/deploy/cloudRun/createJobs/constants.ts +1 -0
- package/src/deploy/cloudRun/createJobs/getCloudRunDeployScripts.ts +71 -0
- package/src/deploy/cloudRun/createJobs/getCloudRunStopScripts.ts +34 -0
- package/src/deploy/cloudRun/createJobs/index.ts +51 -0
- package/src/deploy/cloudRun/createJobs/volumes.ts +23 -0
- package/src/deploy/cloudRun/index.ts +85 -59
- package/src/deploy/cloudRun/utils/createArgsString.ts +21 -13
- package/src/deploy/cloudRun/utils/database.ts +31 -9
- package/src/deploy/cloudRun/utils/gcloudServiceAccountLoginCommands.ts +9 -11
- package/src/deploy/cloudRun/utils/getServiceName.ts +3 -0
- package/src/deploy/cloudRun/utils/jobName.ts +7 -2
- package/src/deploy/cloudRun/utils/removeFirstLinesFromCommandOutput.ts +12 -0
- package/src/deploy/cloudSql/utils.ts +13 -10
- package/src/deploy/custom/deployJob.ts +15 -10
- package/src/deploy/custom/index.ts +2 -2
- package/src/deploy/dockerTag/deployJob.ts +7 -8
- package/src/deploy/dockerTag/index.ts +8 -7
- package/src/deploy/index.ts +15 -12
- package/src/deploy/kubernetes/additionalSecretKeys.ts +3 -1
- package/src/deploy/kubernetes/cloudSql/index.ts +16 -25
- package/src/deploy/kubernetes/deployJob.ts +30 -21
- package/src/deploy/kubernetes/index.ts +43 -35
- package/src/deploy/kubernetes/kubeEnv.ts +12 -10
- package/src/deploy/kubernetes/kubeValues.ts +15 -19
- package/src/deploy/kubernetes/mongodb.ts +15 -15
- package/src/deploy/sbom.ts +18 -10
- package/src/deploy/types/base.ts +3 -3
- package/src/deploy/types/custom.ts +3 -7
- package/src/deploy/types/dockerTag.ts +2 -0
- package/src/deploy/types/googleCloudRun.ts +133 -10
- package/src/deploy/types/index.ts +2 -2
- package/src/deploy/types/kubernetes.ts +5 -36
- package/src/deploy/utils.ts +5 -5
- package/src/globalScriptFunctions/index.ts +30 -0
- package/src/index.ts +4 -1
- package/src/packageInfos.ts +14 -0
- package/src/pipeline/__tests__/__snapshots__/getPipelineStages.test.ts.snap +69 -0
- package/src/pipeline/__tests__/getPipelineStages.test.ts +63 -0
- package/src/pipeline/createAllJobs.ts +67 -33
- package/src/pipeline/createJobsForComponent.ts +10 -38
- package/src/pipeline/createJobsForWorkspace.ts +12 -0
- package/src/pipeline/createMainPipeline.ts +119 -0
- package/src/pipeline/generatePipelineFiles.ts +100 -0
- package/src/pipeline/getPipelineStages.ts +23 -0
- package/src/pipeline/gitlab/createGitlabJobs.ts +388 -108
- package/src/pipeline/gitlab/createGitlabPipeline.ts +35 -0
- package/src/pipeline/gitlab/gitlabReleaseJobs.ts +23 -0
- package/src/pipeline/gitlab/sortGitLabJobDefProps.ts +59 -0
- package/src/pipeline/index.ts +2 -1
- package/src/pipeline/packageManager.ts +44 -26
- package/src/pipeline/yarn/yarnUtils.ts +39 -10
- package/src/rules/index.ts +36 -9
- package/src/runner/index.ts +0 -1
- package/src/types/config.ts +43 -16
- package/src/types/context.ts +165 -37
- package/src/types/environmentContext.ts +18 -13
- package/src/types/gitlab-ci-yml.ts +0 -1
- package/src/types/gitlab-types.ts +10 -7
- package/src/types/index.ts +1 -0
- package/src/types/jobDefinition.ts +34 -0
- package/src/types/jobs.ts +31 -15
- package/src/types/utils.ts +4 -4
- package/src/utils/gitlab.ts +20 -3
- package/src/utils/index.ts +6 -3
- package/src/utils/jsonParse.ts +7 -0
- package/src/utils/removeUndefined.ts +4 -0
- package/src/utils/writeFiles.ts +52 -0
- package/src/variables/VariableValue.ts +6 -0
- package/src/variables/VariableValueContainingReferences.ts +89 -0
- package/src/variables/__tests__/resolveAllReferences.test.ts +110 -0
- package/src/variables/__tests__/resolveAllReferencesOnce.test.ts +64 -0
- package/src/variables/__tests__/resolveReferencesOnce.test.ts +117 -0
- package/src/variables/__tests__/variableValue.test.ts +73 -0
- package/src/variables/resolveAllReferences.ts +46 -0
- package/src/variables/resolveAllReferencesOnce.ts +44 -0
- package/src/variables/resolveReferencesOnce.ts +29 -0
- package/bin/catladder-gitlab-dev.js +0 -3
- package/bin/catladder-gitlab.js +0 -3
- package/dist/bundles/catladder-gitlab/index.js +0 -33838
- package/dist/context/__tests__/resolveReferences.test.js +0 -336
- package/dist/context/resolveReferences.d.ts +0 -4
- package/dist/context/resolveReferences.js +0 -254
- package/dist/deploy/cloudRun/deployJob.d.ts +0 -3
- package/dist/deploy/cloudRun/deployJob.js +0 -248
- package/dist/deploy/kubernetes/processSecretsAsFiles.d.ts +0 -84
- package/dist/deploy/kubernetes/processSecretsAsFiles.js +0 -31
- package/dist/pipeline/commitInfo/getBuildId.d.ts +0 -6
- package/dist/pipeline/commitInfo/getCommitInfo.d.ts +0 -2
- package/dist/pipeline/createChildPipeline.d.ts +0 -3
- package/examples/__snapshots__/cloud-run-memory-limit.ts.snap +0 -1780
- package/examples/__snapshots__/cloud-run-no-cpu-throttling.ts.snap +0 -1780
- package/examples/__snapshots__/cloud-run-non-public.ts.snap +0 -1780
- package/examples/__snapshots__/cloud-run-with-sql-reuse-db.ts.snap +0 -3532
- package/examples/__snapshots__/cloud-run-with-sql.ts.snap +0 -3543
- package/examples/__snapshots__/custom-build-job-with-tests.ts.snap +0 -1656
- package/examples/__snapshots__/custom-build-job.ts.snap +0 -1362
- package/examples/__snapshots__/custom-deploy.ts.snap +0 -1556
- package/examples/__snapshots__/custom-envs.ts.snap +0 -1050
- package/examples/__snapshots__/custom-sbom-java.ts.snap +0 -1370
- package/examples/__snapshots__/kubernetes-application-customization.ts.snap +0 -2468
- package/examples/__snapshots__/kubernetes-with-cloud-sql-legacy.ts.snap +0 -2428
- package/examples/__snapshots__/kubernetes-with-cloud-sql.ts.snap +0 -2440
- package/examples/__snapshots__/kubernetes-with-jobs.ts.snap +0 -4453
- package/examples/__snapshots__/kubernetes-with-mongodb.ts.snap +0 -2632
- package/examples/__snapshots__/meteor-kubernetes.ts.snap +0 -2557
- package/examples/__snapshots__/native-app.ts.snap +0 -2878
- package/examples/__snapshots__/node-build-with-custom-image.ts.snap +0 -1780
- package/examples/__snapshots__/rails-k8s-with-worker.ts.snap +0 -4189
- package/examples/__snapshots__/wait-for-other-deploy.ts.snap +0 -1922
- package/examples/kubernetes-with-cloud-sql-legacy.ts +0 -33
- package/scripts/bundle +0 -2
- package/src/context/__tests__/resolveReferences.test.ts +0 -143
- package/src/context/resolveReferences.ts +0 -70
- package/src/deploy/cloudRun/deployJob.ts +0 -301
- package/src/deploy/kubernetes/processSecretsAsFiles.ts +0 -34
- package/src/pipeline/commitInfo/getBuildId.ts +0 -17
- package/src/pipeline/commitInfo/getCommitInfo.ts +0 -15
- package/src/pipeline/createChildPipeline.ts +0 -45
- /package/dist/{context/__tests__/resolveReferences.test.d.ts → config/__tests__/getAllEnvs.test.d.ts} +0 -0
|
@@ -1,22 +1,28 @@
|
|
|
1
1
|
import { existsSync } from "fs";
|
|
2
2
|
import { join } from "path";
|
|
3
3
|
import { pathEqual } from "path-equal";
|
|
4
|
-
import type {
|
|
5
|
-
|
|
4
|
+
import type {
|
|
5
|
+
Config,
|
|
6
|
+
PackageManagerInfoBase,
|
|
7
|
+
PackageManagerInfoComponent,
|
|
8
|
+
} from "../types";
|
|
9
|
+
import {
|
|
10
|
+
getWorkspaces,
|
|
11
|
+
getYarnVersion,
|
|
12
|
+
getWorkspaceDependencies,
|
|
13
|
+
} from "./yarn/yarnUtils";
|
|
6
14
|
|
|
7
|
-
export const
|
|
15
|
+
export const getPackageManagerInfoForComponent = async (
|
|
8
16
|
config: Config,
|
|
9
|
-
componentName: string
|
|
10
|
-
): Promise<
|
|
17
|
+
componentName: string,
|
|
18
|
+
): Promise<PackageManagerInfoComponent> => {
|
|
19
|
+
const baseInfo = await getPackageManagerInfoBase();
|
|
20
|
+
const { workspaces } = baseInfo;
|
|
11
21
|
// currently only supports yarn
|
|
12
|
-
const version = await getYarnVersion();
|
|
13
|
-
if (!version) throw new Error("could not get yarn version");
|
|
14
|
-
const isClassic = version.startsWith("1");
|
|
15
22
|
|
|
16
23
|
const component = config.components[componentName];
|
|
17
|
-
const workspaces = await getWorkspaces(isClassic);
|
|
18
24
|
const currentWorkspace = workspaces.find((w) =>
|
|
19
|
-
pathEqual(component.dir, w.location)
|
|
25
|
+
pathEqual(component.dir, w.location),
|
|
20
26
|
);
|
|
21
27
|
const componentIsInWorkspace = Boolean(currentWorkspace);
|
|
22
28
|
const workspaceRoot = "."; // currently we assume the root folder, later on we might support nested workspaces
|
|
@@ -38,29 +44,41 @@ export const getPackageManagerInfo = async (
|
|
|
38
44
|
|
|
39
45
|
// get all folders that this workspace depend on
|
|
40
46
|
// we will later copy them into the docker build
|
|
41
|
-
const
|
|
42
|
-
? (
|
|
43
|
-
...currentWorkspace.workspaceDependencies,
|
|
44
|
-
...currentWorkspace.mismatchedWorkspaceDependencies,
|
|
45
|
-
]
|
|
46
|
-
.map((name) => workspaces.find((w) => w.name === name)?.location)
|
|
47
|
-
.filter(Boolean) as string[])
|
|
47
|
+
const currentWorkspaceDependencies = currentWorkspace
|
|
48
|
+
? getWorkspaceDependencies(currentWorkspace, workspaces)
|
|
48
49
|
: [];
|
|
49
50
|
|
|
50
51
|
const pathsToCopyInDocker = [
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
52
|
+
...new Set([
|
|
53
|
+
packageJson,
|
|
54
|
+
...(workspacePackageJson ? [workspacePackageJson] : []),
|
|
55
|
+
lockFile,
|
|
56
|
+
...configFilePaths,
|
|
57
|
+
...currentWorkspaceDependencies,
|
|
58
|
+
]),
|
|
56
59
|
];
|
|
57
60
|
return {
|
|
58
|
-
|
|
59
|
-
workspaces,
|
|
60
|
-
version,
|
|
61
|
-
isClassic,
|
|
61
|
+
...baseInfo,
|
|
62
62
|
currentWorkspace,
|
|
63
|
+
currentWorkspaceDependencies,
|
|
63
64
|
componentIsInWorkspace,
|
|
64
65
|
pathsToCopyInDocker,
|
|
65
66
|
};
|
|
66
67
|
};
|
|
68
|
+
// TODO: memoizee
|
|
69
|
+
export const getPackageManagerInfoBase =
|
|
70
|
+
async (): Promise<PackageManagerInfoBase> => {
|
|
71
|
+
// currently only supports yarn
|
|
72
|
+
const version = await getYarnVersion();
|
|
73
|
+
if (!version) throw new Error("could not get yarn version");
|
|
74
|
+
const isClassic = version.startsWith("1");
|
|
75
|
+
|
|
76
|
+
const workspaces = await getWorkspaces(isClassic);
|
|
77
|
+
|
|
78
|
+
return {
|
|
79
|
+
type: "yarn",
|
|
80
|
+
workspaces,
|
|
81
|
+
version,
|
|
82
|
+
isClassic,
|
|
83
|
+
};
|
|
84
|
+
};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { exec } from "child-process-promise";
|
|
2
2
|
import memoizee from "memoizee";
|
|
3
|
-
import type {
|
|
3
|
+
import type { YarnWorkspace } from "../../types";
|
|
4
|
+
import { jsonParseOrThrow } from "../../utils/jsonParse";
|
|
4
5
|
|
|
5
6
|
const execOrFail = async (cmd: string, onFail: string): Promise<string> => {
|
|
6
7
|
try {
|
|
@@ -14,24 +15,52 @@ export const getYarnVersion = memoizee(
|
|
|
14
15
|
async () => {
|
|
15
16
|
return await execOrFail("yarn --version", "");
|
|
16
17
|
},
|
|
17
|
-
{ promise: true }
|
|
18
|
+
{ promise: true },
|
|
18
19
|
);
|
|
20
|
+
|
|
19
21
|
// export for mocking
|
|
20
22
|
export const getWorkspaces = memoizee(
|
|
21
|
-
async (isClassic: boolean): Promise<
|
|
23
|
+
async (isClassic: boolean): Promise<Array<YarnWorkspace>> => {
|
|
22
24
|
return isClassic
|
|
23
25
|
? Object.values(
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
26
|
+
jsonParseOrThrow(
|
|
27
|
+
jsonParseOrThrow(
|
|
28
|
+
await execOrFail("yarn workspaces --json info", "{}"),
|
|
29
|
+
)?.data ?? "{}",
|
|
30
|
+
),
|
|
28
31
|
)
|
|
29
|
-
:
|
|
32
|
+
: jsonParseOrThrow(
|
|
30
33
|
`[${(await execOrFail("yarn workspaces list --json --verbose", ""))
|
|
31
34
|
.trim()
|
|
32
35
|
.split("\n")
|
|
33
|
-
.join(",")}]
|
|
36
|
+
.join(",")}]`,
|
|
34
37
|
);
|
|
35
38
|
},
|
|
36
|
-
{ promise: true }
|
|
39
|
+
{ promise: true },
|
|
37
40
|
);
|
|
41
|
+
|
|
42
|
+
// recursivly get all workspace dependencies
|
|
43
|
+
export const getWorkspaceDependencies = (
|
|
44
|
+
ws: YarnWorkspace,
|
|
45
|
+
allWorkspaces: YarnWorkspace[],
|
|
46
|
+
): string[] => {
|
|
47
|
+
return ws
|
|
48
|
+
? ([...ws.workspaceDependencies, ...ws.mismatchedWorkspaceDependencies]
|
|
49
|
+
.flatMap((location) => {
|
|
50
|
+
// we have to do this recursivly
|
|
51
|
+
|
|
52
|
+
const otherWorkspace = allWorkspaces.find(
|
|
53
|
+
(w) => w.location === location,
|
|
54
|
+
);
|
|
55
|
+
|
|
56
|
+
if (otherWorkspace) {
|
|
57
|
+
return [
|
|
58
|
+
...getWorkspaceDependencies(otherWorkspace, allWorkspaces),
|
|
59
|
+
otherWorkspace.location,
|
|
60
|
+
];
|
|
61
|
+
}
|
|
62
|
+
return [];
|
|
63
|
+
})
|
|
64
|
+
.filter(Boolean) as string[])
|
|
65
|
+
: [];
|
|
66
|
+
};
|
package/src/rules/index.ts
CHANGED
|
@@ -1,33 +1,47 @@
|
|
|
1
1
|
import type { GitlabRule } from "../types";
|
|
2
|
+
export const RULE_CONDITION_MAIN_BRANCH =
|
|
3
|
+
"$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH";
|
|
2
4
|
|
|
5
|
+
export const RULE_IS_MAIN_BRANCH: GitlabRule = {
|
|
6
|
+
if: RULE_CONDITION_MAIN_BRANCH,
|
|
7
|
+
};
|
|
3
8
|
export const RULE_NEVER_ON_RELEASE_COMMIT: GitlabRule = {
|
|
4
9
|
if: "$CI_COMMIT_MESSAGE =~ /^chore\\(release\\).*/",
|
|
5
10
|
when: "never",
|
|
6
11
|
};
|
|
12
|
+
|
|
13
|
+
export const RULE_NEVER_ON_SCHEDULE: GitlabRule = {
|
|
14
|
+
if: '$CI_PIPELINE_SOURCE == "schedule"',
|
|
15
|
+
when: "never",
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
export const RULE_IS_MERGE_REQUEST: GitlabRule = {
|
|
19
|
+
if: "$CI_MERGE_REQUEST_ID",
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
export const RULE_IS_TAGGED_RELEASE: GitlabRule = {
|
|
23
|
+
if: "$CI_COMMIT_TAG",
|
|
24
|
+
};
|
|
25
|
+
|
|
7
26
|
export const RULES_ALWAYS: GitlabRule[] = [
|
|
8
|
-
|
|
9
|
-
if: "$CI_COMMIT_TAG",
|
|
10
|
-
},
|
|
27
|
+
RULE_IS_TAGGED_RELEASE,
|
|
11
28
|
RULE_NEVER_ON_RELEASE_COMMIT,
|
|
29
|
+
RULE_NEVER_ON_SCHEDULE,
|
|
12
30
|
{
|
|
13
31
|
if: "$CI_COMMIT_BRANCH =~ /^[0-9]+.([0-9]+|x).x$/",
|
|
14
32
|
},
|
|
15
33
|
{
|
|
16
34
|
if: "$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH",
|
|
17
35
|
},
|
|
18
|
-
|
|
19
|
-
if: "$CI_MERGE_REQUEST_ID",
|
|
20
|
-
},
|
|
36
|
+
RULE_IS_MERGE_REQUEST,
|
|
21
37
|
];
|
|
22
38
|
|
|
23
|
-
export const RULE_CONDITION_MAIN_BRANCH =
|
|
24
|
-
"$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH";
|
|
25
|
-
|
|
26
39
|
export const RULE_CONDITION_HOTFIX_BRANCH =
|
|
27
40
|
"$CI_COMMIT_BRANCH =~ /^[0-9]+.([0-9]+|x).x$/";
|
|
28
41
|
|
|
29
42
|
export const RULES_RELEASE: GitlabRule[] = [
|
|
30
43
|
RULE_NEVER_ON_RELEASE_COMMIT,
|
|
44
|
+
RULE_NEVER_ON_SCHEDULE,
|
|
31
45
|
{
|
|
32
46
|
if: RULE_CONDITION_MAIN_BRANCH + ' && $AUTO_RELEASE == "true"',
|
|
33
47
|
when: "on_success",
|
|
@@ -41,3 +55,16 @@ export const RULES_RELEASE: GitlabRule[] = [
|
|
|
41
55
|
when: "manual",
|
|
42
56
|
},
|
|
43
57
|
];
|
|
58
|
+
|
|
59
|
+
export const RULES_MANUAL_RELEASE: GitlabRule[] = [
|
|
60
|
+
RULE_NEVER_ON_RELEASE_COMMIT,
|
|
61
|
+
RULE_NEVER_ON_SCHEDULE,
|
|
62
|
+
{
|
|
63
|
+
if: RULE_CONDITION_MAIN_BRANCH,
|
|
64
|
+
when: "manual",
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
if: RULE_CONDITION_HOTFIX_BRANCH,
|
|
68
|
+
when: "manual",
|
|
69
|
+
},
|
|
70
|
+
];
|
package/src/runner/index.ts
CHANGED
package/src/types/config.ts
CHANGED
|
@@ -2,9 +2,16 @@ import type { BuildConfig } from "../build/types";
|
|
|
2
2
|
import type { DeployConfig } from "../deploy/types";
|
|
3
3
|
|
|
4
4
|
import type { CatladderJob } from "./jobs";
|
|
5
|
-
import type {
|
|
5
|
+
import type { ComponentContext } from "./context";
|
|
6
6
|
import type { PartialDeep } from "./utils";
|
|
7
|
-
|
|
7
|
+
import type { PipelineType, WorkspaceBuildConfig } from "..";
|
|
8
|
+
|
|
9
|
+
export const ALL_PIPELINE_TRIGGERS = [
|
|
10
|
+
"mainBranch",
|
|
11
|
+
"mr",
|
|
12
|
+
"taggedRelease",
|
|
13
|
+
] as const;
|
|
14
|
+
export type PipelineTrigger = (typeof ALL_PIPELINE_TRIGGERS)[number];
|
|
8
15
|
|
|
9
16
|
/**
|
|
10
17
|
* all env types with their trigger.
|
|
@@ -36,7 +43,7 @@ export const ENV_TYPES = {
|
|
|
36
43
|
export const getEnvTypesByTrigger = (trigger: PipelineTrigger) =>
|
|
37
44
|
Object.entries(ENV_TYPES)
|
|
38
45
|
.filter(([, e]) =>
|
|
39
|
-
(e.triggers as readonly PipelineTrigger[]).includes(trigger)
|
|
46
|
+
(e.triggers as readonly PipelineTrigger[]).includes(trigger),
|
|
40
47
|
)
|
|
41
48
|
.map(([e]) => e as EnvType);
|
|
42
49
|
|
|
@@ -60,19 +67,12 @@ export type EnvVars = {
|
|
|
60
67
|
* You can reuse vars from other components in the same project using ${componentName:variableName}
|
|
61
68
|
* EXAMPLE: A_VAR: "the other var is ${api:OTHER_VAR}"
|
|
62
69
|
*/
|
|
70
|
+
|
|
63
71
|
public?: Record<string, any>;
|
|
64
72
|
/**
|
|
65
73
|
* secret env vars. These vars can be managed with catladder/cli
|
|
66
74
|
*/
|
|
67
75
|
secret?: string[];
|
|
68
|
-
/**
|
|
69
|
-
* @deprecated, use ${componentName:variableName} instead
|
|
70
|
-
*
|
|
71
|
-
* With fromComponents you can inject env vars from other components.
|
|
72
|
-
*/
|
|
73
|
-
fromComponents?: {
|
|
74
|
-
[otherApp: string]: Record<string, string>;
|
|
75
|
-
};
|
|
76
76
|
};
|
|
77
77
|
|
|
78
78
|
export type DefaultEnvConfig = {
|
|
@@ -143,18 +143,32 @@ export type ComponentConfig<C extends ConfigProps = never> = {
|
|
|
143
143
|
* to let us know about why you need to use custom jobs.
|
|
144
144
|
* This feedback will help us to generalize use cases
|
|
145
145
|
*/
|
|
146
|
-
customJobs?:
|
|
146
|
+
customJobs?:
|
|
147
|
+
| CatladderJob[]
|
|
148
|
+
| ((context: Omit<ComponentContext, "customJobs">) => CatladderJob[]);
|
|
147
149
|
|
|
148
150
|
/**
|
|
149
|
-
*
|
|
151
|
+
* whether to create a .env
|
|
150
152
|
*
|
|
151
153
|
* Be careful, this will overwrite any existing .env file!
|
|
154
|
+
*
|
|
155
|
+
* if set to true it will create .env locally and during build.
|
|
156
|
+
* Be careful: the .env file usually ends up in the build artifacts.
|
|
157
|
+
* Use this for apps and clients where env does not contain any secrets
|
|
158
|
+
*
|
|
159
|
+
*
|
|
160
|
+
* if set to "local" it will only create .env file locally.
|
|
161
|
+
* Use this in combination with @dotenvx/dotenvx or node 20 to start apps locally with .env files
|
|
162
|
+
* During build and runtime, it relies on the env vars set in the environment
|
|
163
|
+
*
|
|
164
|
+
* @defaultValue true
|
|
165
|
+
*
|
|
152
166
|
*/
|
|
153
|
-
dotEnv?: boolean;
|
|
167
|
+
dotEnv?: boolean | "local";
|
|
154
168
|
/**
|
|
155
|
-
*
|
|
169
|
+
* whether to create a env.d.ts localy and during build jobs
|
|
156
170
|
*
|
|
157
|
-
*
|
|
171
|
+
* @defaultValue true
|
|
158
172
|
*/
|
|
159
173
|
envDTs?: boolean;
|
|
160
174
|
} & DefaultEnvConfig;
|
|
@@ -164,6 +178,11 @@ export type ConfigProps = {
|
|
|
164
178
|
};
|
|
165
179
|
|
|
166
180
|
export type Config<C extends ConfigProps = never> = {
|
|
181
|
+
/**
|
|
182
|
+
* the pipeline type to generate, defaults to gitlab
|
|
183
|
+
*/
|
|
184
|
+
pipelineType?: PipelineType;
|
|
185
|
+
|
|
167
186
|
/**
|
|
168
187
|
* name of the customer or group
|
|
169
188
|
*/
|
|
@@ -178,6 +197,9 @@ export type Config<C extends ConfigProps = never> = {
|
|
|
178
197
|
*
|
|
179
198
|
*/
|
|
180
199
|
domainCanonical?: string;
|
|
200
|
+
|
|
201
|
+
// shared workspace Builds
|
|
202
|
+
builds?: Record<string, WorkspaceBuildConfig>;
|
|
181
203
|
/**
|
|
182
204
|
* components (sub apps)
|
|
183
205
|
*/
|
|
@@ -189,4 +211,9 @@ export type Config<C extends ConfigProps = never> = {
|
|
|
189
211
|
meta?: {
|
|
190
212
|
labels?: Record<string, string>;
|
|
191
213
|
};
|
|
214
|
+
|
|
215
|
+
/**
|
|
216
|
+
* additional vars only for the runner in all jobs.
|
|
217
|
+
*/
|
|
218
|
+
runnerVariables?: Record<string, string>;
|
|
192
219
|
};
|
package/src/types/context.ts
CHANGED
|
@@ -1,18 +1,35 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { StringOrBashExpression } from "../bash/BashExpression";
|
|
2
|
+
import type {
|
|
3
|
+
BuildConfigFromWorkspace,
|
|
4
|
+
BuildConfigStandalone,
|
|
5
|
+
WorkspaceBuildConfig,
|
|
6
|
+
} from "../build";
|
|
7
|
+
import type { PredefinedVariables, SecretEnvVar } from "../context";
|
|
8
|
+
import type { DeployConfig } from "../deploy";
|
|
9
|
+
import type { VariableValue } from "../variables/VariableValue";
|
|
2
10
|
import type {
|
|
3
|
-
PipelineTrigger,
|
|
4
11
|
ComponentConfig,
|
|
5
12
|
Config,
|
|
6
13
|
EnvType,
|
|
14
|
+
PipelineTrigger,
|
|
7
15
|
} from "./config";
|
|
16
|
+
import type { BaseStage, CatladderJob } from "./jobs";
|
|
17
|
+
import type { PipelineType } from "./pipeline";
|
|
18
|
+
|
|
19
|
+
export type UnspecifiedEnvVars = Record<
|
|
20
|
+
string,
|
|
21
|
+
VariableValue | undefined | null
|
|
22
|
+
>;
|
|
8
23
|
|
|
9
|
-
export type EnvironmentEnvVars
|
|
10
|
-
|
|
24
|
+
export type EnvironmentEnvVars<
|
|
25
|
+
V extends UnspecifiedEnvVars = UnspecifiedEnvVars,
|
|
26
|
+
> = {
|
|
27
|
+
envVars: V & UnspecifiedEnvVars;
|
|
11
28
|
secretEnvVarKeys: SecretEnvVar[];
|
|
12
29
|
};
|
|
13
30
|
export type EnvironmentEnvVarPart = {
|
|
14
|
-
host:
|
|
15
|
-
url:
|
|
31
|
+
host: StringOrBashExpression;
|
|
32
|
+
url: StringOrBashExpression;
|
|
16
33
|
|
|
17
34
|
/**
|
|
18
35
|
* vars that only are injected in certain jobs, but not elsewhere
|
|
@@ -21,64 +38,175 @@ export type EnvironmentEnvVarPart = {
|
|
|
21
38
|
deploy: EnvironmentEnvVars;
|
|
22
39
|
build: EnvironmentEnvVars;
|
|
23
40
|
};
|
|
24
|
-
} & EnvironmentEnvVars
|
|
41
|
+
} & EnvironmentEnvVars<PredefinedVariables>;
|
|
42
|
+
// FIXME: align with EnvironmentContext
|
|
25
43
|
export type Environment = {
|
|
26
|
-
host:
|
|
27
|
-
url:
|
|
44
|
+
host: StringOrBashExpression;
|
|
45
|
+
url: StringOrBashExpression;
|
|
28
46
|
/**
|
|
29
47
|
* the full name of the app. We use this as RELEASE_NAME in kubernetes and the service name in google cloud run
|
|
30
48
|
*/
|
|
31
|
-
fullName:
|
|
49
|
+
fullName: StringOrBashExpression;
|
|
32
50
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
51
|
+
/**
|
|
52
|
+
* the environment slug without component name.
|
|
53
|
+
*/
|
|
54
|
+
slugPrefix: StringOrBashExpression;
|
|
55
|
+
/**
|
|
56
|
+
* the review slug, if it is a review app, null otherwise
|
|
57
|
+
*/
|
|
58
|
+
reviewSlug: StringOrBashExpression | null;
|
|
59
|
+
/**
|
|
60
|
+
* the full environment slug, including the componentName
|
|
61
|
+
*/
|
|
62
|
+
slug: StringOrBashExpression;
|
|
40
63
|
|
|
41
64
|
envType: EnvType;
|
|
42
65
|
} & EnvironmentEnvVarPart;
|
|
43
66
|
|
|
44
|
-
export type
|
|
45
|
-
refName: string;
|
|
46
|
-
reviewSlug: string;
|
|
47
|
-
buildTime: string;
|
|
48
|
-
buildId: string;
|
|
49
|
-
trigger: PipelineTrigger;
|
|
50
|
-
currentVersion: string;
|
|
51
|
-
};
|
|
52
|
-
|
|
53
|
-
type Workspace = {
|
|
67
|
+
export type YarnWorkspace = {
|
|
54
68
|
name: string;
|
|
55
69
|
location: string;
|
|
56
70
|
workspaceDependencies: string[];
|
|
57
71
|
mismatchedWorkspaceDependencies: string[];
|
|
58
72
|
};
|
|
59
|
-
export type
|
|
73
|
+
export type YarnPackageManagerInfoBase = {
|
|
60
74
|
type: "yarn";
|
|
61
75
|
version: string;
|
|
62
|
-
workspaces:
|
|
63
|
-
currentWorkspace?: Workspace;
|
|
76
|
+
workspaces: YarnWorkspace[];
|
|
64
77
|
isClassic: boolean;
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
export type YarnPackageManagerInfoComponent = YarnPackageManagerInfoBase & {
|
|
81
|
+
currentWorkspace?: YarnWorkspace;
|
|
65
82
|
componentIsInWorkspace: boolean;
|
|
66
83
|
pathsToCopyInDocker: string[];
|
|
84
|
+
currentWorkspaceDependencies: string[];
|
|
67
85
|
};
|
|
68
86
|
|
|
69
|
-
export type
|
|
87
|
+
export type PackageManagerInfoComponent = YarnPackageManagerInfoComponent;
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* not confuse with yarn workspaces
|
|
91
|
+
*/
|
|
92
|
+
export type PackageManagerInfoBase = YarnPackageManagerInfoBase;
|
|
70
93
|
|
|
71
94
|
export type ContextBeforeConfig = {
|
|
72
95
|
componentName: string;
|
|
73
96
|
fullConfig: Config;
|
|
74
|
-
|
|
75
|
-
packageManagerInfo?: PackageManagerInfo;
|
|
97
|
+
packageManagerInfo?: PackageManagerInfoComponent;
|
|
76
98
|
};
|
|
77
|
-
|
|
78
|
-
|
|
99
|
+
|
|
100
|
+
export type BuildContextBase = {
|
|
101
|
+
/**
|
|
102
|
+
* the directory where the component or workspace is located
|
|
103
|
+
*/
|
|
104
|
+
dir: string;
|
|
105
|
+
/**
|
|
106
|
+
* directories of all components that are part of the build.
|
|
107
|
+
* In case of a standalone build, this is just the dir of the component + yarn workspace dependencies (if mode = all)
|
|
108
|
+
*
|
|
109
|
+
* in case of a workspace this contains all components in the workspace (+ yarn workspace dependencies if mode = all)
|
|
110
|
+
*/
|
|
111
|
+
getComponentDirs: (mode: "direct" | "all") => string[];
|
|
112
|
+
};
|
|
113
|
+
|
|
114
|
+
export type BuildContextComponentBase = BuildContextBase;
|
|
115
|
+
|
|
116
|
+
export type BuildContextStandalone<
|
|
117
|
+
C extends BuildConfigStandalone = BuildConfigStandalone,
|
|
118
|
+
> = BuildContextComponentBase & {
|
|
119
|
+
config: C;
|
|
120
|
+
type: "standalone";
|
|
121
|
+
buildType: C["type"];
|
|
122
|
+
};
|
|
123
|
+
|
|
124
|
+
export type BuildContextFromWorkspace = BuildContextComponentBase & {
|
|
125
|
+
config: BuildConfigFromWorkspace;
|
|
126
|
+
workspaceName: string;
|
|
127
|
+
buildType: WorkspaceBuildConfig["type"];
|
|
128
|
+
/**
|
|
129
|
+
* merged docker config
|
|
130
|
+
*/
|
|
131
|
+
workspaceBuildConfig: WorkspaceBuildConfig;
|
|
132
|
+
type: "fromWorkspace";
|
|
133
|
+
};
|
|
134
|
+
|
|
135
|
+
export type BuildContextWorkspace = BuildContextBase & {
|
|
136
|
+
type: "workspace";
|
|
137
|
+
buildType: WorkspaceBuildConfig["type"];
|
|
138
|
+
config: WorkspaceBuildConfig;
|
|
139
|
+
};
|
|
140
|
+
|
|
141
|
+
export type BuildContextComponent =
|
|
142
|
+
| BuildContextStandalone
|
|
143
|
+
| BuildContextFromWorkspace;
|
|
144
|
+
|
|
145
|
+
export type BuildContext = BuildContextComponent | BuildContextWorkspace;
|
|
146
|
+
|
|
147
|
+
export type DeployContext = {
|
|
148
|
+
config: DeployConfig;
|
|
149
|
+
};
|
|
150
|
+
export type ComponentContext<
|
|
151
|
+
BC extends BuildContextComponent = BuildContextComponent,
|
|
152
|
+
> = {
|
|
153
|
+
type: "component";
|
|
154
|
+
env: string;
|
|
155
|
+
/**
|
|
156
|
+
* the name of the component
|
|
157
|
+
*/
|
|
158
|
+
name: string;
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* the merged component config.
|
|
162
|
+
*
|
|
163
|
+
* use build.config and deploy.config instead if you need something from there
|
|
164
|
+
*
|
|
165
|
+
*/
|
|
79
166
|
componentConfig: ComponentConfig;
|
|
167
|
+
build: BC;
|
|
168
|
+
deploy?: DeployContext | null;
|
|
80
169
|
fullConfig: Config;
|
|
81
170
|
environment: Environment;
|
|
82
|
-
|
|
83
|
-
|
|
171
|
+
|
|
172
|
+
trigger?: PipelineTrigger;
|
|
173
|
+
pipelineType?: PipelineType;
|
|
174
|
+
|
|
175
|
+
packageManagerInfo: PackageManagerInfoComponent;
|
|
176
|
+
|
|
177
|
+
customJobs?: CatladderJob[];
|
|
178
|
+
};
|
|
179
|
+
|
|
180
|
+
export type Context = ComponentContext | WorkspaceContext;
|
|
181
|
+
|
|
182
|
+
export type CatladderJobWithContext<S = BaseStage> = CatladderJob<S> & {
|
|
183
|
+
context: ComponentContext;
|
|
184
|
+
};
|
|
185
|
+
|
|
186
|
+
export const componentContextIsStandaloneBuild = (
|
|
187
|
+
context: ComponentContext<BuildContextComponent>,
|
|
188
|
+
): context is ComponentContext<BuildContextStandalone> => {
|
|
189
|
+
return context.build.type === "standalone";
|
|
190
|
+
};
|
|
191
|
+
|
|
192
|
+
export const componentContextHasWorkspaceBuild = (
|
|
193
|
+
context: ComponentContext<BuildContextComponent>,
|
|
194
|
+
): context is ComponentContext<BuildContextFromWorkspace> => {
|
|
195
|
+
return context.build.type === "fromWorkspace";
|
|
196
|
+
};
|
|
197
|
+
|
|
198
|
+
export type WorkspaceContext = {
|
|
199
|
+
type: "workspace";
|
|
200
|
+
/**
|
|
201
|
+
* the name of the workspace
|
|
202
|
+
*/
|
|
203
|
+
name: string;
|
|
204
|
+
fullConfig: Config;
|
|
205
|
+
workspaceConfig: WorkspaceBuildConfig;
|
|
206
|
+
packageManagerInfo: PackageManagerInfoBase;
|
|
207
|
+
components: Array<ComponentContext>;
|
|
208
|
+
build: BuildContextWorkspace;
|
|
209
|
+
trigger: PipelineTrigger;
|
|
210
|
+
pipelineType: PipelineType;
|
|
211
|
+
env: string;
|
|
84
212
|
};
|
|
@@ -1,33 +1,38 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type {
|
|
3
|
-
import type {
|
|
1
|
+
import type { StringOrBashExpression } from "../bash/BashExpression";
|
|
2
|
+
import type { BuildConfig } from "../build";
|
|
3
|
+
import type { DeployConfig } from "../deploy";
|
|
4
4
|
import type { Config, EnvConfigWithComponent, EnvType } from "./config";
|
|
5
|
-
import type {
|
|
5
|
+
import type { PipelineType } from "./pipeline";
|
|
6
6
|
|
|
7
7
|
export type EnvironmentContext<
|
|
8
|
-
B extends
|
|
9
|
-
D extends
|
|
8
|
+
B extends BuildConfig = BuildConfig,
|
|
9
|
+
D extends DeployConfig = DeployConfig,
|
|
10
10
|
> = {
|
|
11
11
|
envConfigRaw: EnvConfigWithComponent;
|
|
12
|
-
buildConfigRaw: false |
|
|
13
|
-
deployConfigRaw: false |
|
|
14
|
-
|
|
12
|
+
buildConfigRaw: false | B;
|
|
13
|
+
deployConfigRaw: false | D;
|
|
14
|
+
|
|
15
15
|
env: string;
|
|
16
16
|
envType: EnvType;
|
|
17
17
|
componentName: string;
|
|
18
|
-
fullName:
|
|
18
|
+
fullName: StringOrBashExpression;
|
|
19
19
|
/**
|
|
20
20
|
* the environment slug without component name.
|
|
21
21
|
*/
|
|
22
|
-
environmentSlugPrefix:
|
|
22
|
+
environmentSlugPrefix: StringOrBashExpression;
|
|
23
|
+
/**
|
|
24
|
+
* the review slug, if it is a review app, null otherwise
|
|
25
|
+
*/
|
|
26
|
+
reviewSlug: StringOrBashExpression | null;
|
|
23
27
|
/**
|
|
24
28
|
* the full environment slug, including the componentName
|
|
25
29
|
*/
|
|
26
|
-
environmentSlug:
|
|
27
|
-
gitlabEnvironmentName: string;
|
|
30
|
+
environmentSlug: StringOrBashExpression;
|
|
28
31
|
|
|
29
32
|
/**
|
|
30
33
|
* the full catladder config
|
|
31
34
|
*/
|
|
32
35
|
fullConfig: Config;
|
|
36
|
+
|
|
37
|
+
pipelineType?: PipelineType;
|
|
33
38
|
};
|