@catladder/cli 0.0.0-next-88a07ab6 → 0.0.0-next-51dc9c2b

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. package/dist/bundles/catenv/index.js +151 -4
  2. package/dist/bundles/cli/index.js +923 -43
  3. package/dist/cli/src/apps/cli/commands/project/doctor/DoctorReport.d.ts +22 -0
  4. package/dist/cli/src/apps/cli/commands/project/doctor/DoctorReport.js +75 -0
  5. package/dist/cli/src/apps/cli/commands/project/doctor/DoctorReport.js.map +1 -0
  6. package/dist/cli/src/apps/cli/commands/project/doctor/GcloudProjectInspector.d.ts +15 -0
  7. package/dist/cli/src/apps/cli/commands/project/doctor/GcloudProjectInspector.js +59 -0
  8. package/dist/cli/src/apps/cli/commands/project/doctor/GcloudProjectInspector.js.map +1 -0
  9. package/dist/cli/src/apps/cli/commands/project/doctor/checkCloudRun.d.ts +13 -0
  10. package/dist/cli/src/apps/cli/commands/project/doctor/checkCloudRun.js +120 -0
  11. package/dist/cli/src/apps/cli/commands/project/doctor/checkCloudRun.js.map +1 -0
  12. package/dist/cli/src/apps/cli/commands/project/doctor/checkGithub.d.ts +10 -0
  13. package/dist/cli/src/apps/cli/commands/project/doctor/checkGithub.js +100 -0
  14. package/dist/cli/src/apps/cli/commands/project/doctor/checkGithub.js.map +1 -0
  15. package/dist/cli/src/apps/cli/commands/project/doctor/checkGitlab.d.ts +13 -0
  16. package/dist/cli/src/apps/cli/commands/project/doctor/checkGitlab.js +79 -0
  17. package/dist/cli/src/apps/cli/commands/project/doctor/checkGitlab.js.map +1 -0
  18. package/dist/cli/src/apps/cli/commands/project/doctor/checkStore.d.ts +8 -0
  19. package/dist/cli/src/apps/cli/commands/project/doctor/checkStore.js +44 -0
  20. package/dist/cli/src/apps/cli/commands/project/doctor/checkStore.js.map +1 -0
  21. package/dist/cli/src/apps/cli/commands/project/doctor/index.d.ts +14 -0
  22. package/dist/cli/src/apps/cli/commands/project/doctor/index.js +48 -0
  23. package/dist/cli/src/apps/cli/commands/project/doctor/index.js.map +1 -0
  24. package/dist/cli/src/apps/cli/commands/project/setup/setupAccessTokens.js +4 -1
  25. package/dist/cli/src/apps/cli/commands/project/setup/setupAccessTokens.js.map +1 -1
  26. package/dist/cli/src/apps/cli/commands/project/setup/setupCloudRun.d.ts +21 -0
  27. package/dist/cli/src/apps/cli/commands/project/setup/setupCloudRun.js +31 -11
  28. package/dist/cli/src/apps/cli/commands/project/setup/setupCloudRun.js.map +1 -1
  29. package/dist/cli/src/commands/index.d.ts +1 -0
  30. package/dist/cli/src/commands/index.js +8 -1
  31. package/dist/cli/src/commands/index.js.map +1 -1
  32. package/dist/cli/src/commands/project/commandDoctor.d.ts +8 -0
  33. package/dist/cli/src/commands/project/commandDoctor.js +25 -0
  34. package/dist/cli/src/commands/project/commandDoctor.js.map +1 -0
  35. package/dist/cli/src/gcloud/artifactsRegistry.d.ts +1 -0
  36. package/dist/cli/src/gcloud/artifactsRegistry.js +3 -2
  37. package/dist/cli/src/gcloud/artifactsRegistry.js.map +1 -1
  38. package/dist/cli/src/gcloud/serviceAccountNames.d.ts +28 -0
  39. package/dist/cli/src/gcloud/serviceAccountNames.js +51 -0
  40. package/dist/cli/src/gcloud/serviceAccountNames.js.map +1 -0
  41. package/dist/cli/src/gcloud/serviceAccounts.js +6 -27
  42. package/dist/cli/src/gcloud/serviceAccounts.js.map +1 -1
  43. package/dist/cli/src/utils/concurrency.d.ts +7 -0
  44. package/dist/cli/src/utils/concurrency.js +27 -0
  45. package/dist/cli/src/utils/concurrency.js.map +1 -0
  46. package/dist/cli/src/utils/github.d.ts +10 -0
  47. package/dist/cli/src/utils/github.js +26 -1
  48. package/dist/cli/src/utils/github.js.map +1 -1
  49. package/dist/cli/src/utils/gitlab.d.ts +6 -0
  50. package/dist/cli/src/utils/gitlab.js +19 -1
  51. package/dist/cli/src/utils/gitlab.js.map +1 -1
  52. package/dist/pipeline/src/constants.js +1 -1
  53. package/dist/pipeline/src/deploy/cloudRun/index.js +12 -0
  54. package/dist/pipeline/src/deploy/cloudRun/index.js.map +1 -1
  55. package/dist/pipeline/src/deploy/index.d.ts +5 -0
  56. package/dist/pipeline/src/deploy/index.js.map +1 -1
  57. package/dist/pipeline/src/index.d.ts +1 -0
  58. package/dist/pipeline/src/index.js +1 -0
  59. package/dist/pipeline/src/index.js.map +1 -1
  60. package/dist/pipeline/src/pipeline/createJobsForComponent.js +3 -2
  61. package/dist/pipeline/src/pipeline/createJobsForComponent.js.map +1 -1
  62. package/dist/pipeline/src/types/config.d.ts +8 -0
  63. package/dist/pipeline/src/types/config.js.map +1 -1
  64. package/dist/pipeline/src/verify/createVerifyJobs.d.ts +4 -0
  65. package/dist/pipeline/src/verify/createVerifyJobs.js +63 -0
  66. package/dist/pipeline/src/verify/createVerifyJobs.js.map +1 -0
  67. package/dist/pipeline/src/verify/index.d.ts +2 -0
  68. package/dist/pipeline/src/verify/index.js +26 -0
  69. package/dist/pipeline/src/verify/index.js.map +1 -0
  70. package/dist/pipeline/src/verify/types.d.ts +16 -0
  71. package/dist/pipeline/src/verify/types.js +5 -0
  72. package/dist/pipeline/src/verify/types.js.map +1 -0
  73. package/dist/tsconfig.tsbuildinfo +1 -1
  74. package/package.json +1 -1
  75. package/src/apps/cli/commands/project/doctor/DoctorReport.ts +72 -0
  76. package/src/apps/cli/commands/project/doctor/GcloudProjectInspector.ts +77 -0
  77. package/src/apps/cli/commands/project/doctor/checkCloudRun.ts +148 -0
  78. package/src/apps/cli/commands/project/doctor/checkGithub.ts +156 -0
  79. package/src/apps/cli/commands/project/doctor/checkGitlab.ts +133 -0
  80. package/src/apps/cli/commands/project/doctor/checkStore.ts +43 -0
  81. package/src/apps/cli/commands/project/doctor/index.ts +59 -0
  82. package/src/apps/cli/commands/project/setup/setupAccessTokens.ts +9 -2
  83. package/src/apps/cli/commands/project/setup/setupCloudRun.ts +42 -21
  84. package/src/commands/index.ts +1 -0
  85. package/src/commands/project/commandDoctor.ts +21 -0
  86. package/src/gcloud/__tests__/serviceAccountNames.test.ts +63 -0
  87. package/src/gcloud/artifactsRegistry.ts +3 -1
  88. package/src/gcloud/serviceAccountNames.ts +65 -0
  89. package/src/gcloud/serviceAccounts.ts +6 -38
  90. package/src/utils/concurrency.ts +25 -0
  91. package/src/utils/github.ts +48 -0
  92. package/src/utils/gitlab.ts +24 -0
  93. package/tsconfig.json +2 -1
@@ -737,7 +737,7 @@ var __importDefault = this && this.__importDefault || function (mod) {
737
737
  Object.defineProperty(exports, "__esModule", ({
738
738
  value: true
739
739
  }));
740
- exports.upsertAllVariables = exports.clearBackups = exports.getVariableValueByRawName = exports.getAllVariables = exports.getProjectInfo = exports.doGitlabRequest = exports.getGitlabToken = exports.setupGitlabToken = exports.hasGitlabToken = void 0;
740
+ exports.upsertAllVariables = exports.clearBackups = exports.getVariableValueByRawName = exports.getAllVariables = exports.getProjectInfo = exports.doGitlabRequestAllPages = exports.doGitlabRequest = exports.getGitlabToken = exports.setupGitlabToken = exports.hasGitlabToken = void 0;
741
741
  const pipeline_1 = __nccwpck_require__(60241);
742
742
  const lodash_es_1 = __nccwpck_require__(64284);
743
743
  const memoizee_1 = __importDefault(__nccwpck_require__(57009));
@@ -808,6 +808,24 @@ const doGitlabRequest = async (io, path, data = undefined, method = "GET") => {
808
808
  throw new Error(`Could not send request to gitlab api ${path}: ${result.status} "${result.statusText}".\nResponse: ${JSON.stringify(await result.json(), null, 2)}`);
809
809
  };
810
810
  exports.doGitlabRequest = doGitlabRequest;
811
+ /**
812
+ * GET a list endpoint across ALL pages (gitlab returns 20 items per
813
+ * page by default — long-lived projects easily exceed that, e.g.
814
+ * rotated access tokens accumulate one entry per rotation)
815
+ */
816
+ const doGitlabRequestAllPages = async (io, path) => {
817
+ const PER_PAGE = 100;
818
+ const separator = path.includes("?") ? "&" : "?";
819
+ const all = [];
820
+ for (let page = 1;; page++) {
821
+ const items = await (0, exports.doGitlabRequest)(io, `${path}${separator}per_page=${PER_PAGE}&page=${page}`);
822
+ if (!(items === null || items === void 0 ? void 0 : items.length)) break;
823
+ all.push(...items);
824
+ if (items.length < PER_PAGE) break;
825
+ }
826
+ return all;
827
+ };
828
+ exports.doGitlabRequestAllPages = doGitlabRequestAllPages;
811
829
  const getProjectInfo = async io => {
812
830
  const {
813
831
  gitRemotePath
@@ -5325,7 +5343,7 @@ Object.defineProperty(exports, "__esModule", ({
5325
5343
  value: true
5326
5344
  }));
5327
5345
  exports.DOCKER_REGISTRY = exports.PIPELINE_IMAGE_TAG = void 0;
5328
- exports.PIPELINE_IMAGE_TAG = "next-88a07ab6" || 0;
5346
+ exports.PIPELINE_IMAGE_TAG = "next-51dc9c2b" || 0;
5329
5347
  exports.DOCKER_REGISTRY = "git.panter.ch:5001/catladder/catladder" || 0;
5330
5348
 
5331
5349
  /***/ }),
@@ -7638,6 +7656,18 @@ exports.GCLOUD_RUN_DEPLOY_TYPE = {
7638
7656
  DEPLOY_CLOUD_RUN_PROJECT_ID: deployConfigRaw ? deployConfigRaw.projectId : undefined,
7639
7657
  DEPLOY_CLOUD_RUN_REGION: deployConfigRaw ? deployConfigRaw.region : undefined
7640
7658
  };
7659
+ },
7660
+ verifyJobSetupScript: context => {
7661
+ var _a;
7662
+ const deployConfig = (_a = context.deploy) === null || _a === void 0 ? void 0 : _a.config;
7663
+ const service = deployConfig === null || deployConfig === void 0 ? void 0 : deployConfig.service;
7664
+ const serviceConfig = typeof service === "object" ? service : undefined;
7665
+ if ((serviceConfig === null || serviceConfig === void 0 ? void 0 : serviceConfig.allowUnauthenticated) !== false) {
7666
+ return [];
7667
+ }
7668
+ // the service requires IAM auth: provide application default credentials
7669
+ // so the verify command can fetch identity tokens for the deployed service
7670
+ return (0, gitlab_1.collapseableSection)("verifygcloudauth", "Setup google application credentials")([`echo "$${exports.GCLOUD_DEPLOY_CREDENTIALS_KEY}" > "$CI_PROJECT_DIR/.gcloud-sa.json"`, `export GOOGLE_APPLICATION_CREDENTIALS="$CI_PROJECT_DIR/.gcloud-sa.json"`]);
7641
7671
  }
7642
7672
  };
7643
7673
 
@@ -8761,6 +8791,7 @@ __exportStar(__nccwpck_require__(20623), exports);
8761
8791
  __exportStar(__nccwpck_require__(38045), exports);
8762
8792
  __exportStar(__nccwpck_require__(51398), exports);
8763
8793
  __exportStar(__nccwpck_require__(88025), exports);
8794
+ __exportStar(__nccwpck_require__(39871), exports);
8764
8795
  __exportStar(__nccwpck_require__(45585), exports);
8765
8796
  __exportStar(__nccwpck_require__(47666), exports);
8766
8797
  __exportStar(__nccwpck_require__(60250), exports);
@@ -9390,6 +9421,7 @@ exports.createJobsForComponentContext = void 0;
9390
9421
  const build_1 = __nccwpck_require__(51398);
9391
9422
  const deploy_1 = __nccwpck_require__(88025);
9392
9423
  const jobs_1 = __nccwpck_require__(41507);
9424
+ const createVerifyJobs_1 = __nccwpck_require__(69134);
9393
9425
  const injectDefaultVarsInCustomJobs = (context, jobs) => jobs.map(({
9394
9426
  variables,
9395
9427
  ...job
@@ -9411,9 +9443,9 @@ const getCustomJobs = context => {
9411
9443
  return injectDefaultVarsInCustomJobs(context, rawJobs);
9412
9444
  };
9413
9445
  const createJobsForComponentContext = async context => {
9414
- const [buildJobs, deployJobs] = await Promise.all([context.build.type !== "disabled" ? build_1.BUILD_TYPES[context.build.buildType].jobs(context) : [], context.componentConfig.deploy !== false ? deploy_1.DEPLOY_TYPES[context.componentConfig.deploy.type].jobs(context) : []]);
9446
+ const [buildJobs, deployJobs, verifyJobs] = await Promise.all([context.build.type !== "disabled" ? build_1.BUILD_TYPES[context.build.buildType].jobs(context) : [], context.componentConfig.deploy !== false ? deploy_1.DEPLOY_TYPES[context.componentConfig.deploy.type].jobs(context) : [], (0, createVerifyJobs_1.createVerifyJobs)(context)]);
9415
9447
  const customJobs = getCustomJobs(context);
9416
- return [...buildJobs, ...deployJobs, ...customJobs];
9448
+ return [...buildJobs, ...deployJobs, ...verifyJobs, ...customJobs];
9417
9449
  };
9418
9450
  exports.createJobsForComponentContext = createJobsForComponentContext;
9419
9451
 
@@ -10557,6 +10589,121 @@ exports.resolveReferencesOnce = resolveReferencesOnce;
10557
10589
 
10558
10590
  /***/ }),
10559
10591
 
10592
+ /***/ 69134:
10593
+ /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
10594
+
10595
+ "use strict";
10596
+
10597
+
10598
+ Object.defineProperty(exports, "__esModule", ({
10599
+ value: true
10600
+ }));
10601
+ exports.createVerifyJobs = exports.VERIFY_JOB_NAME = void 0;
10602
+ const createArtifactsConfig_1 = __nccwpck_require__(43983);
10603
+ const createJobCache_1 = __nccwpck_require__(65644);
10604
+ const cache_1 = __nccwpck_require__(34189);
10605
+ const constants_1 = __nccwpck_require__(37878);
10606
+ const yarn_1 = __nccwpck_require__(78897);
10607
+ const deploy_1 = __nccwpck_require__(88025);
10608
+ const runner_1 = __nccwpck_require__(92348);
10609
+ const utils_1 = __nccwpck_require__(20595);
10610
+ exports.VERIFY_JOB_NAME = "🔍 verify";
10611
+ const createVerifyJobs = async context => {
10612
+ var _a, _b, _c, _d, _e, _f, _g;
10613
+ const verifyConfig = context.componentConfig.verify;
10614
+ if (!verifyConfig) {
10615
+ return [];
10616
+ }
10617
+ const deployConfig = (_a = context.deploy) === null || _a === void 0 ? void 0 : _a.config;
10618
+ if (!deployConfig) {
10619
+ // nothing is deployed, so there is nothing to verify
10620
+ return [];
10621
+ }
10622
+ const isNodeBuild = context.build.type !== "disabled" && context.build.buildType === "node";
10623
+ const [yarnInstall, nodeCache] = isNodeBuild ? await Promise.all([(0, yarn_1.getYarnInstall)(context), (0, cache_1.getNodeCache)(context, "pull")]) : [null, null];
10624
+ const setupScript = (_d = (_c = (_b = deploy_1.DEPLOY_TYPES[deployConfig.type]).verifyJobSetupScript) === null || _c === void 0 ? void 0 : _c.call(_b, context)) !== null && _d !== void 0 ? _d : [];
10625
+ return [{
10626
+ name: exports.VERIFY_JOB_NAME,
10627
+ stage: "verify",
10628
+ envMode: "stagePerEnv",
10629
+ requires: [
10630
+ // wait for this component's own deploy
10631
+ {
10632
+ capability: "deployment",
10633
+ artifacts: false
10634
+ },
10635
+ // ...and for the deploys of the components listed in waitFor
10636
+ ...((_e = verifyConfig.waitFor) !== null && _e !== void 0 ? _e : []).map(componentName => ({
10637
+ capability: "deployment",
10638
+ from: {
10639
+ component: componentName
10640
+ },
10641
+ artifacts: false,
10642
+ strict: true
10643
+ }))],
10644
+ image: (_f = verifyConfig.jobImage) !== null && _f !== void 0 ? _f : (0, runner_1.getRunnerImage)("jobs-testing-chrome"),
10645
+ cache: nodeCache ? (0, createJobCache_1.createJobCacheFromCacheConfigs)(context, nodeCache) : undefined,
10646
+ variables: {
10647
+ ...context.environment.envVars
10648
+ },
10649
+ runnerVariables: {
10650
+ ...constants_1.NODE_RUNNER_BUILD_VARIABLES,
10651
+ ...((_g = verifyConfig.runnerVariables) !== null && _g !== void 0 ? _g : {})
10652
+ },
10653
+ script: [...setupScript, ...(yarnInstall ? (0, yarn_1.ensureNodeVersion)(context) : []), `cd ${context.build.dir}`, ...(yarnInstall !== null && yarnInstall !== void 0 ? yarnInstall : []), ...(0, utils_1.ensureArray)(verifyConfig.command)],
10654
+ allow_failure: verifyConfig.allowFailure,
10655
+ ...(0, createArtifactsConfig_1.createArtifactsConfig)(context.build.dir, verifyConfig.artifactsReports, verifyConfig.artifacts)
10656
+ }];
10657
+ };
10658
+ exports.createVerifyJobs = createVerifyJobs;
10659
+
10660
+ /***/ }),
10661
+
10662
+ /***/ 39871:
10663
+ /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
10664
+
10665
+ "use strict";
10666
+
10667
+
10668
+ var __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) {
10669
+ if (k2 === undefined) k2 = k;
10670
+ var desc = Object.getOwnPropertyDescriptor(m, k);
10671
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10672
+ desc = {
10673
+ enumerable: true,
10674
+ get: function () {
10675
+ return m[k];
10676
+ }
10677
+ };
10678
+ }
10679
+ Object.defineProperty(o, k2, desc);
10680
+ } : function (o, m, k, k2) {
10681
+ if (k2 === undefined) k2 = k;
10682
+ o[k2] = m[k];
10683
+ });
10684
+ var __exportStar = this && this.__exportStar || function (m, exports) {
10685
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
10686
+ };
10687
+ Object.defineProperty(exports, "__esModule", ({
10688
+ value: true
10689
+ }));
10690
+ __exportStar(__nccwpck_require__(99318), exports);
10691
+ __exportStar(__nccwpck_require__(69134), exports);
10692
+
10693
+ /***/ }),
10694
+
10695
+ /***/ 99318:
10696
+ /***/ ((__unused_webpack_module, exports) => {
10697
+
10698
+ "use strict";
10699
+
10700
+
10701
+ Object.defineProperty(exports, "__esModule", ({
10702
+ value: true
10703
+ }));
10704
+
10705
+ /***/ }),
10706
+
10560
10707
  /***/ 51748:
10561
10708
  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
10562
10709