@catladder/pipeline 0.0.0-refactore-catenv-command-validates-argument-78d05852 → 0.0.0-reference-database-url-1befbbee
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 +15 -1
- package/dist/bash/BashExpression.d.ts +36 -0
- package/dist/bash/BashExpression.js +114 -0
- package/dist/bash/bashEscape.d.ts +37 -0
- package/dist/bash/bashEscape.js +119 -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.js +4 -2
- 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 +6 -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 -66
- 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 -20
- package/dist/build/docker.d.ts +37 -46
- package/dist/build/docker.js +65 -34
- package/dist/build/index.d.ts +14 -7
- package/dist/build/index.js +44 -17
- package/dist/build/node/buildJob.d.ts +8 -2
- package/dist/build/node/buildJob.js +39 -52
- package/dist/build/node/cache.d.ts +4 -5
- package/dist/build/node/cache.js +18 -24
- package/dist/build/node/constants.js +5 -3
- 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 +4 -3
- package/dist/build/node/yarn.js +11 -12
- package/dist/build/rails/build.d.ts +2 -2
- package/dist/build/rails/build.js +13 -6
- 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 +30 -11
- package/dist/build/sbom.d.ts +2 -2
- package/dist/build/sbom.js +13 -7
- package/dist/build/types.d.ts +160 -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 +262 -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 +21 -4
- 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 +79 -53
- 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 +37 -21
- 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.js +4 -2
- package/dist/deploy/cloudRun/artifactsRegistry.d.ts +8 -11
- package/dist/deploy/cloudRun/artifactsRegistry.js +15 -14
- package/dist/deploy/cloudRun/cleanup.d.ts +2 -2
- package/dist/deploy/cloudRun/cleanup.js +3 -1
- package/dist/deploy/cloudRun/cloudRunRevisions.d.ts +2 -2
- package/dist/deploy/cloudRun/cloudRunRevisions.js +7 -6
- package/dist/deploy/cloudRun/createJobs/cloudRunJobs.d.ts +8 -6
- package/dist/deploy/cloudRun/createJobs/cloudRunJobs.js +57 -106
- package/dist/deploy/cloudRun/createJobs/cloudRunServices.d.ts +3 -3
- package/dist/deploy/cloudRun/createJobs/cloudRunServices.js +79 -15
- package/dist/deploy/cloudRun/createJobs/common.d.ts +7 -7
- package/dist/deploy/cloudRun/createJobs/common.js +6 -3
- package/dist/deploy/cloudRun/createJobs/constants.d.ts +1 -0
- package/dist/deploy/cloudRun/createJobs/constants.js +7 -0
- package/dist/deploy/cloudRun/createJobs/execute/onDeploy.d.ts +3 -0
- package/dist/deploy/cloudRun/createJobs/execute/onDeploy.js +115 -0
- package/dist/deploy/cloudRun/createJobs/execute/schedules.d.ts +3 -0
- package/dist/deploy/cloudRun/createJobs/execute/schedules.js +173 -0
- package/dist/deploy/cloudRun/createJobs/getCloudRunDeployScripts.d.ts +2 -2
- package/dist/deploy/cloudRun/createJobs/getCloudRunDeployScripts.js +13 -5
- package/dist/deploy/cloudRun/createJobs/getCloudRunStopScripts.d.ts +2 -2
- package/dist/deploy/cloudRun/createJobs/getCloudRunStopScripts.js +7 -3
- package/dist/deploy/cloudRun/createJobs/healthCheck.d.ts +5 -0
- package/dist/deploy/cloudRun/createJobs/healthCheck.js +82 -0
- package/dist/deploy/cloudRun/createJobs/index.d.ts +2 -2
- package/dist/deploy/cloudRun/createJobs/index.js +26 -12
- 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 +25 -13
- package/dist/deploy/cloudRun/utils/cloudRunExecutionUrl.d.ts +10 -0
- package/dist/deploy/cloudRun/utils/cloudRunExecutionUrl.js +16 -0
- package/dist/deploy/cloudRun/utils/createArgsString.d.ts +2 -2
- package/dist/deploy/cloudRun/utils/createArgsString.js +3 -1
- package/dist/deploy/cloudRun/utils/database.d.ts +25 -4
- package/dist/deploy/cloudRun/utils/database.js +49 -15
- package/dist/deploy/cloudRun/utils/gcloudServiceAccountLoginCommands.d.ts +2 -2
- package/dist/deploy/cloudRun/utils/gcloudServiceAccountLoginCommands.js +3 -1
- package/dist/deploy/cloudRun/utils/getJobOrServiceArgs.d.ts +2 -0
- package/dist/deploy/cloudRun/utils/getJobOrServiceArgs.js +12 -0
- package/dist/deploy/cloudRun/utils/getServiceName.d.ts +2 -2
- package/dist/deploy/cloudRun/utils/getServiceName.js +3 -1
- package/dist/deploy/cloudRun/utils/jobName.d.ts +6 -1
- package/dist/deploy/cloudRun/utils/jobName.js +18 -4
- package/dist/deploy/cloudRun/utils/removeFirstLinesFromCommandOutput.js +3 -1
- 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 +6 -6
- 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 +17 -19
- 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 +8 -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 +1 -1
- package/dist/deploy/types/dockerTag.js +3 -1
- package/dist/deploy/types/googleCloudRun.d.ts +291 -16
- package/dist/deploy/types/googleCloudRun.js +28 -1
- package/dist/deploy/types/index.d.ts +8 -7
- package/dist/deploy/types/index.js +21 -10
- package/dist/deploy/types/kubernetes.d.ts +21 -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 +305 -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 +264 -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 +4 -2
- package/dist/pipeline/packageManager.js +56 -19
- package/dist/pipeline/yarn/yarnUtils.d.ts +2 -2
- package/dist/pipeline/yarn/yarnUtils.js +18 -15
- package/dist/rules/index.d.ts +10 -3
- package/dist/rules/index.js +35 -17
- 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 +54 -36
- package/dist/types/config.js +5 -2
- package/dist/types/context.d.ts +123 -38
- 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 +3 -1
- package/dist/types/index.js +16 -8
- 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 -48
- 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-health-check-defaults.test.ts.snap +1394 -0
- package/examples/__snapshots__/cloud-run-health-check-only-startup.test.ts.snap +1394 -0
- package/examples/__snapshots__/cloud-run-health-check.test.ts.snap +1394 -0
- package/examples/__snapshots__/cloud-run-http2.test.ts.snap +1394 -0
- package/examples/__snapshots__/cloud-run-llama.test.ts.snap +624 -0
- package/examples/__snapshots__/cloud-run-memory-limit.test.ts.snap +1394 -0
- package/examples/__snapshots__/cloud-run-meteor-with-worker.test.ts.snap +1394 -0
- package/examples/__snapshots__/cloud-run-nextjs.test.ts.snap +1410 -0
- package/examples/__snapshots__/cloud-run-no-cpu-throttling.test.ts.snap +1394 -0
- package/examples/__snapshots__/cloud-run-no-service.test.ts.snap +1502 -0
- package/examples/__snapshots__/cloud-run-non-public.test.ts.snap +1394 -0
- package/examples/__snapshots__/cloud-run-post-stop-job.test.ts.snap +1412 -0
- package/examples/__snapshots__/cloud-run-service-custom-vpc-connector.test.ts.snap +1462 -0
- package/examples/__snapshots__/cloud-run-service-custom-vpc.test.ts.snap +1462 -0
- package/examples/__snapshots__/cloud-run-service-gen2.test.ts.snap +1394 -0
- package/examples/__snapshots__/cloud-run-service-increase-timout.test.ts.snap +1394 -0
- package/examples/__snapshots__/cloud-run-service-with-volumes.test.ts.snap +1466 -0
- package/examples/__snapshots__/cloud-run-storybook.test.ts.snap +1284 -0
- package/examples/__snapshots__/cloud-run-with-gpu.test.ts.snap +1394 -0
- package/examples/__snapshots__/cloud-run-with-ngnix.test.ts.snap +1394 -0
- package/examples/__snapshots__/cloud-run-with-sql-legacy-jobs.test.ts.snap +1709 -0
- package/examples/__snapshots__/cloud-run-with-sql-multiple-dbs.test.ts.snap +4515 -0
- package/examples/__snapshots__/cloud-run-with-sql-reuse-db.test.ts.snap +2950 -0
- package/examples/__snapshots__/cloud-run-with-sql.test.ts.snap +1772 -0
- package/examples/__snapshots__/cloud-run-with-worker.test.ts.snap +1402 -0
- package/examples/__snapshots__/custom-build-job-with-tests.test.ts.snap +1261 -0
- package/examples/__snapshots__/custom-build-job.test.ts.snap +1156 -0
- package/examples/__snapshots__/custom-deploy.test.ts.snap +1059 -0
- package/examples/__snapshots__/custom-envs.test.ts.snap +786 -0
- package/examples/__snapshots__/custom-sbom-java.test.ts.snap +1152 -0
- package/examples/__snapshots__/custom-verify-job.test.ts.snap +1606 -0
- package/examples/__snapshots__/git-submodule.test.ts.snap +1395 -0
- package/examples/__snapshots__/kubernetes-application-customization.test.ts.snap +1713 -0
- package/examples/__snapshots__/kubernetes-with-cloud-sql.test.ts.snap +1733 -0
- package/examples/__snapshots__/kubernetes-with-jobs.test.ts.snap +3265 -0
- package/examples/__snapshots__/kubernetes-with-mongodb.test.ts.snap +1837 -0
- package/examples/__snapshots__/local-dot-env.test.ts.snap +1318 -0
- package/examples/__snapshots__/meteor-kubernetes.test.ts.snap +1790 -0
- package/examples/__snapshots__/multiline-var.test.ts.snap +5585 -0
- package/examples/__snapshots__/native-app.test.ts.snap +2210 -0
- package/examples/__snapshots__/node-build-with-custom-image.test.ts.snap +1394 -0
- package/examples/__snapshots__/node-build-with-docker-additions.test.ts.snap +1402 -0
- package/examples/__snapshots__/override-secrets.test.ts.snap +1419 -0
- package/examples/__snapshots__/rails-k8s-with-worker-dockerfile.test.ts.snap +1464 -0
- package/examples/__snapshots__/rails-k8s-with-worker.test.ts.snap +1444 -0
- package/examples/__snapshots__/referencing-other-vars.test.ts.snap +4645 -0
- package/examples/__snapshots__/wait-for-other-deploy.test.ts.snap +1424 -0
- package/examples/__snapshots__/workspace-api-www-turbo-cache.test.ts.snap +2298 -0
- package/examples/__snapshots__/workspace-api-www.test.ts.snap +2290 -0
- package/examples/__utils__/helpers.ts +9 -12
- package/examples/cloud-run-health-check-defaults.test.ts +11 -0
- package/examples/cloud-run-health-check-defaults.ts +28 -0
- package/examples/cloud-run-health-check-only-startup.test.ts +11 -0
- package/examples/cloud-run-health-check-only-startup.ts +38 -0
- package/examples/cloud-run-health-check.test.ts +11 -0
- package/examples/cloud-run-health-check.ts +45 -0
- package/examples/cloud-run-http2.test.ts +11 -0
- package/examples/cloud-run-http2.ts +29 -0
- package/examples/cloud-run-llama.test.ts +11 -0
- package/examples/cloud-run-llama.ts +40 -0
- package/examples/cloud-run-memory-limit.test.ts +11 -0
- package/examples/cloud-run-memory-limit.ts +12 -7
- package/examples/cloud-run-meteor-with-worker.test.ts +11 -0
- package/examples/cloud-run-meteor-with-worker.ts +13 -7
- 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 +8 -6
- package/examples/cloud-run-no-service.test.ts +11 -0
- package/examples/cloud-run-no-service.ts +39 -0
- package/examples/cloud-run-non-public.test.ts +11 -0
- package/examples/cloud-run-non-public.ts +7 -6
- package/examples/cloud-run-post-stop-job.test.ts +11 -0
- package/examples/cloud-run-post-stop-job.ts +15 -6
- package/examples/cloud-run-service-custom-vpc-connector.test.ts +11 -0
- package/examples/cloud-run-service-custom-vpc-connector.ts +37 -0
- package/examples/cloud-run-service-custom-vpc.test.ts +11 -0
- package/examples/cloud-run-service-custom-vpc.ts +39 -0
- package/examples/cloud-run-service-gen2.test.ts +11 -0
- package/examples/cloud-run-service-gen2.ts +8 -6
- 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 +64 -0
- package/examples/cloud-run-storybook.test.ts +11 -0
- package/examples/cloud-run-storybook.ts +33 -0
- package/examples/cloud-run-with-gpu.test.ts +11 -0
- package/examples/cloud-run-with-gpu.ts +30 -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-legacy-jobs.test.ts +11 -0
- package/examples/cloud-run-with-sql-legacy-jobs.ts +49 -0
- package/examples/cloud-run-with-sql-multiple-dbs.test.ts +11 -0
- package/examples/cloud-run-with-sql-multiple-dbs.ts +87 -0
- package/examples/cloud-run-with-sql-reuse-db.test.ts +11 -0
- package/examples/cloud-run-with-sql-reuse-db.ts +7 -6
- package/examples/cloud-run-with-sql.test.ts +11 -0
- package/examples/cloud-run-with-sql.ts +45 -24
- package/examples/cloud-run-with-worker.test.ts +11 -0
- package/examples/cloud-run-with-worker.ts +8 -6
- package/examples/custom-build-job-with-tests.test.ts +11 -0
- package/examples/custom-build-job-with-tests.ts +7 -6
- package/examples/custom-build-job.test.ts +11 -0
- package/examples/custom-build-job.ts +7 -6
- package/examples/custom-deploy.test.ts +11 -0
- package/examples/custom-deploy.ts +22 -14
- package/examples/custom-envs.test.ts +11 -0
- package/examples/custom-envs.ts +7 -6
- package/examples/custom-sbom-java.test.ts +11 -0
- package/examples/custom-sbom-java.ts +12 -8
- package/examples/custom-verify-job.test.ts +11 -0
- package/examples/custom-verify-job.ts +65 -0
- 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 +9 -6
- package/examples/kubernetes-with-cloud-sql.test.ts +11 -0
- package/examples/kubernetes-with-cloud-sql.ts +9 -6
- package/examples/kubernetes-with-jobs.test.ts +11 -0
- package/examples/kubernetes-with-jobs.ts +9 -6
- package/examples/kubernetes-with-mongodb.test.ts +11 -0
- package/examples/kubernetes-with-mongodb.ts +9 -6
- 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 +6 -7
- 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 +24 -19
- package/examples/node-build-with-custom-image.test.ts +11 -0
- package/examples/node-build-with-custom-image.ts +7 -6
- package/examples/node-build-with-docker-additions.test.ts +11 -0
- package/examples/node-build-with-docker-additions.ts +7 -6
- package/examples/override-secrets.test.ts +11 -0
- package/examples/override-secrets.ts +44 -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 +13 -13
- 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 +6 -5
- 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 +23 -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 +164 -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 +63 -0
- package/src/build/base/__tests__/createArtifactsConfig.test.ts +3 -3
- package/src/build/base/constants.ts +1 -1
- 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 +40 -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 +29 -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 +4 -2
- package/src/build/custom/testJob.ts +24 -21
- package/src/build/docker.ts +110 -49
- package/src/build/index.ts +45 -11
- package/src/build/node/buildJob.ts +68 -69
- package/src/build/node/cache.ts +28 -34
- package/src/build/node/constants.ts +2 -2
- package/src/build/node/index.ts +13 -4
- package/src/build/node/meteor.ts +19 -24
- package/src/build/node/testJob.ts +44 -25
- package/src/build/node/yarn.ts +22 -15
- package/src/build/rails/build.ts +15 -9
- package/src/build/rails/index.ts +4 -2
- package/src/build/rails/test.ts +41 -12
- package/src/build/sbom.ts +21 -11
- package/src/build/types.ts +198 -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 +148 -0
- package/src/context/createWorkspaceContext.ts +56 -0
- package/src/context/getBuildInfoVariables.ts +36 -0
- package/src/context/getEnvConfig.ts +25 -5
- 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 +101 -83
- package/src/context/getLabels.ts +8 -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 -1
- package/src/deploy/cloudRun/artifactsRegistry.ts +32 -28
- package/src/deploy/cloudRun/cleanup.ts +5 -5
- package/src/deploy/cloudRun/cloudRunRevisions.ts +9 -11
- package/src/deploy/cloudRun/createJobs/cloudRunJobs.ts +71 -153
- package/src/deploy/cloudRun/createJobs/cloudRunServices.ts +65 -26
- package/src/deploy/cloudRun/createJobs/common.ts +7 -7
- package/src/deploy/cloudRun/createJobs/constants.ts +1 -0
- package/src/deploy/cloudRun/createJobs/execute/onDeploy.ts +102 -0
- package/src/deploy/cloudRun/createJobs/execute/schedules.ts +186 -0
- package/src/deploy/cloudRun/createJobs/getCloudRunDeployScripts.ts +27 -16
- package/src/deploy/cloudRun/createJobs/getCloudRunStopScripts.ts +9 -11
- package/src/deploy/cloudRun/createJobs/healthCheck.ts +64 -0
- package/src/deploy/cloudRun/createJobs/index.ts +20 -14
- package/src/deploy/cloudRun/createJobs/volumes.ts +23 -0
- package/src/deploy/cloudRun/index.ts +94 -60
- package/src/deploy/cloudRun/utils/cloudRunExecutionUrl.ts +20 -0
- package/src/deploy/cloudRun/utils/createArgsString.ts +6 -2
- package/src/deploy/cloudRun/utils/database.ts +116 -9
- package/src/deploy/cloudRun/utils/gcloudServiceAccountLoginCommands.ts +5 -3
- package/src/deploy/cloudRun/utils/getJobOrServiceArgs.ts +18 -0
- package/src/deploy/cloudRun/utils/getServiceName.ts +2 -2
- package/src/deploy/cloudRun/utils/jobName.ts +22 -2
- package/src/deploy/cloudRun/utils/removeFirstLinesFromCommandOutput.ts +1 -1
- 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 +6 -7
- 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 +25 -20
- package/src/deploy/kubernetes/mongodb.ts +15 -15
- package/src/deploy/sbom.ts +20 -10
- package/src/deploy/types/base.ts +3 -3
- package/src/deploy/types/custom.ts +3 -7
- package/src/deploy/types/googleCloudRun.ts +359 -2
- package/src/deploy/types/index.ts +9 -2
- package/src/deploy/types/kubernetes.ts +1 -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 +17 -37
- package/src/pipeline/createJobsForWorkspace.ts +12 -0
- package/src/pipeline/createMainPipeline.ts +118 -0
- package/src/pipeline/generatePipelineFiles.ts +100 -0
- package/src/pipeline/getPipelineStages.ts +23 -0
- package/src/pipeline/gitlab/createGitlabJobs.ts +398 -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 +42 -18
- package/src/pipeline/yarn/yarnUtils.ts +15 -12
- package/src/rules/index.ts +41 -18
- package/src/runner/index.ts +0 -1
- package/src/types/config.ts +62 -23
- package/src/types/context.ts +167 -36
- 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 +2 -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 -34559
- 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/createJobs/variables.d.ts +0 -5
- package/dist/deploy/cloudRun/createJobs/variables.js +0 -19
- 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 -1839
- package/examples/__snapshots__/cloud-run-meteor-with-worker.ts.snap +0 -1807
- package/examples/__snapshots__/cloud-run-no-cpu-throttling.ts.snap +0 -1839
- package/examples/__snapshots__/cloud-run-non-public.ts.snap +0 -1839
- package/examples/__snapshots__/cloud-run-post-stop-job.ts.snap +0 -1849
- package/examples/__snapshots__/cloud-run-service-gen2.ts.snap +0 -1839
- package/examples/__snapshots__/cloud-run-with-sql-reuse-db.ts.snap +0 -3647
- package/examples/__snapshots__/cloud-run-with-sql.ts.snap +0 -3658
- package/examples/__snapshots__/cloud-run-with-worker.ts.snap +0 -1847
- package/examples/__snapshots__/custom-build-job-with-tests.ts.snap +0 -1663
- package/examples/__snapshots__/custom-build-job.ts.snap +0 -1375
- package/examples/__snapshots__/custom-deploy.ts.snap +0 -1625
- package/examples/__snapshots__/custom-envs.ts.snap +0 -1127
- package/examples/__snapshots__/custom-sbom-java.ts.snap +0 -1383
- package/examples/__snapshots__/kubernetes-application-customization.ts.snap +0 -2573
- package/examples/__snapshots__/kubernetes-with-cloud-sql-legacy.ts.snap +0 -2533
- package/examples/__snapshots__/kubernetes-with-cloud-sql.ts.snap +0 -2545
- package/examples/__snapshots__/kubernetes-with-jobs.ts.snap +0 -4660
- package/examples/__snapshots__/kubernetes-with-mongodb.ts.snap +0 -2737
- package/examples/__snapshots__/meteor-kubernetes.ts.snap +0 -2658
- package/examples/__snapshots__/native-app.ts.snap +0 -3007
- package/examples/__snapshots__/node-build-with-custom-image.ts.snap +0 -1839
- package/examples/__snapshots__/node-build-with-docker-additions.ts.snap +0 -1839
- package/examples/__snapshots__/rails-k8s-with-worker.ts.snap +0 -4291
- package/examples/__snapshots__/wait-for-other-deploy.ts.snap +0 -2049
- 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/createJobs/variables.ts +0 -21
- 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 -46
- /package/dist/{context/__tests__/resolveReferences.test.d.ts → config/__tests__/getAllEnvs.test.d.ts} +0 -0
|
@@ -1,26 +1,29 @@
|
|
|
1
1
|
import { existsSync } from "fs";
|
|
2
2
|
import { join } from "path";
|
|
3
3
|
import { pathEqual } from "path-equal";
|
|
4
|
-
import type {
|
|
4
|
+
import type {
|
|
5
|
+
Config,
|
|
6
|
+
PackageManagerInfoBase,
|
|
7
|
+
PackageManagerInfoComponent,
|
|
8
|
+
} from "../types";
|
|
5
9
|
import {
|
|
6
10
|
getWorkspaces,
|
|
7
11
|
getYarnVersion,
|
|
8
12
|
getWorkspaceDependencies,
|
|
9
13
|
} from "./yarn/yarnUtils";
|
|
14
|
+
import memoizee from "memoizee";
|
|
10
15
|
|
|
11
|
-
export const
|
|
16
|
+
export const getPackageManagerInfoForComponent = async (
|
|
12
17
|
config: Config,
|
|
13
|
-
componentName: string
|
|
14
|
-
): Promise<
|
|
18
|
+
componentName: string,
|
|
19
|
+
): Promise<PackageManagerInfoComponent> => {
|
|
20
|
+
const baseInfo = await getPackageManagerInfoBase();
|
|
21
|
+
const { workspaces } = baseInfo;
|
|
15
22
|
// currently only supports yarn
|
|
16
|
-
const version = await getYarnVersion();
|
|
17
|
-
if (!version) throw new Error("could not get yarn version");
|
|
18
|
-
const isClassic = version.startsWith("1");
|
|
19
23
|
|
|
20
24
|
const component = config.components[componentName];
|
|
21
|
-
const workspaces = await getWorkspaces(isClassic);
|
|
22
25
|
const currentWorkspace = workspaces.find((w) =>
|
|
23
|
-
pathEqual(component.dir, w.location)
|
|
26
|
+
pathEqual(component.dir, w.location),
|
|
24
27
|
);
|
|
25
28
|
const componentIsInWorkspace = Boolean(currentWorkspace);
|
|
26
29
|
const workspaceRoot = "."; // currently we assume the root folder, later on we might support nested workspaces
|
|
@@ -47,20 +50,41 @@ export const getPackageManagerInfo = async (
|
|
|
47
50
|
: [];
|
|
48
51
|
|
|
49
52
|
const pathsToCopyInDocker = [
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
53
|
+
...new Set([
|
|
54
|
+
packageJson,
|
|
55
|
+
...(workspacePackageJson ? [workspacePackageJson] : []),
|
|
56
|
+
lockFile,
|
|
57
|
+
...configFilePaths,
|
|
58
|
+
...currentWorkspaceDependencies,
|
|
59
|
+
]),
|
|
55
60
|
];
|
|
56
61
|
return {
|
|
57
|
-
|
|
58
|
-
workspaces,
|
|
59
|
-
version,
|
|
60
|
-
isClassic,
|
|
62
|
+
...baseInfo,
|
|
61
63
|
currentWorkspace,
|
|
62
64
|
currentWorkspaceDependencies,
|
|
63
65
|
componentIsInWorkspace,
|
|
64
66
|
pathsToCopyInDocker,
|
|
65
67
|
};
|
|
66
68
|
};
|
|
69
|
+
|
|
70
|
+
const _getPackageManagerInfoBase =
|
|
71
|
+
async (): Promise<PackageManagerInfoBase> => {
|
|
72
|
+
// currently only supports yarn
|
|
73
|
+
|
|
74
|
+
const version = await getYarnVersion();
|
|
75
|
+
if (!version) throw new Error("could not get yarn version");
|
|
76
|
+
const isClassic = version.startsWith("1");
|
|
77
|
+
|
|
78
|
+
const workspaces = await getWorkspaces(isClassic);
|
|
79
|
+
|
|
80
|
+
return {
|
|
81
|
+
type: "yarn",
|
|
82
|
+
workspaces,
|
|
83
|
+
version,
|
|
84
|
+
isClassic,
|
|
85
|
+
};
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
export const getPackageManagerInfoBase = memoizee(_getPackageManagerInfoBase, {
|
|
89
|
+
promise: true,
|
|
90
|
+
});
|
|
@@ -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,32 +15,34 @@ 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
|
);
|
|
38
41
|
|
|
39
42
|
// recursivly get all workspace dependencies
|
|
40
43
|
export const getWorkspaceDependencies = (
|
|
41
44
|
ws: YarnWorkspace,
|
|
42
|
-
allWorkspaces: YarnWorkspace[]
|
|
45
|
+
allWorkspaces: YarnWorkspace[],
|
|
43
46
|
): string[] => {
|
|
44
47
|
return ws
|
|
45
48
|
? ([...ws.workspaceDependencies, ...ws.mismatchedWorkspaceDependencies]
|
|
@@ -47,7 +50,7 @@ export const getWorkspaceDependencies = (
|
|
|
47
50
|
// we have to do this recursivly
|
|
48
51
|
|
|
49
52
|
const otherWorkspace = allWorkspaces.find(
|
|
50
|
-
(w) => w.location === location
|
|
53
|
+
(w) => w.location === location,
|
|
51
54
|
);
|
|
52
55
|
|
|
53
56
|
if (otherWorkspace) {
|
package/src/rules/index.ts
CHANGED
|
@@ -1,33 +1,43 @@
|
|
|
1
1
|
import type { GitlabRule } from "../types";
|
|
2
|
+
export const RULE_CONDITION_MAIN_BRANCH =
|
|
3
|
+
"$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH";
|
|
4
|
+
|
|
5
|
+
export const RULE_CONDITION_RELEASE_COMMIT =
|
|
6
|
+
"$CI_COMMIT_MESSAGE =~ /^chore\\(release\\).*/";
|
|
2
7
|
|
|
8
|
+
export const RULE_CONDITION_NOT_RELEASE_COMMIT =
|
|
9
|
+
"$CI_COMMIT_MESSAGE !~ /^chore\\(release\\).*/";
|
|
10
|
+
|
|
11
|
+
export const RULE_IS_MAIN_BRANCH: GitlabRule = {
|
|
12
|
+
if: RULE_CONDITION_MAIN_BRANCH,
|
|
13
|
+
};
|
|
14
|
+
export const RULE_IS_MAIN_BRANCH_AND_NOT_RELEASE_COMMIT: GitlabRule = {
|
|
15
|
+
if: RULE_CONDITION_MAIN_BRANCH + " && " + RULE_CONDITION_NOT_RELEASE_COMMIT,
|
|
16
|
+
};
|
|
3
17
|
export const RULE_NEVER_ON_RELEASE_COMMIT: GitlabRule = {
|
|
4
|
-
if:
|
|
18
|
+
if: RULE_CONDITION_RELEASE_COMMIT,
|
|
5
19
|
when: "never",
|
|
6
20
|
};
|
|
7
|
-
export const RULES_ALWAYS: GitlabRule[] = [
|
|
8
|
-
{
|
|
9
|
-
if: "$CI_COMMIT_TAG",
|
|
10
|
-
},
|
|
11
|
-
RULE_NEVER_ON_RELEASE_COMMIT,
|
|
12
|
-
{
|
|
13
|
-
if: "$CI_COMMIT_BRANCH =~ /^[0-9]+.([0-9]+|x).x$/",
|
|
14
|
-
},
|
|
15
|
-
{
|
|
16
|
-
if: "$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH",
|
|
17
|
-
},
|
|
18
|
-
{
|
|
19
|
-
if: "$CI_MERGE_REQUEST_ID",
|
|
20
|
-
},
|
|
21
|
-
];
|
|
22
21
|
|
|
23
|
-
export const
|
|
24
|
-
|
|
22
|
+
export const RULE_NEVER_ON_SCHEDULE: GitlabRule = {
|
|
23
|
+
if: '$CI_PIPELINE_SOURCE == "schedule"',
|
|
24
|
+
when: "never",
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
export const RULE_IS_MERGE_REQUEST: GitlabRule = {
|
|
28
|
+
if: "$CI_MERGE_REQUEST_ID",
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
export const RULE_IS_TAGGED_RELEASE: GitlabRule = {
|
|
32
|
+
if: "$CI_COMMIT_TAG",
|
|
33
|
+
};
|
|
25
34
|
|
|
26
35
|
export const RULE_CONDITION_HOTFIX_BRANCH =
|
|
27
36
|
"$CI_COMMIT_BRANCH =~ /^[0-9]+.([0-9]+|x).x$/";
|
|
28
37
|
|
|
29
38
|
export const RULES_RELEASE: GitlabRule[] = [
|
|
30
39
|
RULE_NEVER_ON_RELEASE_COMMIT,
|
|
40
|
+
RULE_NEVER_ON_SCHEDULE,
|
|
31
41
|
{
|
|
32
42
|
if: RULE_CONDITION_MAIN_BRANCH + ' && $AUTO_RELEASE == "true"',
|
|
33
43
|
when: "on_success",
|
|
@@ -41,3 +51,16 @@ export const RULES_RELEASE: GitlabRule[] = [
|
|
|
41
51
|
when: "manual",
|
|
42
52
|
},
|
|
43
53
|
];
|
|
54
|
+
|
|
55
|
+
export const RULES_MANUAL_RELEASE: GitlabRule[] = [
|
|
56
|
+
RULE_NEVER_ON_RELEASE_COMMIT,
|
|
57
|
+
RULE_NEVER_ON_SCHEDULE,
|
|
58
|
+
{
|
|
59
|
+
if: RULE_CONDITION_MAIN_BRANCH,
|
|
60
|
+
when: "manual",
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
if: RULE_CONDITION_HOTFIX_BRANCH,
|
|
64
|
+
when: "manual",
|
|
65
|
+
},
|
|
66
|
+
];
|
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 = {
|
|
@@ -83,7 +83,7 @@ export type DefaultEnvConfig = {
|
|
|
83
83
|
/**
|
|
84
84
|
* how the app is built and its runtime
|
|
85
85
|
*/
|
|
86
|
-
build: BuildConfig;
|
|
86
|
+
build: BuildConfig | false;
|
|
87
87
|
/**
|
|
88
88
|
* environment variables
|
|
89
89
|
*/
|
|
@@ -94,6 +94,18 @@ export type DevLocalEnvConfig = {
|
|
|
94
94
|
vars?: EnvVars;
|
|
95
95
|
port?: number;
|
|
96
96
|
};
|
|
97
|
+
type AddOverrideFunction<T> = {
|
|
98
|
+
[K in keyof T]:
|
|
99
|
+
| T[K] // either accept the value
|
|
100
|
+
| ((defaultValue: T[K]) => T[K]) // or function that returns the value
|
|
101
|
+
| (T[K] extends Record<string, unknown> | undefined // unknown is important, see https://stackoverflow.com/questions/71422178/typescript-record-accepts-array-why
|
|
102
|
+
? AddOverrideFunction<T[K]>
|
|
103
|
+
: never); // or a nested object
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
type EnvConfigWithOverride<E extends EnvType = EnvType> = AddOverrideFunction<
|
|
107
|
+
EnvConfig<E>
|
|
108
|
+
>;
|
|
97
109
|
export type EnvConfig<E extends EnvType = EnvType> = {
|
|
98
110
|
/**
|
|
99
111
|
* type of the env (stage, prod, review, dev)
|
|
@@ -107,19 +119,19 @@ export type EnvConfig<E extends EnvType = EnvType> = {
|
|
|
107
119
|
|
|
108
120
|
export type EnvConfigWithComponent = EnvConfig<EnvType> & ComponentConfig;
|
|
109
121
|
|
|
110
|
-
export type CustomEnv =
|
|
122
|
+
export type CustomEnv = EnvConfigWithOverride & {
|
|
111
123
|
type: EnvType;
|
|
112
124
|
};
|
|
113
125
|
export type Env<C extends ConfigProps = never> = {
|
|
114
126
|
/**
|
|
115
127
|
* local is a special env that is only used in local development
|
|
116
128
|
*/
|
|
117
|
-
local?: DevLocalEnvConfig
|
|
129
|
+
local?: AddOverrideFunction<DevLocalEnvConfig>;
|
|
118
130
|
|
|
119
|
-
dev?:
|
|
120
|
-
stage?:
|
|
121
|
-
review?:
|
|
122
|
-
prod?:
|
|
131
|
+
dev?: EnvConfigWithOverride<"dev"> | false;
|
|
132
|
+
stage?: EnvConfigWithOverride<"stage"> | false;
|
|
133
|
+
review?: EnvConfigWithOverride<"review"> | false;
|
|
134
|
+
prod?: EnvConfigWithOverride<"prod"> | false;
|
|
123
135
|
// unfortunatly, typescript does not properly support objects with a mix of known and unknown properties.
|
|
124
136
|
// for backwards compatiblity we allow unknown props, but we cannot type it (typescript problem)
|
|
125
137
|
// however, we now support providing custom envs through a generic parameter of `Config`
|
|
@@ -143,18 +155,32 @@ export type ComponentConfig<C extends ConfigProps = never> = {
|
|
|
143
155
|
* to let us know about why you need to use custom jobs.
|
|
144
156
|
* This feedback will help us to generalize use cases
|
|
145
157
|
*/
|
|
146
|
-
customJobs?:
|
|
158
|
+
customJobs?:
|
|
159
|
+
| CatladderJob[]
|
|
160
|
+
| ((context: Omit<ComponentContext, "customJobs">) => CatladderJob[]);
|
|
147
161
|
|
|
148
162
|
/**
|
|
149
|
-
*
|
|
163
|
+
* whether to create a .env
|
|
150
164
|
*
|
|
151
165
|
* Be careful, this will overwrite any existing .env file!
|
|
166
|
+
*
|
|
167
|
+
* if set to true it will create .env locally and during build.
|
|
168
|
+
* Be careful: the .env file usually ends up in the build artifacts.
|
|
169
|
+
* Use this for apps and clients where env does not contain any secrets
|
|
170
|
+
*
|
|
171
|
+
*
|
|
172
|
+
* if set to "local" it will only create .env file locally.
|
|
173
|
+
* Use this in combination with @dotenvx/dotenvx or node 20 to start apps locally with .env files
|
|
174
|
+
* During build and runtime, it relies on the env vars set in the environment
|
|
175
|
+
*
|
|
176
|
+
* @defaultValue true
|
|
177
|
+
*
|
|
152
178
|
*/
|
|
153
|
-
dotEnv?: boolean;
|
|
179
|
+
dotEnv?: boolean | "local";
|
|
154
180
|
/**
|
|
155
|
-
*
|
|
181
|
+
* whether to create a env.d.ts localy and during build jobs
|
|
156
182
|
*
|
|
157
|
-
*
|
|
183
|
+
* @defaultValue true
|
|
158
184
|
*/
|
|
159
185
|
envDTs?: boolean;
|
|
160
186
|
} & DefaultEnvConfig;
|
|
@@ -164,6 +190,11 @@ export type ConfigProps = {
|
|
|
164
190
|
};
|
|
165
191
|
|
|
166
192
|
export type Config<C extends ConfigProps = never> = {
|
|
193
|
+
/**
|
|
194
|
+
* the pipeline type to generate, defaults to gitlab
|
|
195
|
+
*/
|
|
196
|
+
pipelineType?: PipelineType;
|
|
197
|
+
|
|
167
198
|
/**
|
|
168
199
|
* name of the customer or group
|
|
169
200
|
*/
|
|
@@ -178,6 +209,9 @@ export type Config<C extends ConfigProps = never> = {
|
|
|
178
209
|
*
|
|
179
210
|
*/
|
|
180
211
|
domainCanonical?: string;
|
|
212
|
+
|
|
213
|
+
// shared workspace Builds
|
|
214
|
+
builds?: Record<string, WorkspaceBuildConfig>;
|
|
181
215
|
/**
|
|
182
216
|
* components (sub apps)
|
|
183
217
|
*/
|
|
@@ -189,4 +223,9 @@ export type Config<C extends ConfigProps = never> = {
|
|
|
189
223
|
meta?: {
|
|
190
224
|
labels?: Record<string, string>;
|
|
191
225
|
};
|
|
226
|
+
|
|
227
|
+
/**
|
|
228
|
+
* additional vars only for the runner in all jobs.
|
|
229
|
+
*/
|
|
230
|
+
runnerVariables?: Record<string, string>;
|
|
192
231
|
};
|
package/src/types/context.ts
CHANGED
|
@@ -1,19 +1,33 @@
|
|
|
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";
|
|
8
18
|
|
|
9
|
-
export type
|
|
10
|
-
|
|
19
|
+
export type UnspecifiedEnvVars = Record<
|
|
20
|
+
string,
|
|
21
|
+
VariableValue | undefined | null
|
|
22
|
+
>;
|
|
23
|
+
|
|
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: string;
|
|
15
|
-
url: string;
|
|
16
|
-
|
|
17
31
|
/**
|
|
18
32
|
* vars that only are injected in certain jobs, but not elsewhere
|
|
19
33
|
*/
|
|
@@ -21,65 +35,182 @@ export type EnvironmentEnvVarPart = {
|
|
|
21
35
|
deploy: EnvironmentEnvVars;
|
|
22
36
|
build: EnvironmentEnvVars;
|
|
23
37
|
};
|
|
24
|
-
} & EnvironmentEnvVars
|
|
38
|
+
} & EnvironmentEnvVars<PredefinedVariables>;
|
|
39
|
+
// FIXME: align with EnvironmentContext
|
|
25
40
|
export type Environment = {
|
|
26
|
-
host: string;
|
|
27
|
-
url: string;
|
|
28
41
|
/**
|
|
29
42
|
* the full name of the app. We use this as RELEASE_NAME in kubernetes and the service name in google cloud run
|
|
30
43
|
*/
|
|
31
|
-
fullName:
|
|
44
|
+
fullName: StringOrBashExpression;
|
|
32
45
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
46
|
+
/**
|
|
47
|
+
* the environment slug without component name.
|
|
48
|
+
*/
|
|
49
|
+
slugPrefix: StringOrBashExpression;
|
|
50
|
+
/**
|
|
51
|
+
* the review slug, if it is a review app, null otherwise
|
|
52
|
+
*/
|
|
53
|
+
reviewSlug: StringOrBashExpression | null;
|
|
54
|
+
/**
|
|
55
|
+
* the full environment slug, including the componentName
|
|
56
|
+
*/
|
|
57
|
+
slug: StringOrBashExpression;
|
|
40
58
|
|
|
41
59
|
envType: EnvType;
|
|
42
60
|
} & EnvironmentEnvVarPart;
|
|
43
61
|
|
|
44
|
-
export type CommitInfo = {
|
|
45
|
-
refName: string;
|
|
46
|
-
reviewSlug: string;
|
|
47
|
-
buildTime: string;
|
|
48
|
-
buildId: string;
|
|
49
|
-
trigger: PipelineTrigger;
|
|
50
|
-
currentVersion: string;
|
|
51
|
-
};
|
|
52
|
-
|
|
53
62
|
export type YarnWorkspace = {
|
|
54
63
|
name: string;
|
|
55
64
|
location: string;
|
|
56
65
|
workspaceDependencies: string[];
|
|
57
66
|
mismatchedWorkspaceDependencies: string[];
|
|
58
67
|
};
|
|
59
|
-
export type
|
|
68
|
+
export type YarnPackageManagerInfoBase = {
|
|
60
69
|
type: "yarn";
|
|
61
70
|
version: string;
|
|
62
71
|
workspaces: YarnWorkspace[];
|
|
63
|
-
currentWorkspace?: YarnWorkspace;
|
|
64
72
|
isClassic: boolean;
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
export type YarnPackageManagerInfoComponent = YarnPackageManagerInfoBase & {
|
|
76
|
+
currentWorkspace?: YarnWorkspace;
|
|
65
77
|
componentIsInWorkspace: boolean;
|
|
66
78
|
pathsToCopyInDocker: string[];
|
|
67
79
|
currentWorkspaceDependencies: string[];
|
|
68
80
|
};
|
|
69
81
|
|
|
70
|
-
export type
|
|
82
|
+
export type PackageManagerInfoComponent = YarnPackageManagerInfoComponent;
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* not confuse with yarn workspaces
|
|
86
|
+
*/
|
|
87
|
+
export type PackageManagerInfoBase = YarnPackageManagerInfoBase;
|
|
71
88
|
|
|
72
89
|
export type ContextBeforeConfig = {
|
|
73
90
|
componentName: string;
|
|
74
91
|
fullConfig: Config;
|
|
75
|
-
|
|
76
|
-
packageManagerInfo?: PackageManagerInfo;
|
|
92
|
+
packageManagerInfo?: PackageManagerInfoComponent;
|
|
77
93
|
};
|
|
78
|
-
|
|
79
|
-
|
|
94
|
+
|
|
95
|
+
export type BuildContextBase = {
|
|
96
|
+
/**
|
|
97
|
+
* the directory where the component or workspace is located
|
|
98
|
+
*/
|
|
99
|
+
dir: string;
|
|
100
|
+
/**
|
|
101
|
+
* directories of all components that are part of the build.
|
|
102
|
+
* In case of a standalone build, this is just the dir of the component + yarn workspace dependencies (if mode = all)
|
|
103
|
+
*
|
|
104
|
+
* in case of a workspace this contains all components in the workspace (+ yarn workspace dependencies if mode = all)
|
|
105
|
+
*/
|
|
106
|
+
getComponentDirs: (mode: "direct" | "all") => string[];
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
export type BuildContextComponentBase = BuildContextBase;
|
|
110
|
+
|
|
111
|
+
export type BuildContextStandalone<
|
|
112
|
+
C extends BuildConfigStandalone = BuildConfigStandalone,
|
|
113
|
+
> = BuildContextComponentBase & {
|
|
114
|
+
config: C;
|
|
115
|
+
type: "standalone";
|
|
116
|
+
buildType: C["type"];
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
export type BuildContextDisabled = BuildContextComponentBase & {
|
|
120
|
+
type: "disabled";
|
|
121
|
+
};
|
|
122
|
+
export type BuildContextFromWorkspace = BuildContextComponentBase & {
|
|
123
|
+
config: BuildConfigFromWorkspace;
|
|
124
|
+
workspaceName: string;
|
|
125
|
+
buildType: WorkspaceBuildConfig["type"];
|
|
126
|
+
/**
|
|
127
|
+
* merged docker config
|
|
128
|
+
*/
|
|
129
|
+
workspaceBuildConfig: WorkspaceBuildConfig;
|
|
130
|
+
type: "fromWorkspace";
|
|
131
|
+
};
|
|
132
|
+
|
|
133
|
+
export type BuildContextWorkspace = BuildContextBase & {
|
|
134
|
+
type: "workspace";
|
|
135
|
+
buildType: WorkspaceBuildConfig["type"];
|
|
136
|
+
config: WorkspaceBuildConfig;
|
|
137
|
+
};
|
|
138
|
+
|
|
139
|
+
export type BuildContextWithBuild =
|
|
140
|
+
| BuildContextStandalone
|
|
141
|
+
| BuildContextFromWorkspace;
|
|
142
|
+
|
|
143
|
+
export type BuildContextComponent =
|
|
144
|
+
| BuildContextWithBuild
|
|
145
|
+
| BuildContextDisabled;
|
|
146
|
+
|
|
147
|
+
export type BuildContext = BuildContextComponent | BuildContextWorkspace;
|
|
148
|
+
|
|
149
|
+
export type DeployContext = {
|
|
150
|
+
config: DeployConfig;
|
|
151
|
+
};
|
|
152
|
+
export type ComponentContext<
|
|
153
|
+
BC extends BuildContextComponent = BuildContextComponent,
|
|
154
|
+
> = {
|
|
155
|
+
type: "component";
|
|
156
|
+
env: string;
|
|
157
|
+
/**
|
|
158
|
+
* the name of the component
|
|
159
|
+
*/
|
|
160
|
+
name: string;
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* the merged component config.
|
|
164
|
+
*
|
|
165
|
+
* use build.config and deploy.config instead if you need something from there
|
|
166
|
+
*
|
|
167
|
+
*/
|
|
80
168
|
componentConfig: ComponentConfig;
|
|
169
|
+
build: BC;
|
|
170
|
+
deploy?: DeployContext | null;
|
|
81
171
|
fullConfig: Config;
|
|
82
172
|
environment: Environment;
|
|
83
|
-
|
|
84
|
-
|
|
173
|
+
|
|
174
|
+
trigger?: PipelineTrigger;
|
|
175
|
+
pipelineType?: PipelineType;
|
|
176
|
+
|
|
177
|
+
packageManagerInfo: PackageManagerInfoComponent;
|
|
178
|
+
|
|
179
|
+
customJobs?: CatladderJob[];
|
|
180
|
+
};
|
|
181
|
+
|
|
182
|
+
export type ComponentContextWithBuild = ComponentContext<BuildContextWithBuild>;
|
|
183
|
+
|
|
184
|
+
export type Context = ComponentContext | WorkspaceContext;
|
|
185
|
+
|
|
186
|
+
export type CatladderJobWithContext<S = BaseStage> = CatladderJob<S> & {
|
|
187
|
+
context: ComponentContext;
|
|
188
|
+
};
|
|
189
|
+
|
|
190
|
+
export const componentContextIsStandaloneBuild = (
|
|
191
|
+
context: ComponentContext<BuildContextComponent>,
|
|
192
|
+
): context is ComponentContext<BuildContextStandalone> => {
|
|
193
|
+
return context.build.type === "standalone";
|
|
194
|
+
};
|
|
195
|
+
|
|
196
|
+
export const componentContextHasWorkspaceBuild = (
|
|
197
|
+
context: ComponentContext<BuildContextComponent>,
|
|
198
|
+
): context is ComponentContext<BuildContextFromWorkspace> => {
|
|
199
|
+
return context.build.type === "fromWorkspace";
|
|
200
|
+
};
|
|
201
|
+
|
|
202
|
+
export type WorkspaceContext = {
|
|
203
|
+
type: "workspace";
|
|
204
|
+
/**
|
|
205
|
+
* the name of the workspace
|
|
206
|
+
*/
|
|
207
|
+
name: string;
|
|
208
|
+
fullConfig: Config;
|
|
209
|
+
workspaceConfig: WorkspaceBuildConfig;
|
|
210
|
+
packageManagerInfo: PackageManagerInfoBase;
|
|
211
|
+
components: Array<ComponentContext>;
|
|
212
|
+
build: BuildContextWorkspace;
|
|
213
|
+
trigger: PipelineTrigger;
|
|
214
|
+
pipelineType: PipelineType;
|
|
215
|
+
env: string;
|
|
85
216
|
};
|