@catladder/cli 0.0.0-next-4e7c6848 → 0.0.0-next-6a4450e0
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/dist/bundles/catenv/index.js +1392 -116
- package/dist/bundles/cli/index.js +1631 -112
- package/dist/cli/src/adapters/baseContext.d.ts +4 -0
- package/dist/cli/src/adapters/baseContext.js +5 -0
- package/dist/cli/src/adapters/baseContext.js.map +1 -1
- package/dist/cli/src/adapters/nonInteractive.d.ts +9 -0
- package/dist/cli/src/adapters/nonInteractive.js +32 -0
- package/dist/cli/src/adapters/nonInteractive.js.map +1 -0
- package/dist/cli/src/adapters/programmatic.d.ts +1 -0
- package/dist/cli/src/adapters/programmatic.js +6 -1
- package/dist/cli/src/adapters/programmatic.js.map +1 -1
- package/dist/cli/src/adapters/terminal.d.ts +1 -0
- package/dist/cli/src/adapters/terminal.js +10 -1
- package/dist/cli/src/adapters/terminal.js.map +1 -1
- package/dist/cli/src/adapters/vaultManagerAccess.d.ts +8 -0
- package/dist/cli/src/adapters/vaultManagerAccess.js +26 -0
- package/dist/cli/src/adapters/vaultManagerAccess.js.map +1 -0
- package/dist/cli/src/apps/catenv/catenv.d.ts +2 -0
- package/dist/cli/src/apps/catenv/catenv.js +8 -1
- package/dist/cli/src/apps/catenv/catenv.js.map +1 -1
- package/dist/cli/src/apps/catenv/printVariables.d.ts +2 -2
- package/dist/cli/src/apps/catenv/printVariables.js +4 -4
- package/dist/cli/src/apps/catenv/printVariables.js.map +1 -1
- package/dist/cli/src/apps/catenv/types.d.ts +9 -0
- package/dist/cli/src/apps/catenv/writeDotEnvFiles.d.ts +2 -2
- package/dist/cli/src/apps/catenv/writeDotEnvFiles.js +1 -1
- package/dist/cli/src/apps/catenv/writeDotEnvFiles.js.map +1 -1
- package/dist/cli/src/apps/cli/commands/project/commandConfigSecrets.js +70 -3
- package/dist/cli/src/apps/cli/commands/project/commandConfigSecrets.js.map +1 -1
- package/dist/cli/src/catenv.js +3 -2
- package/dist/cli/src/catenv.js.map +1 -1
- package/dist/cli/src/commands/index.d.ts +1 -0
- package/dist/cli/src/commands/index.js +8 -1
- package/dist/cli/src/commands/index.js.map +1 -1
- package/dist/cli/src/commands/project/commandSecretsSyncGithub.d.ts +46 -0
- package/dist/cli/src/commands/project/commandSecretsSyncGithub.js +150 -0
- package/dist/cli/src/commands/project/commandSecretsSyncGithub.js.map +1 -0
- package/dist/cli/src/config/getProjectConfig.d.ts +1 -1
- package/dist/cli/src/config/getProjectConfig.js +12 -2
- package/dist/cli/src/config/getProjectConfig.js.map +1 -1
- package/dist/cli/src/core/types.d.ts +15 -0
- package/dist/cli/src/core/types.js +8 -1
- package/dist/cli/src/core/types.js.map +1 -1
- package/dist/cli/src/git/gitProjectInformation.d.ts +1 -1
- package/dist/cli/src/git/gitProjectInformation.js +3 -3
- package/dist/cli/src/git/gitProjectInformation.js.map +1 -1
- package/dist/cli/src/utils/github.d.ts +20 -0
- package/dist/cli/src/utils/github.js +61 -0
- package/dist/cli/src/utils/github.js.map +1 -0
- package/dist/cli/src/vault/BitwardenVault.d.ts +24 -0
- package/dist/cli/src/vault/BitwardenVault.js +107 -0
- package/dist/cli/src/vault/BitwardenVault.js.map +1 -0
- package/dist/cli/src/vault/GitlabVault.d.ts +11 -0
- package/dist/cli/src/vault/GitlabVault.js +24 -0
- package/dist/cli/src/vault/GitlabVault.js.map +1 -0
- package/dist/cli/src/vault/VaultManager.d.ts +43 -0
- package/dist/cli/src/vault/VaultManager.js +131 -0
- package/dist/cli/src/vault/VaultManager.js.map +1 -0
- package/dist/cli/src/vault/bw.d.ts +15 -0
- package/dist/cli/src/vault/bw.js +89 -0
- package/dist/cli/src/vault/bw.js.map +1 -0
- package/dist/cli/src/vault/cache.d.ts +38 -0
- package/dist/cli/src/vault/cache.js +53 -0
- package/dist/cli/src/vault/cache.js.map +1 -0
- package/dist/cli/src/vault/index.d.ts +5 -0
- package/dist/cli/src/vault/index.js +48 -0
- package/dist/cli/src/vault/index.js.map +1 -0
- package/dist/cli/src/vault/types.d.ts +33 -0
- package/dist/cli/src/vault/types.js +5 -0
- package/dist/cli/src/vault/types.js.map +1 -0
- package/dist/pipeline/src/backends/github/GithubBackend.d.ts +4 -1
- package/dist/pipeline/src/backends/github/GithubBackend.js +70 -12
- package/dist/pipeline/src/backends/github/GithubBackend.js.map +1 -1
- package/dist/pipeline/src/backends/github/ciVariables.js +3 -1
- package/dist/pipeline/src/backends/github/ciVariables.js.map +1 -1
- package/dist/pipeline/src/backends/github/createGithubJobs.d.ts +13 -3
- package/dist/pipeline/src/backends/github/createGithubJobs.js +80 -14
- package/dist/pipeline/src/backends/github/createGithubJobs.js.map +1 -1
- package/dist/pipeline/src/backends/github/githubReleaseJobs.d.ts +2 -1
- package/dist/pipeline/src/backends/github/githubReleaseJobs.js +46 -33
- package/dist/pipeline/src/backends/github/githubReleaseJobs.js.map +1 -1
- package/dist/pipeline/src/backends/github/index.d.ts +2 -1
- package/dist/pipeline/src/backends/github/index.js +2 -1
- package/dist/pipeline/src/backends/github/index.js.map +1 -1
- package/dist/pipeline/src/backends/github/scriptFiles.d.ts +25 -0
- package/dist/pipeline/src/backends/github/scriptFiles.js +50 -0
- package/dist/pipeline/src/backends/github/scriptFiles.js.map +1 -0
- package/dist/pipeline/src/backends/gitlab/GitlabBackend.d.ts +1 -0
- package/dist/pipeline/src/backends/gitlab/GitlabBackend.js +18 -8
- package/dist/pipeline/src/backends/gitlab/GitlabBackend.js.map +1 -1
- package/dist/pipeline/src/backends/gitlab/ciVariables.js +2 -1
- package/dist/pipeline/src/backends/gitlab/ciVariables.js.map +1 -1
- package/dist/pipeline/src/backends/gitlab/createGitlabJobs.d.ts +3 -2
- package/dist/pipeline/src/backends/gitlab/createGitlabJobs.js +84 -10
- package/dist/pipeline/src/backends/gitlab/createGitlabJobs.js.map +1 -1
- package/dist/pipeline/src/backends/gitlab/createGitlabPipeline.js +1 -1
- package/dist/pipeline/src/backends/gitlab/createGitlabPipeline.js.map +1 -1
- package/dist/pipeline/src/backends/gitlab/gitlabReleaseJobs.js +2 -2
- package/dist/pipeline/src/backends/gitlab/gitlabReleaseJobs.js.map +1 -1
- package/dist/pipeline/src/backends/index.d.ts +17 -1
- package/dist/pipeline/src/backends/index.js +33 -1
- package/dist/pipeline/src/backends/index.js.map +1 -1
- package/dist/pipeline/src/backends/types.d.ts +2 -1
- package/dist/pipeline/src/bash/ciVariables.d.ts +1 -1
- package/dist/pipeline/src/bash/ciVariables.js.map +1 -1
- package/dist/pipeline/src/build/node/yarn.js +4 -1
- package/dist/pipeline/src/build/node/yarn.js.map +1 -1
- package/dist/pipeline/src/build/types.d.ts +1 -1
- package/dist/pipeline/src/constants.js +1 -1
- package/dist/pipeline/src/context/getEnvironmentVariables.d.ts +8 -0
- package/dist/pipeline/src/context/getEnvironmentVariables.js +3 -3
- package/dist/pipeline/src/context/getEnvironmentVariables.js.map +1 -1
- package/dist/pipeline/src/context/transformJobOnlyVars.js +2 -2
- package/dist/pipeline/src/context/transformJobOnlyVars.js.map +1 -1
- package/dist/pipeline/src/context/utils/envVars.d.ts +7 -0
- package/dist/pipeline/src/context/utils/envVars.js +22 -1
- package/dist/pipeline/src/context/utils/envVars.js.map +1 -1
- package/dist/pipeline/src/customImages/hash.d.ts +15 -0
- package/dist/pipeline/src/customImages/hash.js +71 -0
- package/dist/pipeline/src/customImages/hash.js.map +1 -0
- package/dist/pipeline/src/customImages/jobImagesPlan.d.ts +59 -0
- package/dist/pipeline/src/customImages/jobImagesPlan.js +172 -0
- package/dist/pipeline/src/customImages/jobImagesPlan.js.map +1 -0
- package/dist/pipeline/src/customImages/shippedImages.d.ts +28 -0
- package/dist/pipeline/src/customImages/shippedImages.js +60 -0
- package/dist/pipeline/src/customImages/shippedImages.js.map +1 -0
- package/dist/pipeline/src/deploy/cloudRun/index.js +15 -5
- package/dist/pipeline/src/deploy/cloudRun/index.js.map +1 -1
- package/dist/pipeline/src/deploy/cloudRun/utils/database.js +4 -1
- package/dist/pipeline/src/deploy/cloudRun/utils/database.js.map +1 -1
- package/dist/pipeline/src/pipeline/generatePipelineFiles.js +16 -1
- package/dist/pipeline/src/pipeline/generatePipelineFiles.js.map +1 -1
- package/dist/pipeline/src/runner/index.d.ts +20 -1
- package/dist/pipeline/src/runner/index.js +16 -3
- package/dist/pipeline/src/runner/index.js.map +1 -1
- package/dist/pipeline/src/types/config.d.ts +63 -5
- package/dist/pipeline/src/types/github-types.d.ts +5 -0
- package/dist/pipeline/src/types/jobs.d.ts +10 -2
- package/dist/pipeline/src/types/jobs.js.map +1 -1
- package/dist/pipeline/src/utils/gitlab.d.ts +5 -0
- package/dist/pipeline/src/utils/gitlab.js +6 -0
- package/dist/pipeline/src/utils/gitlab.js.map +1 -1
- package/dist/pipeline/src/utils/writeFiles.d.ts +6 -0
- package/dist/pipeline/src/utils/writeFiles.js +8 -0
- package/dist/pipeline/src/utils/writeFiles.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/adapters/baseContext.ts +10 -0
- package/src/adapters/nonInteractive.ts +30 -0
- package/src/adapters/programmatic.ts +7 -1
- package/src/adapters/terminal.ts +9 -1
- package/src/adapters/vaultManagerAccess.ts +25 -0
- package/src/apps/catenv/catenv.ts +5 -1
- package/src/apps/catenv/printVariables.ts +16 -6
- package/src/apps/catenv/types.ts +9 -0
- package/src/apps/catenv/writeDotEnvFiles.ts +3 -3
- package/src/apps/cli/commands/project/commandConfigSecrets.ts +114 -9
- package/src/catenv.ts +22 -2
- package/src/commands/index.ts +1 -0
- package/src/commands/project/commandSecretsSyncGithub.ts +172 -0
- package/src/config/getProjectConfig.ts +21 -7
- package/src/core/types.ts +23 -0
- package/src/git/gitProjectInformation.ts +5 -3
- package/src/utils/github.ts +76 -0
- package/src/vault/BitwardenVault.ts +161 -0
- package/src/vault/GitlabVault.ts +25 -0
- package/src/vault/VaultManager.ts +211 -0
- package/src/vault/bw.ts +110 -0
- package/src/vault/cache.ts +80 -0
- package/src/vault/index.ts +5 -0
- package/src/vault/types.ts +42 -0
|
@@ -55,13 +55,18 @@ exports.GCLOUD_RUN_DEPLOY_TYPE = {
|
|
|
55
55
|
}
|
|
56
56
|
return {};
|
|
57
57
|
},
|
|
58
|
-
additionalSecretKeys: ctx => [
|
|
58
|
+
additionalSecretKeys: ctx => [
|
|
59
|
+
// deploy-time credentials don't exist for the local env
|
|
60
|
+
...(ctx.envType !== "local" ? [{
|
|
59
61
|
key: exports.GCLOUD_DEPLOY_CREDENTIALS_KEY,
|
|
60
62
|
hidden: true
|
|
61
63
|
}, {
|
|
62
64
|
key: exports.GCLOUD_RUN_CANONICAL_HOST_SUFFIX,
|
|
63
|
-
hidden: true
|
|
64
|
-
|
|
65
|
+
hidden: true,
|
|
66
|
+
// a public url fragment, not sensitive: masking it would
|
|
67
|
+
// suppress environment urls on github and break log links
|
|
68
|
+
kind: "variable"
|
|
69
|
+
}] : []), ...(ctx.deployConfigRaw && ctx.deployConfigRaw.cloudSql ? [{
|
|
65
70
|
key: "DB_PASSWORD"
|
|
66
71
|
}] : [])],
|
|
67
72
|
getAdditionalEnvVars: ctx => {
|
|
@@ -69,7 +74,8 @@ exports.GCLOUD_RUN_DEPLOY_TYPE = {
|
|
|
69
74
|
fullName,
|
|
70
75
|
env,
|
|
71
76
|
componentName,
|
|
72
|
-
deployConfigRaw
|
|
77
|
+
deployConfigRaw,
|
|
78
|
+
envType
|
|
73
79
|
} = ctx;
|
|
74
80
|
const HOSTNAME_INTERNAL = (0, BashExpression_1.joinBashExpressions)([fullName, (0, BashExpression_1.getBashVariable)((0, context_1.getSecretVarName)(env, componentName, exports.GCLOUD_RUN_CANONICAL_HOST_SUFFIX))], "-").toLowerCase();
|
|
75
81
|
const jobTriggers = deployConfigRaw && deployConfigRaw.jobs ? Object.fromEntries(Object.entries(deployConfigRaw.jobs).filter(([name, job]) => Boolean(job)).map(([name, job]) => ["CLOUD_RUN_JOB_TRIGGER_URL_" + (0, gitlab_1.sanitizeForBashVariable)(name), (0, cloudRunExecutionUrl_1.getCloudRunJobExecuteUrl)(name, {
|
|
@@ -78,7 +84,11 @@ exports.GCLOUD_RUN_DEPLOY_TYPE = {
|
|
|
78
84
|
region: deployConfigRaw.region
|
|
79
85
|
})])) : {};
|
|
80
86
|
return {
|
|
81
|
-
|
|
87
|
+
// references the canonical host suffix secret, which doesn't
|
|
88
|
+
// exist for the local env
|
|
89
|
+
...(envType !== "local" ? {
|
|
90
|
+
HOSTNAME_INTERNAL
|
|
91
|
+
} : {}),
|
|
82
92
|
...getCloudSqlVariables(ctx),
|
|
83
93
|
...jobTriggers,
|
|
84
94
|
DEPLOY_CLOUD_RUN_SERVICE_NAME: (0, getServiceName_1.getServiceNameForEnvContext)(ctx),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../pipeline/src/deploy/cloudRun/index.ts"],"names":[],"mappings":";;;AACA,8DAGmC;AAEnC,2CAAiD;AAEjD,+CAA6D;AAC7D,6CAAkD;AAClD,6CAA8D;AAC9D,uEAAwE;AACxE,+CAI0B;AAC1B,2DAAqE;AAExD,QAAA,6BAA6B,GAAG,8BAA8B,CAAC;AAE5E,4HAA4H;AAC/G,QAAA,gCAAgC,GAC3C,gCAAgC,CAAC;AAEnC,MAAM,oBAAoB,GAAG,CAAC,EAC5B,eAAe,EACf,qBAAqB,EACrB,GAAG,EACH,aAAa,EACb,UAAU,GAC4C,EAAE,EAAE;;IAC1D,IAAI,eAAe,IAAI,eAAe,CAAC,QAAQ,EAAE,CAAC;QAChD,MAAM,OAAO,GAAG,IAAA,qBAAa,EAC3B,eAAe,CAAC,QAAQ,EACxB,UAAU,EACV,qBAAqB,EACrB,aAAa,CACd,CAAC;QAEF,MAAM,2BAA2B,GAAG,MAAM,CAAC,OAAO,CAChD,MAAA,eAAe,CAAC,QAAQ,CAAC,uBAAuB,mCAAI,EAAE,CACvD;aACE,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,GAAG,IAAI,KAAK,EAAE,CAAC;aACzC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEZ,MAAM,MAAM,GAAG;YACb,kCAAkC,EAChC,eAAe,CAAC,QAAQ,CAAC,sBAAsB;YACjD,OAAO,EAAE,OAAO;YAChB,OAAO,EAAE,MAAA,eAAe,CAAC,QAAQ,CAAC,MAAM,mCAAI,UAAU;YACtD,WAAW,EAAE,GAAG,GAAG,IAAA,0BAAgB,EAAC,GAAG,EAAE,aAAa,EAAE,aAAa,CAAC;SACvE,CAAC;QACF,OAAO;YACL,GAAG,MAAM;YACT,YAAY,EAAE,IAAA,sCAA2B,EACvC,eAAe,CAAC,QAAQ,EACxB,MAAM,CACP,CAAC,MAAM,CAAC,2BAA2B,CAAC;YACrC,iBAAiB,EAAE,IAAA,6BAAkB,EACnC,MAAM,EACN,MAAA,eAAe,CAAC,QAAQ,CAAC,+BAA+B,mCACtD,oCAAyB,CAC5B;SACF,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC,CAAC;AACW,QAAA,sBAAsB,GACjC;IACE,IAAI,EAAE,2CAA8B;IACpC,QAAQ,EAAE,CAAC,EAAE,eAAe,EAAE,OAAO,EAAE,EAAE,EAAE;QACzC,IAAI,eAAe,IAAI,eAAe,CAAC,QAAQ,EAAE,CAAC;YAChD,OAAO;gBACL,QAAQ,EAAE;oBACR,oBAAoB,EAAE,OAAO,KAAK,QAAQ;iBAC3C;aACF,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,oBAAoB,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC;QAC7B;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../pipeline/src/deploy/cloudRun/index.ts"],"names":[],"mappings":";;;AACA,8DAGmC;AAEnC,2CAAiD;AAEjD,+CAA6D;AAC7D,6CAAkD;AAClD,6CAA8D;AAC9D,uEAAwE;AACxE,+CAI0B;AAC1B,2DAAqE;AAExD,QAAA,6BAA6B,GAAG,8BAA8B,CAAC;AAE5E,4HAA4H;AAC/G,QAAA,gCAAgC,GAC3C,gCAAgC,CAAC;AAEnC,MAAM,oBAAoB,GAAG,CAAC,EAC5B,eAAe,EACf,qBAAqB,EACrB,GAAG,EACH,aAAa,EACb,UAAU,GAC4C,EAAE,EAAE;;IAC1D,IAAI,eAAe,IAAI,eAAe,CAAC,QAAQ,EAAE,CAAC;QAChD,MAAM,OAAO,GAAG,IAAA,qBAAa,EAC3B,eAAe,CAAC,QAAQ,EACxB,UAAU,EACV,qBAAqB,EACrB,aAAa,CACd,CAAC;QAEF,MAAM,2BAA2B,GAAG,MAAM,CAAC,OAAO,CAChD,MAAA,eAAe,CAAC,QAAQ,CAAC,uBAAuB,mCAAI,EAAE,CACvD;aACE,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,GAAG,IAAI,KAAK,EAAE,CAAC;aACzC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEZ,MAAM,MAAM,GAAG;YACb,kCAAkC,EAChC,eAAe,CAAC,QAAQ,CAAC,sBAAsB;YACjD,OAAO,EAAE,OAAO;YAChB,OAAO,EAAE,MAAA,eAAe,CAAC,QAAQ,CAAC,MAAM,mCAAI,UAAU;YACtD,WAAW,EAAE,GAAG,GAAG,IAAA,0BAAgB,EAAC,GAAG,EAAE,aAAa,EAAE,aAAa,CAAC;SACvE,CAAC;QACF,OAAO;YACL,GAAG,MAAM;YACT,YAAY,EAAE,IAAA,sCAA2B,EACvC,eAAe,CAAC,QAAQ,EACxB,MAAM,CACP,CAAC,MAAM,CAAC,2BAA2B,CAAC;YACrC,iBAAiB,EAAE,IAAA,6BAAkB,EACnC,MAAM,EACN,MAAA,eAAe,CAAC,QAAQ,CAAC,+BAA+B,mCACtD,oCAAyB,CAC5B;SACF,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC,CAAC;AACW,QAAA,sBAAsB,GACjC;IACE,IAAI,EAAE,2CAA8B;IACpC,QAAQ,EAAE,CAAC,EAAE,eAAe,EAAE,OAAO,EAAE,EAAE,EAAE;QACzC,IAAI,eAAe,IAAI,eAAe,CAAC,QAAQ,EAAE,CAAC;YAChD,OAAO;gBACL,QAAQ,EAAE;oBACR,oBAAoB,EAAE,OAAO,KAAK,QAAQ;iBAC3C;aACF,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,oBAAoB,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC;QAC7B,wDAAwD;QACxD,GAAG,CAAC,GAAG,CAAC,OAAO,KAAK,OAAO;YACzB,CAAC,CAAC;gBACE;oBACE,GAAG,EAAE,qCAA6B;oBAClC,MAAM,EAAE,IAAI;iBACb;gBACD;oBACE,GAAG,EAAE,wCAAgC;oBACrC,MAAM,EAAE,IAAI;oBACZ,yDAAyD;oBACzD,0DAA0D;oBAC1D,IAAI,EAAE,UAAmB;iBAC1B;aACF;YACH,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,GAAG,CAAC,eAAe,IAAI,GAAG,CAAC,eAAe,CAAC,QAAQ;YACrD,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC;YAC1B,CAAC,CAAC,EAAE,CAAC;KACR;IACD,oBAAoB,EAAE,CAAC,GAAG,EAAE,EAAE;QAC5B,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,aAAa,EAAE,eAAe,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC;QAEvE,MAAM,iBAAiB,GAAG,IAAA,oCAAmB,EAC3C;YACE,QAAQ;YACR,IAAA,gCAAe,EACb,IAAA,0BAAgB,EACd,GAAG,EACH,aAAa,EACb,wCAAgC,CACjC,CACF;SACF,EACD,GAAG,CACJ,CAAC,WAAW,EAAE,CAAC;QAChB,MAAM,WAAW,GACf,eAAe,IAAI,eAAe,CAAC,IAAI;YACrC,CAAC,CAAC,MAAM,CAAC,WAAW,CAChB,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC;iBACjC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;iBACrC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;gBACpB,4BAA4B,GAAG,IAAA,gCAAuB,EAAC,IAAI,CAAC;gBAC5D,IAAA,+CAAwB,EAAC,IAAI,EAAE;oBAC7B,WAAW,EAAE,QAAQ;oBACrB,SAAS,EAAE,eAAe,CAAC,SAAS;oBACpC,MAAM,EAAE,eAAe,CAAC,MAAM;iBAC/B,CAAC;aACH,CAAC,CACL;YACH,CAAC,CAAC,EAAE,CAAC;QAET,OAAO;YACL,6DAA6D;YAC7D,0BAA0B;YAC1B,GAAG,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrD,GAAG,oBAAoB,CAAC,GAAG,CAAC;YAC5B,GAAG,WAAW;YACd,6BAA6B,EAAE,IAAA,4CAA2B,EAAC,GAAG,CAAC;YAC/D,2BAA2B,EAAE,eAAe;gBAC1C,CAAC,CAAC,eAAe,CAAC,SAAS;gBAC3B,CAAC,CAAC,SAAS;YACb,uBAAuB,EAAE,eAAe;gBACtC,CAAC,CAAC,eAAe,CAAC,MAAM;gBACxB,CAAC,CAAC,SAAS;SACd,CAAC;IACJ,CAAC;CACF,CAAC"}
|
|
@@ -18,7 +18,10 @@ const getDatabaseDeleteScript = (context, deployConfig) => {
|
|
|
18
18
|
// unfortunatly the database cannot be deleted right after the service has stopped, as it might still have connections
|
|
19
19
|
// we have to repeate this process
|
|
20
20
|
return [`echo "deleting database ${DB_NAME}..."`, `echo "👆 this can take multiple attemps (3-5min), because google cloud run may still have a connection to the database after the cloud run service is shut down"`, (0, gitlab_1.repeatOnFailure)(`gcloud sql databases delete ${DB_NAME} --instance=${instanceId} --project ${projectId}`, {
|
|
21
|
-
pauseInSeconds: 10
|
|
21
|
+
pauseInSeconds: 10,
|
|
22
|
+
// connections normally clear within 3-5min; anything beyond is
|
|
23
|
+
// a permanent error (missing permission, wrong instance, ...)
|
|
24
|
+
maxAttempts: 30
|
|
22
25
|
})];
|
|
23
26
|
};
|
|
24
27
|
exports.getDatabaseDeleteScript = getDatabaseDeleteScript;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.js","sourceRoot":"","sources":["../../../../../../../pipeline/src/deploy/cloudRun/utils/database.ts"],"names":[],"mappings":";;;AAAA,wCAIuB;AAEvB,kDAA+E;AAMxE,MAAM,uBAAuB,GAAG,CACrC,OAAyB,EACzB,YAAkC,EACxB,EAAE;IACZ,IAAI,CAAC,YAAY,CAAC,QAAQ,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,oBAAoB,EAAE,CAAC;QAC1E,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;IAClC,CAAC;IACD,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEvD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,GACnC,YAAY,CAAC,QAAQ,CAAC,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC1D,sHAAsH;IACtH,kCAAkC;IAClC,OAAO;QACL,2BAA2B,OAAO,MAAM;QACxC,kKAAkK;QAClK,IAAA,wBAAe,EACb,+BAA+B,OAAO,eAAe,UAAU,cAAc,SAAS,EAAE,EACxF;YACE,cAAc,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"database.js","sourceRoot":"","sources":["../../../../../../../pipeline/src/deploy/cloudRun/utils/database.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,7 @@ const promises_1 = require("fs/promises");
|
|
|
8
8
|
const path_1 = require("path");
|
|
9
9
|
const backends_1 = require("../backends");
|
|
10
10
|
const gitlab_1 = require("../backends/gitlab");
|
|
11
|
+
const jobImagesPlan_1 = require("../customImages/jobImagesPlan");
|
|
11
12
|
/**
|
|
12
13
|
* generates the pipeline files of all pipeline types enabled in the
|
|
13
14
|
* config (see `pipelines`). Pass an explicit `pipelineType` to generate
|
|
@@ -15,6 +16,16 @@ const gitlab_1 = require("../backends/gitlab");
|
|
|
15
16
|
*/
|
|
16
17
|
async function generatePipelineFiles(context, pipelineType) {
|
|
17
18
|
const pipelineTypes = pipelineType ? [pipelineType] : (0, backends_1.getEnabledPipelineTypes)(context.config);
|
|
19
|
+
if (!pipelineType) {
|
|
20
|
+
// the materialized image definitions are a union across all enabled
|
|
21
|
+
// backends and no single backend may wipe them — cleaned once per
|
|
22
|
+
// full generation, so images that fell out of use don't linger (and
|
|
23
|
+
// keep triggering gitlab's rules:changes)
|
|
24
|
+
await (0, promises_1.rm)(jobImagesPlan_1.GENERATED_IMAGES_FOLDER, {
|
|
25
|
+
recursive: true,
|
|
26
|
+
force: true
|
|
27
|
+
});
|
|
28
|
+
}
|
|
18
29
|
for (const type of pipelineTypes) {
|
|
19
30
|
await generatePipelineFilesForBackend(context, (0, backends_1.getPipelineBackend)(type));
|
|
20
31
|
}
|
|
@@ -32,7 +43,11 @@ async function generatePipelineFilesForBackend(context, backend) {
|
|
|
32
43
|
await (0, promises_1.mkdir)((0, path_1.dirname)(path), {
|
|
33
44
|
recursive: true
|
|
34
45
|
});
|
|
35
|
-
|
|
46
|
+
if (typeof content === "string") {
|
|
47
|
+
await context.fileWriter.writeGeneratedFileRaw(path, content);
|
|
48
|
+
} else {
|
|
49
|
+
await context.fileWriter.writeYamlfile(path, content);
|
|
50
|
+
}
|
|
36
51
|
}));
|
|
37
52
|
}
|
|
38
53
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generatePipelineFiles.js","sourceRoot":"","sources":["../../../../../pipeline/src/pipeline/generatePipelineFiles.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"generatePipelineFiles.js","sourceRoot":"","sources":["../../../../../pipeline/src/pipeline/generatePipelineFiles.ts"],"names":[],"mappings":";;;AAAA,0CAAwC;AACxC,+BAA+B;AAI/B,0CAA0E;AAC1E,+CAAmD;AAEnD,iEAAwE;AAExE;;;;GAIG;AACI,KAAK,UAAU,qBAAqB,CACzC,OAAsB,EACtB,YAA2B;IAE3B,MAAM,aAAa,GAAG,YAAY;QAChC,CAAC,CAAC,CAAC,YAAY,CAAC;QAChB,CAAC,CAAC,IAAA,kCAAuB,EAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAE5C,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,oEAAoE;QACpE,kEAAkE;QAClE,oEAAoE;QACpE,0CAA0C;QAC1C,MAAM,IAAA,aAAE,EAAC,uCAAuB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACtE,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;QACjC,MAAM,+BAA+B,CAAC,OAAO,EAAE,IAAA,6BAAkB,EAAC,IAAI,CAAC,CAAC,CAAC;IAC3E,CAAC;AACH,CAAC;AAnBD,sDAmBC;AAED,KAAK,UAAU,+BAA+B,CAC5C,OAAsB,EACtB,OAAwB;IAExB,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAExD,4CAA4C;IAC5C,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;IACxB,cAAc;IACd,MAAM,OAAO,CAAC,GAAG,CACf,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE;QACpC,MAAM,IAAA,gBAAK,EAAC,IAAA,cAAO,EAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAChD,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,MAAM,OAAO,CAAC,UAAU,CAAC,qBAAqB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAChE,CAAC;aAAM,CAAC;YACN,MAAM,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACxD,CAAC;IACH,CAAC,CAAC,CACH,CAAC;AACJ,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,yBAAyB,CAAC,MAAc;IAC5D,OAAO,IAAI,sBAAa,EAAE,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;AAC5D,CAAC;AAFD,8DAEC"}
|
|
@@ -1,2 +1,21 @@
|
|
|
1
1
|
export type RunnerImageName = "jobs-default" | "jobs-meteor" | "jobs-testing-chrome" | "kubernetes" | "docker-build" | "gcloud" | "semantic-release" | "agent-claude";
|
|
2
|
-
|
|
2
|
+
/**
|
|
3
|
+
* a reference to a catladder-provided job image. It is resolved by the
|
|
4
|
+
* pipeline backend according to the `jobImages` mode:
|
|
5
|
+
* - central: the image from catladder's central registry
|
|
6
|
+
* - repo: the image is built in the repository's own registry from the
|
|
7
|
+
* image definition shipped with catladder
|
|
8
|
+
*/
|
|
9
|
+
export type CatladderImageRef = {
|
|
10
|
+
catladderImage: RunnerImageName;
|
|
11
|
+
};
|
|
12
|
+
export declare const isCatladderImageRef: (value: unknown) => value is CatladderImageRef;
|
|
13
|
+
/**
|
|
14
|
+
* job creators use this to reference a catladder-provided job image;
|
|
15
|
+
* the backends resolve it to a concrete image url
|
|
16
|
+
*/
|
|
17
|
+
export declare const getRunnerImage: (imageName: RunnerImageName) => CatladderImageRef;
|
|
18
|
+
/**
|
|
19
|
+
* the image url in catladder's central registry (the classic behavior)
|
|
20
|
+
*/
|
|
21
|
+
export declare const getCentralRunnerImageUrl: (imageName: RunnerImageName) => string;
|
|
@@ -3,7 +3,20 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.getRunnerImage = void 0;
|
|
6
|
+
exports.getCentralRunnerImageUrl = exports.getRunnerImage = exports.isCatladderImageRef = void 0;
|
|
7
7
|
const constants_1 = require("../constants");
|
|
8
|
-
const
|
|
9
|
-
exports.
|
|
8
|
+
const isCatladderImageRef = value => typeof value === "object" && value !== null && "catladderImage" in value && typeof value.catladderImage === "string";
|
|
9
|
+
exports.isCatladderImageRef = isCatladderImageRef;
|
|
10
|
+
/**
|
|
11
|
+
* job creators use this to reference a catladder-provided job image;
|
|
12
|
+
* the backends resolve it to a concrete image url
|
|
13
|
+
*/
|
|
14
|
+
const getRunnerImage = imageName => ({
|
|
15
|
+
catladderImage: imageName
|
|
16
|
+
});
|
|
17
|
+
exports.getRunnerImage = getRunnerImage;
|
|
18
|
+
/**
|
|
19
|
+
* the image url in catladder's central registry (the classic behavior)
|
|
20
|
+
*/
|
|
21
|
+
const getCentralRunnerImageUrl = imageName => constants_1.DOCKER_REGISTRY + "/" + imageName + ":" + constants_1.PIPELINE_IMAGE_TAG;
|
|
22
|
+
exports.getCentralRunnerImageUrl = getCentralRunnerImageUrl;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../pipeline/src/runner/index.ts"],"names":[],"mappings":";;;AAAA,4CAAmE;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../pipeline/src/runner/index.ts"],"names":[],"mappings":";;;AAAA,4CAAmE;AAuB5D,MAAM,mBAAmB,GAAG,CACjC,KAAc,EACc,EAAE,CAC9B,OAAO,KAAK,KAAK,QAAQ;IACzB,KAAK,KAAK,IAAI;IACd,gBAAgB,IAAI,KAAK;IACzB,OAAQ,KAA2B,CAAC,cAAc,KAAK,QAAQ,CAAC;AANrD,QAAA,mBAAmB,uBAMkC;AAElE;;;GAGG;AACI,MAAM,cAAc,GAAG,CAC5B,SAA0B,EACP,EAAE,CAAC,CAAC;IACvB,cAAc,EAAE,SAAS;CAC1B,CAAC,CAAC;AAJU,QAAA,cAAc,kBAIxB;AAEH;;GAEG;AACI,MAAM,wBAAwB,GAAG,CAAC,SAA0B,EAAU,EAAE,CAC7E,2BAAe,GAAG,GAAG,GAAG,SAAS,GAAG,GAAG,GAAG,8BAAkB,CAAC;AADlD,QAAA,wBAAwB,4BAC0B"}
|
|
@@ -54,9 +54,25 @@ export type EnvVars = {
|
|
|
54
54
|
*/
|
|
55
55
|
public?: Record<string, any>;
|
|
56
56
|
/**
|
|
57
|
-
*
|
|
57
|
+
* env vars whose values live in the vault (managed with catladder/cli).
|
|
58
|
+
*
|
|
59
|
+
* Preferred form is a record with the kind per key:
|
|
60
|
+
* - "secret": sensitive — masked where the platform supports it
|
|
61
|
+
* - "variable": vault-stored but not sensitive (ids, host suffixes) —
|
|
62
|
+
* never masked, so log links stay clickable and environment urls work
|
|
63
|
+
* - an object for additional per-key config
|
|
64
|
+
*
|
|
65
|
+
* EXAMPLE: secret: { API_KEY: "secret", PROJECT_ID: "variable" }
|
|
66
|
+
*
|
|
67
|
+
* The plain string[] form (all keys secret) is deprecated.
|
|
58
68
|
*/
|
|
59
|
-
secret?: string[]
|
|
69
|
+
secret?: string[] | Record<string, SecretVarKind | SecretVarConfig>;
|
|
70
|
+
};
|
|
71
|
+
export type SecretVarKind = "secret" | "variable";
|
|
72
|
+
export type SecretVarConfig = {
|
|
73
|
+
kind?: SecretVarKind;
|
|
74
|
+
/** hidden env vars are not shown in config-secrets */
|
|
75
|
+
hidden?: boolean;
|
|
60
76
|
};
|
|
61
77
|
export type DefaultEnvConfig = {
|
|
62
78
|
/**
|
|
@@ -153,10 +169,40 @@ export type ConfigProps = {
|
|
|
153
169
|
CustomEnvs: string;
|
|
154
170
|
};
|
|
155
171
|
/**
|
|
156
|
-
* per-pipeline-type options
|
|
157
|
-
* settings a home (e.g. output folder, workflow naming) later.
|
|
172
|
+
* per-pipeline-type options
|
|
158
173
|
*/
|
|
159
|
-
export type PipelineOutputOptions =
|
|
174
|
+
export type PipelineOutputOptions = {
|
|
175
|
+
/**
|
|
176
|
+
* the git remote that points to this CI system's repository.
|
|
177
|
+
* Relevant during migrations, where e.g. gitlab is `origin` and
|
|
178
|
+
* github is a second remote.
|
|
179
|
+
*
|
|
180
|
+
* defaults to "origin"
|
|
181
|
+
*/
|
|
182
|
+
gitRemote?: string;
|
|
183
|
+
};
|
|
184
|
+
/**
|
|
185
|
+
* where secret values are stored and edited (the readable source of
|
|
186
|
+
* truth). CI backends only receive mirrored copies.
|
|
187
|
+
*
|
|
188
|
+
* - "gitlab" (default): the gitlab project variables double as the
|
|
189
|
+
* secret store (legacy behavior; requires a gitlab project)
|
|
190
|
+
* - bitwarden: secrets live in bitwarden as one yaml note per
|
|
191
|
+
* env/component (`<customer>/<app>/<env>/<component>/secrets.yml`)
|
|
192
|
+
*/
|
|
193
|
+
export type SecretsVaultConfig = "gitlab" | {
|
|
194
|
+
type: "gitlab";
|
|
195
|
+
} | {
|
|
196
|
+
type: "bitwarden";
|
|
197
|
+
/**
|
|
198
|
+
* the bitwarden collection holding the secret notes
|
|
199
|
+
* @default "catladder"
|
|
200
|
+
*/
|
|
201
|
+
collection?: string;
|
|
202
|
+
};
|
|
203
|
+
export type SecretsConfig = {
|
|
204
|
+
vault?: SecretsVaultConfig;
|
|
205
|
+
};
|
|
160
206
|
export type Config<C extends ConfigProps = never> = {
|
|
161
207
|
/**
|
|
162
208
|
* the pipeline type to generate, defaults to gitlab
|
|
@@ -177,6 +223,18 @@ export type Config<C extends ConfigProps = never> = {
|
|
|
177
223
|
* }
|
|
178
224
|
*/
|
|
179
225
|
pipelines?: { [T in PipelineType]?: boolean | PipelineOutputOptions };
|
|
226
|
+
/**
|
|
227
|
+
* how secrets are stored and shared (see {@link SecretsConfig})
|
|
228
|
+
*/
|
|
229
|
+
secrets?: SecretsConfig;
|
|
230
|
+
/**
|
|
231
|
+
* where the catladder job images come from:
|
|
232
|
+
* - central: catladder's central registry (default on gitlab)
|
|
233
|
+
* - repo: built in the repository's own registry from the image
|
|
234
|
+
* definitions shipped with catladder (default and required on
|
|
235
|
+
* github, where the central registry is not reachable)
|
|
236
|
+
*/
|
|
237
|
+
jobImages?: "central" | "repo";
|
|
180
238
|
/**
|
|
181
239
|
* name of the customer or group
|
|
182
240
|
*/
|
|
@@ -24,6 +24,10 @@ export type GithubJob = {
|
|
|
24
24
|
needs?: string[];
|
|
25
25
|
container?: {
|
|
26
26
|
image: string;
|
|
27
|
+
credentials?: {
|
|
28
|
+
username: string;
|
|
29
|
+
password: string;
|
|
30
|
+
};
|
|
27
31
|
} | string;
|
|
28
32
|
services?: Record<string, GithubService>;
|
|
29
33
|
environment?: {
|
|
@@ -38,6 +42,7 @@ export type GithubJob = {
|
|
|
38
42
|
export type GithubWorkflow = {
|
|
39
43
|
name: string;
|
|
40
44
|
on: Record<string, unknown>;
|
|
45
|
+
permissions?: Record<string, string>;
|
|
41
46
|
concurrency?: {
|
|
42
47
|
group: string;
|
|
43
48
|
"cancel-in-progress"?: boolean;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { UnspecifiedEnvVars } from "..";
|
|
2
|
+
import type { CatladderImageRef } from "../runner";
|
|
2
3
|
import type { CacheConfig } from "../build/types";
|
|
3
4
|
import type { Artifacts, GitlabJobCache, GitlabJobDef, GitlabJobImage, GitlabRule } from "./gitlab-types";
|
|
4
5
|
export type CatladderJobCache = GitlabJobCache;
|
|
@@ -12,6 +13,11 @@ export type CatladderJobNeed = string | {
|
|
|
12
13
|
job: string;
|
|
13
14
|
artifacts: boolean;
|
|
14
15
|
workspaceName: string;
|
|
16
|
+
} | {
|
|
17
|
+
job: string;
|
|
18
|
+
artifacts: boolean;
|
|
19
|
+
optional?: boolean;
|
|
20
|
+
global: true;
|
|
15
21
|
};
|
|
16
22
|
export declare const CAPABILITIES: readonly ["build", "buildArtifacts", "dockerImage", "qualityGate", "deployment"];
|
|
17
23
|
/**
|
|
@@ -164,9 +170,11 @@ export type GitlabJobFields = {
|
|
|
164
170
|
*/
|
|
165
171
|
services?: GitlabJobDef["services"];
|
|
166
172
|
/**
|
|
167
|
-
* image to use
|
|
173
|
+
* image to use: a concrete image or a reference to a
|
|
174
|
+
* catladder-provided job image (resolved by the backend according to
|
|
175
|
+
* the `jobImages` mode)
|
|
168
176
|
*/
|
|
169
|
-
image?: GitlabJobImage;
|
|
177
|
+
image?: GitlabJobImage | CatladderImageRef;
|
|
170
178
|
/**
|
|
171
179
|
* whether failures are allowed
|
|
172
180
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jobs.js","sourceRoot":"","sources":["../../../../../pipeline/src/types/jobs.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"jobs.js","sourceRoot":"","sources":["../../../../../pipeline/src/types/jobs.ts"],"names":[],"mappings":";;;AAGA,8DAA2D;AAU9C,QAAA,WAAW,GAAG;IACzB,OAAO;IACP,MAAM;IACN,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,UAAU;IACV,MAAM;CACE,CAAC;AAWE,QAAA,YAAY,GAAG;IAC1B,OAAO;IACP,gBAAgB;IAChB,aAAa;IACb,aAAa;IACb,YAAY;CACJ,CAAC;AAsNX;;;;;;;GAOG;AACH,4JAA4J;AAC5J,MAAa,YAAY;IACvB,YAAY,IAAyB;QACnC,uDAAuD;QACvD,2DAA2D;QAC3D,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAA,iCAAe,EAAC,IAAI,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,CAAC,IAAI,CACT,GAAkD;QAElD,OAAO,GAAG,YAAY,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC;IACnE,CAAC;CACF;AAZD,oCAYC"}
|
|
@@ -2,5 +2,10 @@ export declare const allowFailureInScripts: (script: string[]) => string[];
|
|
|
2
2
|
export declare const sanitizeForBashVariable: (name: string) => string;
|
|
3
3
|
export declare const repeatOnFailure: (command: string, options: {
|
|
4
4
|
pauseInSeconds: number;
|
|
5
|
+
/**
|
|
6
|
+
* fail the job after this many attempts — permanent errors (e.g. a
|
|
7
|
+
* 403) must fail loudly instead of retrying until the job timeout
|
|
8
|
+
*/
|
|
9
|
+
maxAttempts: number;
|
|
5
10
|
}) => string;
|
|
6
11
|
export declare const collapseableSection: (name: string, header: string) => (commands: string[]) => string[];
|
|
@@ -14,8 +14,14 @@ const sanitizeForBashVariable = name => name.replace(/-/g, "_");
|
|
|
14
14
|
exports.sanitizeForBashVariable = sanitizeForBashVariable;
|
|
15
15
|
const repeatOnFailure = (command, options) => {
|
|
16
16
|
return `
|
|
17
|
+
_attempt=0
|
|
17
18
|
until ${command}
|
|
18
19
|
do
|
|
20
|
+
_attempt=$((_attempt+1))
|
|
21
|
+
if [ "$_attempt" -ge ${options.maxAttempts} ]; then
|
|
22
|
+
echo "giving up after ${options.maxAttempts} attempts"
|
|
23
|
+
exit 1
|
|
24
|
+
fi
|
|
19
25
|
echo "Trying again."
|
|
20
26
|
sleep ${options.pauseInSeconds}
|
|
21
27
|
done
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gitlab.js","sourceRoot":"","sources":["../../../../../pipeline/src/utils/gitlab.ts"],"names":[],"mappings":";;;AAAA,oEAAwE;AAEjE,MAAM,qBAAqB,GAAG,CAAC,MAAgB,EAAY,EAAE,CAAC;IACnE,QAAQ,EAAE,4BAA4B;IACtC,GAAG,MAAM;IACT,QAAQ,EAAE,WAAW;CACtB,CAAC;AAJW,QAAA,qBAAqB,yBAIhC;AAEK,MAAM,uBAAuB,GAAG,CAAC,IAAY,EAAE,EAAE,CACtD,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AADb,QAAA,uBAAuB,2BACV;AAEnB,MAAM,eAAe,GAAG,CAC7B,OAAe,EACf,
|
|
1
|
+
{"version":3,"file":"gitlab.js","sourceRoot":"","sources":["../../../../../pipeline/src/utils/gitlab.ts"],"names":[],"mappings":";;;AAAA,oEAAwE;AAEjE,MAAM,qBAAqB,GAAG,CAAC,MAAgB,EAAY,EAAE,CAAC;IACnE,QAAQ,EAAE,4BAA4B;IACtC,GAAG,MAAM;IACT,QAAQ,EAAE,WAAW;CACtB,CAAC;AAJW,QAAA,qBAAqB,yBAIhC;AAEK,MAAM,uBAAuB,GAAG,CAAC,IAAY,EAAE,EAAE,CACtD,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AADb,QAAA,uBAAuB,2BACV;AAEnB,MAAM,eAAe,GAAG,CAC7B,OAAe,EACf,OAOC,EACO,EAAE;IACV,OAAO;;YAEG,OAAO;;;6BAGU,OAAO,CAAC,WAAW;gCAChB,OAAO,CAAC,WAAW;;;;cAIrC,OAAO,CAAC,cAAc;;GAEjC,CAAC;AACJ,CAAC,CAAC;AAxBW,QAAA,eAAe,mBAwB1B;AAEF,MAAM,KAAK,GAAG,IAAA,oDAA4B,EACxC,4BAA4B,EAC5B;;;CAGD,CACA,CAAC;AAEF,MAAM,GAAG,GAAG,IAAA,oDAA4B,EACtC,0BAA0B,EAC1B;;CAED,CACA,CAAC;AAEK,MAAM,mBAAmB,GAC9B,CAAC,IAAY,EAAE,MAAc,EAAE,EAAE,CACjC,CAAC,QAAkB,EAAY,EAAE;IAC/B,OAAO;QACL,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,EAAE,IAAI,MAAM,GAAG,CAAC;QACxC,GAAG,QAAQ;QACX,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,CAAC;KACxB,CAAC;AACJ,CAAC,CAAC;AARS,QAAA,mBAAmB,uBAQ5B"}
|
|
@@ -12,6 +12,12 @@ export declare class FileWriter {
|
|
|
12
12
|
constructor(config: Config);
|
|
13
13
|
protected writeTheFile(path: string, content: string): Promise<void>;
|
|
14
14
|
protected getBaseHookContext(path: string): Promise<BaseHookContext>;
|
|
15
|
+
/**
|
|
16
|
+
* writes content verbatim (no auto-generated header) — e.g. for
|
|
17
|
+
* materialized dockerfiles, where a leading comment would break
|
|
18
|
+
* parser directives like `# syntax = ...`
|
|
19
|
+
*/
|
|
20
|
+
writeGeneratedFileRaw(path: string, content: string): Promise<void>;
|
|
15
21
|
writeGeneratedFile(path: string, content: string, options: WriteFileOptions): Promise<void>;
|
|
16
22
|
writeYamlfile(path: string, data: any): Promise<void>;
|
|
17
23
|
protected getAutoGeneratedHeader(commentChar: string): string;
|
|
@@ -41,6 +41,14 @@ class FileWriter {
|
|
|
41
41
|
extension: (_b = path.split(".").pop()) !== null && _b !== void 0 ? _b : ""
|
|
42
42
|
};
|
|
43
43
|
}
|
|
44
|
+
/**
|
|
45
|
+
* writes content verbatim (no auto-generated header) — e.g. for
|
|
46
|
+
* materialized dockerfiles, where a leading comment would break
|
|
47
|
+
* parser directives like `# syntax = ...`
|
|
48
|
+
*/
|
|
49
|
+
async writeGeneratedFileRaw(path, content) {
|
|
50
|
+
await this.writeTheFile(path, content);
|
|
51
|
+
}
|
|
44
52
|
async writeGeneratedFile(path, content, options) {
|
|
45
53
|
await this.writeTheFile(path, [this.getAutoGeneratedHeader(options.commentChar), content].join("\n"));
|
|
46
54
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"writeFiles.js","sourceRoot":"","sources":["../../../../../pipeline/src/utils/writeFiles.ts"],"names":[],"mappings":";;;AAAA,0CAAwC;AACxC,+BAAiC;AAYpB,QAAA,oBAAoB,GAAqB;IACpD,iEAAiE;IACjE,SAAS,EAAE,CAAC;IACZ,4DAA4D;IAC5D,kBAAkB,EAAE,IAAI;IACxB,qEAAqE;IACrE,WAAW,EAAE,IAAI;CAClB,CAAC;AAEF,MAAa,UAAU;IACd,MAAM,CAAC,MAAM,CAAC,MAAc;QACjC,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IAED,YAA6B,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;QACzC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAES,KAAK,CAAC,YAAY,CAAC,IAAY,EAAE,OAAe;;QACxD,MAAM,kBAAkB,GACtB,MAAM,CAAA,MAAA,MAAA,IAAI,CAAC,MAAM,CAAC,KAAK,0CAAE,wBAAwB,mDAAG;YAClD,GAAG,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;YACxC,OAAO;SACR,CAAC,CAAA,CAAC;QACL,MAAM,IAAA,oBAAS,EAAC,IAAI,EAAE,kBAAkB,aAAlB,kBAAkB,cAAlB,kBAAkB,GAAI,OAAO,EAAE;YACnD,QAAQ,EAAE,OAAO;SAClB,CAAC,CAAC;IACL,CAAC;IAES,KAAK,CAAC,kBAAkB,CAAC,IAAY;;QAC7C,MAAM,QAAQ,GAAG,MAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,mCAAI,EAAE,CAAC;QAC7C,OAAO;YACL,QAAQ;YACR,IAAI;YACJ,SAAS,EAAE,MAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,mCAAI,EAAE;SACvC,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,kBAAkB,CAC7B,IAAY,EACZ,OAAe,EACf,OAAyB;QAEzB,MAAM,IAAI,CAAC,YAAY,CACrB,IAAI,EACJ,CAAC,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CACvE,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,aAAa,CAAC,IAAY,EAAE,IAAS;;QAChD,MAAM,eAAe,GAAG,MAAM,CAAA,MAAA,MAAA,IAAI,CAAC,MAAM,CAAC,KAAK,0CAAE,wBAAwB,mDACvE;YACE,GAAG,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;YACxC,IAAI;SACL,CACF,CAAA,CAAC;QACF,OAAO,IAAI,CAAC,kBAAkB,CAC5B,IAAI,EACJ,IAAA,gBAAS,EAAC,eAAe,aAAf,eAAe,cAAf,eAAe,GAAI,IAAI,EAAE,4BAAoB,CAAC,EACxD;YACE,WAAW,EAAE,GAAG;SACjB,CACF,CAAC;IACJ,CAAC;IAES,sBAAsB,CAAC,WAAmB;QAClD,OAAO;YACL,mDAAmD;YACnD,2CAA2C;YAC3C,sCAAsC;YACtC,mDAAmD;SACpD;aACE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,WAAW,IAAI,IAAI,EAAE,CAAC;aACvC,IAAI,CAAC,IAAI,CAAC;aACV,MAAM,CAAC,IAAI,CAAC,CAAC;IAClB,CAAC;CACF;
|
|
1
|
+
{"version":3,"file":"writeFiles.js","sourceRoot":"","sources":["../../../../../pipeline/src/utils/writeFiles.ts"],"names":[],"mappings":";;;AAAA,0CAAwC;AACxC,+BAAiC;AAYpB,QAAA,oBAAoB,GAAqB;IACpD,iEAAiE;IACjE,SAAS,EAAE,CAAC;IACZ,4DAA4D;IAC5D,kBAAkB,EAAE,IAAI;IACxB,qEAAqE;IACrE,WAAW,EAAE,IAAI;CAClB,CAAC;AAEF,MAAa,UAAU;IACd,MAAM,CAAC,MAAM,CAAC,MAAc;QACjC,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IAED,YAA6B,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;QACzC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAES,KAAK,CAAC,YAAY,CAAC,IAAY,EAAE,OAAe;;QACxD,MAAM,kBAAkB,GACtB,MAAM,CAAA,MAAA,MAAA,IAAI,CAAC,MAAM,CAAC,KAAK,0CAAE,wBAAwB,mDAAG;YAClD,GAAG,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;YACxC,OAAO;SACR,CAAC,CAAA,CAAC;QACL,MAAM,IAAA,oBAAS,EAAC,IAAI,EAAE,kBAAkB,aAAlB,kBAAkB,cAAlB,kBAAkB,GAAI,OAAO,EAAE;YACnD,QAAQ,EAAE,OAAO;SAClB,CAAC,CAAC;IACL,CAAC;IAES,KAAK,CAAC,kBAAkB,CAAC,IAAY;;QAC7C,MAAM,QAAQ,GAAG,MAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,mCAAI,EAAE,CAAC;QAC7C,OAAO;YACL,QAAQ;YACR,IAAI;YACJ,SAAS,EAAE,MAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,mCAAI,EAAE;SACvC,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,qBAAqB,CAAC,IAAY,EAAE,OAAe;QAC9D,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACzC,CAAC;IAEM,KAAK,CAAC,kBAAkB,CAC7B,IAAY,EACZ,OAAe,EACf,OAAyB;QAEzB,MAAM,IAAI,CAAC,YAAY,CACrB,IAAI,EACJ,CAAC,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CACvE,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,aAAa,CAAC,IAAY,EAAE,IAAS;;QAChD,MAAM,eAAe,GAAG,MAAM,CAAA,MAAA,MAAA,IAAI,CAAC,MAAM,CAAC,KAAK,0CAAE,wBAAwB,mDACvE;YACE,GAAG,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;YACxC,IAAI;SACL,CACF,CAAA,CAAC;QACF,OAAO,IAAI,CAAC,kBAAkB,CAC5B,IAAI,EACJ,IAAA,gBAAS,EAAC,eAAe,aAAf,eAAe,cAAf,eAAe,GAAI,IAAI,EAAE,4BAAoB,CAAC,EACxD;YACE,WAAW,EAAE,GAAG;SACjB,CACF,CAAC;IACJ,CAAC;IAES,sBAAsB,CAAC,WAAmB;QAClD,OAAO;YACL,mDAAmD;YACnD,2CAA2C;YAC3C,sCAAsC;YACtC,mDAAmD;SACpD;aACE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,WAAW,IAAI,IAAI,EAAE,CAAC;aACvC,IAAI,CAAC,IAAI,CAAC;aACV,MAAM,CAAC,IAAI,CAAC,CAAC;IAClB,CAAC;CACF;AA5ED,gCA4EC"}
|