@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"yarn.js","sourceRoot":"","sources":["../../../../../../pipeline/src/build/node/yarn.ts"],"names":[],"mappings":";;;AAAA,8DAA2D;AAG3D,uCAA0C;AAC1C,+CAAyD;AAEzD,MAAM,oBAAoB,GAAG,gCAAgC,CAAC;AAE9D,MAAM,uBAAuB,GAAG,oCAAoC,CAAC;AACrE,8CAA8C;AAC9C,MAAM,uBAAuB,GAAG,cAAc,CAAC;AAE/C,MAAM,qBAAqB,GAAG,KAAK,EAAE,OAAgB,EAAE,EAAE;IACvD,MAAM,kBAAkB,GAAG,MAAM,OAAO,CAAC,kBAAkB,CAAC;IAC5D,IAAI,kBAAkB,CAAC,SAAS,EAAE,CAAC;QACjC,OAAO,oBAAoB,CAAC;IAC9B,CAAC;IACD,2GAA2G;IAC3G,OAAO,0CAA0C,CAAC;AACpD,CAAC,CAAC;AAEK,MAAM,iBAAiB,GAAG,CAAC,OAAgB,EAAE,EAAE,CACpD,IAAA,4BAAmB,EACjB,aAAa,EACb,qBAAqB,CACtB,CAAC;IACA,
|
|
1
|
+
{"version":3,"file":"yarn.js","sourceRoot":"","sources":["../../../../../../pipeline/src/build/node/yarn.ts"],"names":[],"mappings":"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"}
|
|
@@ -309,7 +309,7 @@ export type BuildConfigGeneric<T extends BuildConfigStandaloneType> = Extract<Bu
|
|
|
309
309
|
type: T;
|
|
310
310
|
}>;
|
|
311
311
|
export declare const isStandaloneBuildConfig: (t: BuildConfig | false) => t is BuildConfigStandalone;
|
|
312
|
-
export declare const isOfBuildType: <T extends ("node" | "custom" | "rails" | "node-static" | "
|
|
312
|
+
export declare const isOfBuildType: <T extends ("node" | "custom" | "rails" | "node-static" | "storybook" | "meteor")[]>(t: BuildConfig, ...types: T) => t is Extract<BuildConfigNode, {
|
|
313
313
|
type: T[number];
|
|
314
314
|
}> | Extract<BuildConfigNodeStatic, {
|
|
315
315
|
type: T[number];
|
|
@@ -4,5 +4,5 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.DOCKER_REGISTRY = exports.PIPELINE_IMAGE_TAG = void 0;
|
|
7
|
-
exports.PIPELINE_IMAGE_TAG = "next-
|
|
7
|
+
exports.PIPELINE_IMAGE_TAG = "next-6a4450e0" || "latest";
|
|
8
8
|
exports.DOCKER_REGISTRY = "git.panter.ch:5001/catladder/catladder" || "git.panter.ch:5001/catladder/catladder";
|
|
@@ -5,6 +5,14 @@ import type { EnvironmentContext } from "../types/environmentContext";
|
|
|
5
5
|
export type SecretEnvVar = {
|
|
6
6
|
key: string;
|
|
7
7
|
hidden?: boolean;
|
|
8
|
+
/**
|
|
9
|
+
* whether the value is sensitive. Both kinds live in the vault and are
|
|
10
|
+
* provided to jobs the same way; platforms that distinguish masked
|
|
11
|
+
* secrets from plain variables (github) treat them differently:
|
|
12
|
+
* "variable" values are unmasked (visible in logs, usable in
|
|
13
|
+
* environment urls) and don't count against secret limits.
|
|
14
|
+
*/
|
|
15
|
+
kind?: "secret" | "variable";
|
|
8
16
|
};
|
|
9
17
|
declare const getBasePredefinedVariables: (ctx: EnvironmentContext) => {
|
|
10
18
|
ENV_SHORT: string;
|
|
@@ -22,7 +22,7 @@ const getBasePredefinedVariables = ctx => {
|
|
|
22
22
|
};
|
|
23
23
|
};
|
|
24
24
|
const getEnvironmentVariables = async (ctx, options = {}) => {
|
|
25
|
-
var _a, _b, _c, _d, _e, _f, _g
|
|
25
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
26
26
|
const environmentContext = (0, getEnvironmentContext_1.getEnvironmentContext)(ctx);
|
|
27
27
|
const {
|
|
28
28
|
config,
|
|
@@ -79,13 +79,13 @@ const getEnvironmentVariables = async (ctx, options = {}) => {
|
|
|
79
79
|
}
|
|
80
80
|
const publicEnvVarsRaw = (_e = (_d = envConfigRaw.vars) === null || _d === void 0 ? void 0 : _d.public) !== null && _e !== void 0 ? _e : {};
|
|
81
81
|
const additionalSecretKeys = deployConfigRaw ? deploy_1.DEPLOY_TYPES[deployConfigRaw.type].additionalSecretKeys(environmentContext) : [];
|
|
82
|
-
const secretEnvVarKeys = [...(0, envVars_1.
|
|
82
|
+
const secretEnvVarKeys = [...(0, envVars_1.normalizeSecretVarsConfig)((_f = envConfigRaw.vars) === null || _f === void 0 ? void 0 : _f.secret), ...additionalSecretKeys];
|
|
83
83
|
const secretEnvVars = (0, envVars_1.makeSecretEnvVarMapping)(env, componentName, secretEnvVarKeys);
|
|
84
84
|
const publicEnvVarsRawSanitized = (0, envVars_1.stringifyValues)(publicEnvVarsRaw);
|
|
85
85
|
const publicEnvVarsUnresolved = Object.fromEntries(Object.entries(publicEnvVarsRawSanitized).map(([key, value]) => [key, (0, VariableValueContainingReferences_1.createVariableValueContainingReferencesFromString)(value, {
|
|
86
86
|
componentName: ctx.componentName
|
|
87
87
|
})]));
|
|
88
|
-
const publicEnvVars = ((
|
|
88
|
+
const publicEnvVars = ((_g = options.shouldResolveReferences) !== null && _g !== void 0 ? _g : true) ? await (0, resolveAllReferences_1.resolveAllReferences)(publicEnvVarsUnresolved, async otherComponentName => {
|
|
89
89
|
const {
|
|
90
90
|
envVars: otherEnvVars
|
|
91
91
|
} = await (0, exports.getEnvironmentVariables)({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getEnvironmentVariables.js","sourceRoot":"","sources":["../../../../../pipeline/src/context/getEnvironmentVariables.ts"],"names":[],"mappings":";;;AAAA,sCAAyC;AASzC,2DAA6D;AAC7D,0CAAyD;AAEzD,sGAAmH;AACnH,4EAAyE;AACzE,mEAAgE;AAChE,mEAAgE;AAChE,iEAA8D;AAC9D,6CAIyB;
|
|
1
|
+
{"version":3,"file":"getEnvironmentVariables.js","sourceRoot":"","sources":["../../../../../pipeline/src/context/getEnvironmentVariables.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,7 +13,7 @@ const envVars_1 = require("./utils/envVars");
|
|
|
13
13
|
* @returns
|
|
14
14
|
*/
|
|
15
15
|
const transformJobOnlyVars = async (env, componentName, vars) => {
|
|
16
|
-
var _a
|
|
16
|
+
var _a;
|
|
17
17
|
if (!vars) {
|
|
18
18
|
return {
|
|
19
19
|
envVars: {},
|
|
@@ -21,7 +21,7 @@ const transformJobOnlyVars = async (env, componentName, vars) => {
|
|
|
21
21
|
};
|
|
22
22
|
}
|
|
23
23
|
const publicVars = (0, envVars_1.stringifyValues)((_a = vars === null || vars === void 0 ? void 0 : vars.public) !== null && _a !== void 0 ? _a : {});
|
|
24
|
-
const secretEnvVarKeys = (0, envVars_1.
|
|
24
|
+
const secretEnvVarKeys = (0, envVars_1.normalizeSecretVarsConfig)(vars === null || vars === void 0 ? void 0 : vars.secret);
|
|
25
25
|
const deployJobOnlySecretEnvVars = (vars === null || vars === void 0 ? void 0 : vars.secret) ? (0, envVars_1.makeSecretEnvVarMapping)(env, componentName, secretEnvVarKeys) : {};
|
|
26
26
|
const envVars = {
|
|
27
27
|
...deployJobOnlySecretEnvVars,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transformJobOnlyVars.js","sourceRoot":"","sources":["../../../../../pipeline/src/context/transformJobOnlyVars.ts"],"names":[],"mappings":";;;AAEA,6CAIyB;AAEzB;;;;;;GAMG;AACI,MAAM,oBAAoB,GAAG,KAAK,EACvC,GAAW,EACX,aAAqB,EACrB,IAAoB,EAInB,EAAE;;IACH,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO;YACL,OAAO,EAAE,EAAE;YACX,gBAAgB,EAAE,EAAE;SACrB,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,IAAA,yBAAe,EAAC,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,mCAAI,EAAE,CAAC,CAAC;IACvD,MAAM,gBAAgB,GAAG,IAAA,
|
|
1
|
+
{"version":3,"file":"transformJobOnlyVars.js","sourceRoot":"","sources":["../../../../../pipeline/src/context/transformJobOnlyVars.ts"],"names":[],"mappings":";;;AAEA,6CAIyB;AAEzB;;;;;;GAMG;AACI,MAAM,oBAAoB,GAAG,KAAK,EACvC,GAAW,EACX,aAAqB,EACrB,IAAoB,EAInB,EAAE;;IACH,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO;YACL,OAAO,EAAE,EAAE;YACX,gBAAgB,EAAE,EAAE;SACrB,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,IAAA,yBAAe,EAAC,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,mCAAI,EAAE,CAAC,CAAC;IACvD,MAAM,gBAAgB,GAAG,IAAA,mCAAyB,EAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,CAAC,CAAC;IACjE,MAAM,0BAA0B,GAAG,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM;QAC7C,CAAC,CAAC,IAAA,iCAAuB,EAAC,GAAG,EAAE,aAAa,EAAE,gBAAgB,CAAC;QAC/D,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,OAAO,GAAG;QACd,GAAG,0BAA0B;QAC7B,GAAG,UAAU;KACd,CAAC;IACF,OAAO;QACL,OAAO;QACP,gBAAgB;KACjB,CAAC;AACJ,CAAC,CAAC;AA7BW,QAAA,oBAAoB,wBA6B/B"}
|
|
@@ -1,8 +1,15 @@
|
|
|
1
1
|
import type { SecretEnvVar } from "../getEnvironmentVariables";
|
|
2
|
+
import type { EnvVars } from "../../types/config";
|
|
2
3
|
export declare const stringifyValues: (obj: Record<string, unknown>) => {
|
|
3
4
|
[k: string]: string;
|
|
4
5
|
};
|
|
5
6
|
export declare const stringListToSecreteEnvVarList: (keys: string[]) => SecretEnvVar[];
|
|
7
|
+
/**
|
|
8
|
+
* normalizes both config forms of vault-stored env vars: the deprecated
|
|
9
|
+
* plain string[] (all keys secret) and the record form carrying a kind
|
|
10
|
+
* (or config object) per key
|
|
11
|
+
*/
|
|
12
|
+
export declare const normalizeSecretVarsConfig: (secret: EnvVars["secret"]) => SecretEnvVar[];
|
|
6
13
|
export declare const makeSecretEnvVarMapping: (env: string, componentName: string, secretEnvVars: SecretEnvVar[]) => {
|
|
7
14
|
[k: string]: import("../../bash/BashExpression").BashExpression;
|
|
8
15
|
};
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.makeSecretEnvVarMapping = exports.stringListToSecreteEnvVarList = exports.stringifyValues = void 0;
|
|
6
|
+
exports.makeSecretEnvVarMapping = exports.normalizeSecretVarsConfig = exports.stringListToSecreteEnvVarList = exports.stringifyValues = void 0;
|
|
7
7
|
const lodash_es_1 = require("lodash-es");
|
|
8
8
|
const getEnvironmentVariables_1 = require("../getEnvironmentVariables");
|
|
9
9
|
const BashExpression_1 = require("../../bash/BashExpression");
|
|
@@ -13,6 +13,27 @@ const stringListToSecreteEnvVarList = keys => keys.map(key => ({
|
|
|
13
13
|
key
|
|
14
14
|
}));
|
|
15
15
|
exports.stringListToSecreteEnvVarList = stringListToSecreteEnvVarList;
|
|
16
|
+
/**
|
|
17
|
+
* normalizes both config forms of vault-stored env vars: the deprecated
|
|
18
|
+
* plain string[] (all keys secret) and the record form carrying a kind
|
|
19
|
+
* (or config object) per key
|
|
20
|
+
*/
|
|
21
|
+
const normalizeSecretVarsConfig = secret => {
|
|
22
|
+
if (!secret) {
|
|
23
|
+
return [];
|
|
24
|
+
}
|
|
25
|
+
if (Array.isArray(secret)) {
|
|
26
|
+
return (0, exports.stringListToSecreteEnvVarList)(secret);
|
|
27
|
+
}
|
|
28
|
+
return Object.entries(secret).map(([key, config]) => typeof config === "string" ? {
|
|
29
|
+
key,
|
|
30
|
+
kind: config
|
|
31
|
+
} : {
|
|
32
|
+
key,
|
|
33
|
+
...config
|
|
34
|
+
});
|
|
35
|
+
};
|
|
36
|
+
exports.normalizeSecretVarsConfig = normalizeSecretVarsConfig;
|
|
16
37
|
const makeSecretEnvVarMapping = (env, componentName, secretEnvVars) => {
|
|
17
38
|
return Object.fromEntries(secretEnvVars.map(({
|
|
18
39
|
key
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"envVars.js","sourceRoot":"","sources":["../../../../../../pipeline/src/context/utils/envVars.ts"],"names":[],"mappings":";;;AAAA,yCAAqC;AAErC,wEAA8D;AAC9D,8DAA4D;
|
|
1
|
+
{"version":3,"file":"envVars.js","sourceRoot":"","sources":["../../../../../../pipeline/src/context/utils/envVars.ts"],"names":[],"mappings":";;;AAAA,yCAAqC;AAErC,wEAA8D;AAC9D,8DAA4D;AAGrD,MAAM,eAAe,GAAG,CAAC,GAA4B,EAAE,EAAE,CAC9D,MAAM,CAAC,WAAW,CAChB,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;IACxC,GAAG;IACH,IAAA,oBAAQ,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE;CACrD,CAAC,CACH,CAAC;AANS,QAAA,eAAe,mBAMxB;AAEG,MAAM,6BAA6B,GAAG,CAAC,IAAc,EAAkB,EAAE,CAC9E,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;AADlB,QAAA,6BAA6B,iCACX;AAE/B;;;;GAIG;AACI,MAAM,yBAAyB,GAAG,CACvC,MAAyB,EACT,EAAE;IAClB,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,OAAO,IAAA,qCAA6B,EAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,EAAE,CAClD,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,MAAM,EAAE,CACxE,CAAC;AACJ,CAAC,CAAC;AAZW,QAAA,yBAAyB,6BAYpC;AACK,MAAM,uBAAuB,GAAG,CACrC,GAAW,EACX,aAAqB,EACrB,aAA6B,EAC7B,EAAE;IACF,OAAO,MAAM,CAAC,WAAW,CACvB,aAAa,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;QAC7B,GAAG;QACH,IAAA,gCAAe,EAAC,IAAA,0CAAgB,EAAC,GAAG,EAAE,aAAa,EAAE,GAAG,CAAC,CAAC;KAC3D,CAAC,CACH,CAAC;AACJ,CAAC,CAAC;AAXW,QAAA,uBAAuB,2BAWlC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* input for content-hashing an image definition. `extraDirs` covers
|
|
3
|
+
* image definitions that include other image dirs (dockerfile INCLUDE).
|
|
4
|
+
*/
|
|
5
|
+
export type ImageHashConfig = {
|
|
6
|
+
dir: string;
|
|
7
|
+
extraDirs?: string[];
|
|
8
|
+
hashExtraPaths?: string[];
|
|
9
|
+
buildArgs?: Record<string, string>;
|
|
10
|
+
};
|
|
11
|
+
export type CustomImageHashResult = {
|
|
12
|
+
hash: string;
|
|
13
|
+
watchedPaths: string[];
|
|
14
|
+
};
|
|
15
|
+
export declare function computeCustomImageHash(config: ImageHashConfig): CustomImageHashResult;
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.computeCustomImageHash = void 0;
|
|
7
|
+
const crypto_1 = require("crypto");
|
|
8
|
+
const fs_1 = require("fs");
|
|
9
|
+
const path_1 = require("path");
|
|
10
|
+
const IGNORED_FILES = new Set([".DS_Store", "Thumbs.db"]);
|
|
11
|
+
const isIgnoredFile = path => {
|
|
12
|
+
var _a;
|
|
13
|
+
return IGNORED_FILES.has((_a = path.split("/").pop()) !== null && _a !== void 0 ? _a : "");
|
|
14
|
+
};
|
|
15
|
+
function listFilesRecursive(dir) {
|
|
16
|
+
const resolved = (0, path_1.resolve)(dir);
|
|
17
|
+
const entries = (0, fs_1.readdirSync)(resolved, {
|
|
18
|
+
recursive: true,
|
|
19
|
+
encoding: "utf-8"
|
|
20
|
+
});
|
|
21
|
+
return entries.filter(entry => {
|
|
22
|
+
if (isIgnoredFile(entry)) {
|
|
23
|
+
// OS junk files exist locally but not in CI checkouts — they
|
|
24
|
+
// must never influence the content hash
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
const fullPath = (0, path_1.join)(resolved, entry);
|
|
28
|
+
return (0, fs_1.statSync)(fullPath).isFile();
|
|
29
|
+
}).sort();
|
|
30
|
+
}
|
|
31
|
+
function computeCustomImageHash(config) {
|
|
32
|
+
var _a;
|
|
33
|
+
const hash = (0, crypto_1.createHash)("sha256");
|
|
34
|
+
const watchedPaths = [];
|
|
35
|
+
// Hash all files in the dir (includes the Dockerfile and any context files)
|
|
36
|
+
const dirFiles = listFilesRecursive(config.dir);
|
|
37
|
+
for (const file of dirFiles) {
|
|
38
|
+
const fullPath = (0, path_1.join)((0, path_1.resolve)(config.dir), file);
|
|
39
|
+
hash.update(file); // include relative path for disambiguation
|
|
40
|
+
hash.update((0, fs_1.readFileSync)(fullPath));
|
|
41
|
+
}
|
|
42
|
+
watchedPaths.push(`${config.dir}/**/*`);
|
|
43
|
+
// extra dirs (e.g. included base image definitions)
|
|
44
|
+
for (const extraDir of (_a = config.extraDirs) !== null && _a !== void 0 ? _a : []) {
|
|
45
|
+
for (const file of listFilesRecursive(extraDir)) {
|
|
46
|
+
hash.update(file);
|
|
47
|
+
hash.update((0, fs_1.readFileSync)((0, path_1.join)((0, path_1.resolve)(extraDir), file)));
|
|
48
|
+
}
|
|
49
|
+
watchedPaths.push(`${extraDir}/**/*`);
|
|
50
|
+
}
|
|
51
|
+
// Hash extra paths (for files outside the dir)
|
|
52
|
+
if (config.hashExtraPaths) {
|
|
53
|
+
// Extra paths are literal file paths (not globs) for simplicity
|
|
54
|
+
const extraFiles = [...config.hashExtraPaths].sort();
|
|
55
|
+
for (const file of extraFiles) {
|
|
56
|
+
hash.update(file);
|
|
57
|
+
hash.update((0, fs_1.readFileSync)(file));
|
|
58
|
+
}
|
|
59
|
+
watchedPaths.push(...config.hashExtraPaths);
|
|
60
|
+
}
|
|
61
|
+
// Hash build args (sorted keys for determinism)
|
|
62
|
+
if (config.buildArgs) {
|
|
63
|
+
const sorted = Object.entries(config.buildArgs).sort(([a], [b]) => a.localeCompare(b));
|
|
64
|
+
hash.update(JSON.stringify(sorted));
|
|
65
|
+
}
|
|
66
|
+
return {
|
|
67
|
+
hash: hash.digest("hex").slice(0, 12),
|
|
68
|
+
watchedPaths
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
exports.computeCustomImageHash = computeCustomImageHash;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hash.js","sourceRoot":"","sources":["../../../../../pipeline/src/customImages/hash.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import type { CatladderImageRef } from "../runner";
|
|
2
|
+
import type { Config, GitlabJobImage, PipelineType } from "../types";
|
|
3
|
+
import type { CatladderJob, CatladderJobNeed } from "../types/jobs";
|
|
4
|
+
export declare const GENERATED_IMAGES_FOLDER = ".catladder-generated/images";
|
|
5
|
+
export type JobImagesMode = "central" | "repo";
|
|
6
|
+
export declare const getJobImagesMode: (config: Config, pipelineType: PipelineType) => JobImagesMode;
|
|
7
|
+
export type ResolvedJobImage = {
|
|
8
|
+
/** the concrete image url */
|
|
9
|
+
image: string;
|
|
10
|
+
/** the dependency on the image build job (repo mode only) */
|
|
11
|
+
need?: CatladderJobNeed;
|
|
12
|
+
/** whether the image lives in the repository's own registry */
|
|
13
|
+
fromRepoRegistry?: boolean;
|
|
14
|
+
};
|
|
15
|
+
export type GeneratedImageFile = {
|
|
16
|
+
path: string;
|
|
17
|
+
content: string;
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* plans the catladder job images of one backend run: resolves image
|
|
21
|
+
* references, and (in repo mode) collects the image build jobs and the
|
|
22
|
+
* image definitions to materialize into the generated files.
|
|
23
|
+
*
|
|
24
|
+
* Reference-driven: only images actually used by a job are built.
|
|
25
|
+
*/
|
|
26
|
+
export declare class JobImagesPlan {
|
|
27
|
+
readonly mode: JobImagesMode;
|
|
28
|
+
private readonly pipelineType;
|
|
29
|
+
private used;
|
|
30
|
+
constructor(mode: JobImagesMode, pipelineType: PipelineType);
|
|
31
|
+
/**
|
|
32
|
+
* resolves a job image (marker or concrete) to a concrete image url
|
|
33
|
+
* plus the build job dependency in repo mode
|
|
34
|
+
*/
|
|
35
|
+
resolve(image: CatladderJob["image"]): {
|
|
36
|
+
image: GitlabJobImage | undefined;
|
|
37
|
+
need?: CatladderJobNeed;
|
|
38
|
+
fromRepoRegistry?: boolean;
|
|
39
|
+
};
|
|
40
|
+
resolveRef(ref: CatladderImageRef): ResolvedJobImage;
|
|
41
|
+
/**
|
|
42
|
+
* the registry image prefix. On github, container images can't use
|
|
43
|
+
* runtime env vars — the expression form is required.
|
|
44
|
+
*/
|
|
45
|
+
private registryImageRef;
|
|
46
|
+
private use;
|
|
47
|
+
/**
|
|
48
|
+
* the image build jobs for all used images (repo mode; empty in
|
|
49
|
+
* central mode)
|
|
50
|
+
*/
|
|
51
|
+
getEnsureJobs(): CatladderJob[];
|
|
52
|
+
private createEnsureJob;
|
|
53
|
+
/**
|
|
54
|
+
* the image definitions of all used images, materialized into the
|
|
55
|
+
* generated files (so pipelines build from committed, reviewable
|
|
56
|
+
* files and gitlab's rules:changes can watch them)
|
|
57
|
+
*/
|
|
58
|
+
getGeneratedFiles(): GeneratedImageFile[];
|
|
59
|
+
}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.JobImagesPlan = exports.getJobImagesMode = exports.GENERATED_IMAGES_FOLDER = void 0;
|
|
7
|
+
const fs_1 = require("fs");
|
|
8
|
+
const path_1 = require("path");
|
|
9
|
+
const ciVariables_1 = require("../bash/ciVariables");
|
|
10
|
+
const docker_1 = require("../build/docker");
|
|
11
|
+
const constants_1 = require("../constants");
|
|
12
|
+
const runner_1 = require("../runner");
|
|
13
|
+
const gitlab_1 = require("../utils/gitlab");
|
|
14
|
+
const hash_1 = require("./hash");
|
|
15
|
+
const shippedImages_1 = require("./shippedImages");
|
|
16
|
+
exports.GENERATED_IMAGES_FOLDER = ".catladder-generated/images";
|
|
17
|
+
/**
|
|
18
|
+
* the official docker cli image used to build the job images — NOT a
|
|
19
|
+
* catladder image, so building images never depends on one (bootstrap)
|
|
20
|
+
*/
|
|
21
|
+
const BUILDER_IMAGE = "docker.io/docker:29.5.1";
|
|
22
|
+
const getJobImagesMode = (config, pipelineType) => {
|
|
23
|
+
var _a;
|
|
24
|
+
// the central registry is not reachable from github runners
|
|
25
|
+
if (pipelineType === "github" && config.jobImages === "central") {
|
|
26
|
+
throw new Error(`jobImages: "central" is not supported on github: catladder's central registry (${constants_1.DOCKER_REGISTRY}) is unreachable from github runners. Use "repo" (the default) instead.`);
|
|
27
|
+
}
|
|
28
|
+
return (_a = config.jobImages) !== null && _a !== void 0 ? _a : pipelineType === "github" ? "repo" : "central";
|
|
29
|
+
};
|
|
30
|
+
exports.getJobImagesMode = getJobImagesMode;
|
|
31
|
+
const ensureJobName = name => `🐳 job image ${name}`;
|
|
32
|
+
/**
|
|
33
|
+
* plans the catladder job images of one backend run: resolves image
|
|
34
|
+
* references, and (in repo mode) collects the image build jobs and the
|
|
35
|
+
* image definitions to materialize into the generated files.
|
|
36
|
+
*
|
|
37
|
+
* Reference-driven: only images actually used by a job are built.
|
|
38
|
+
*/
|
|
39
|
+
class JobImagesPlan {
|
|
40
|
+
constructor(mode, pipelineType) {
|
|
41
|
+
this.mode = mode;
|
|
42
|
+
this.pipelineType = pipelineType;
|
|
43
|
+
this.used = new Map();
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* resolves a job image (marker or concrete) to a concrete image url
|
|
47
|
+
* plus the build job dependency in repo mode
|
|
48
|
+
*/
|
|
49
|
+
resolve(image) {
|
|
50
|
+
if (!(0, runner_1.isCatladderImageRef)(image)) {
|
|
51
|
+
return {
|
|
52
|
+
image
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
return this.resolveRef(image);
|
|
56
|
+
}
|
|
57
|
+
resolveRef(ref) {
|
|
58
|
+
const name = ref.catladderImage;
|
|
59
|
+
if (this.mode === "central" || shippedImages_1.CENTRAL_ONLY_IMAGES.has(name)) {
|
|
60
|
+
return {
|
|
61
|
+
image: (0, runner_1.getCentralRunnerImageUrl)(name)
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
const {
|
|
65
|
+
hash
|
|
66
|
+
} = this.use(name);
|
|
67
|
+
return {
|
|
68
|
+
image: `${this.registryImageRef()}/catladder/${name}:${hash}`,
|
|
69
|
+
fromRepoRegistry: true,
|
|
70
|
+
need: {
|
|
71
|
+
job: ensureJobName(name),
|
|
72
|
+
artifacts: false,
|
|
73
|
+
optional: true,
|
|
74
|
+
global: true
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* the registry image prefix. On github, container images can't use
|
|
80
|
+
* runtime env vars — the expression form is required.
|
|
81
|
+
*/
|
|
82
|
+
registryImageRef() {
|
|
83
|
+
return this.pipelineType === "github" ? "ghcr.io/${{ github.repository }}" : `${(0, ciVariables_1.getCiVariable)({
|
|
84
|
+
pipelineType: this.pipelineType
|
|
85
|
+
}, "registryImage")}`;
|
|
86
|
+
}
|
|
87
|
+
use(name) {
|
|
88
|
+
var _a;
|
|
89
|
+
const existing = this.used.get(name);
|
|
90
|
+
if (existing) {
|
|
91
|
+
return existing;
|
|
92
|
+
}
|
|
93
|
+
const dependencies = (_a = shippedImages_1.RUNNER_IMAGE_DEPENDENCIES[name]) !== null && _a !== void 0 ? _a : [];
|
|
94
|
+
// dependencies are materialized (and hashed) as part of this image,
|
|
95
|
+
// but also usable standalone
|
|
96
|
+
dependencies.forEach(dependency => this.use(dependency));
|
|
97
|
+
const {
|
|
98
|
+
hash
|
|
99
|
+
} = (0, hash_1.computeCustomImageHash)({
|
|
100
|
+
dir: (0, shippedImages_1.getShippedImageDir)(name),
|
|
101
|
+
extraDirs: dependencies.map(dependency => (0, shippedImages_1.getShippedImageDir)(dependency))
|
|
102
|
+
});
|
|
103
|
+
const entry = {
|
|
104
|
+
hash
|
|
105
|
+
};
|
|
106
|
+
this.used.set(name, entry);
|
|
107
|
+
return entry;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* the image build jobs for all used images (repo mode; empty in
|
|
111
|
+
* central mode)
|
|
112
|
+
*/
|
|
113
|
+
getEnsureJobs() {
|
|
114
|
+
return [...this.used.entries()].map(([name, {
|
|
115
|
+
hash
|
|
116
|
+
}]) => this.createEnsureJob(name, hash));
|
|
117
|
+
}
|
|
118
|
+
createEnsureJob(name, hash) {
|
|
119
|
+
var _a;
|
|
120
|
+
const ctx = {
|
|
121
|
+
pipelineType: this.pipelineType
|
|
122
|
+
};
|
|
123
|
+
const registryUser = (0, ciVariables_1.getCiVariable)(ctx, "registryUser");
|
|
124
|
+
const jobToken = (0, ciVariables_1.getCiVariable)(ctx, "jobToken");
|
|
125
|
+
const registry = (0, ciVariables_1.getCiVariable)(ctx, "registry");
|
|
126
|
+
const imageRef = `${this.registryImageRef()}/catladder/${name}:${hash}`;
|
|
127
|
+
const watchedDirs = [name, ...((_a = shippedImages_1.RUNNER_IMAGE_DEPENDENCIES[name]) !== null && _a !== void 0 ? _a : [])];
|
|
128
|
+
const {
|
|
129
|
+
services,
|
|
130
|
+
runnerVariables
|
|
131
|
+
} = (0, docker_1.getDockerJobBaseProps)();
|
|
132
|
+
return {
|
|
133
|
+
name: ensureJobName(name),
|
|
134
|
+
stage: "setup",
|
|
135
|
+
image: BUILDER_IMAGE,
|
|
136
|
+
services,
|
|
137
|
+
runnerVariables,
|
|
138
|
+
needs: [],
|
|
139
|
+
// gitlab: only run when the image definition changed; github has
|
|
140
|
+
// no equivalent and always runs (the existence check is fast)
|
|
141
|
+
rules: [{
|
|
142
|
+
changes: watchedDirs.map(dir => `${exports.GENERATED_IMAGES_FOLDER}/${dir}/**/*`)
|
|
143
|
+
}],
|
|
144
|
+
variables: {},
|
|
145
|
+
script: [...(0, gitlab_1.collapseableSection)("docker-login", "Docker Login")([`docker login --username ${registryUser} --password ${jobToken} ${registry}`]), ...(0, gitlab_1.collapseableSection)("check-image", "Checking if image exists")([`if docker manifest inspect ${imageRef} > /dev/null 2>&1; then`, ` echo "Image ${imageRef} already exists, skipping build"`, ` exit 0`, `fi`]), ...(0, gitlab_1.collapseableSection)("docker-build", "Building image")([`DOCKER_BUILDKIT=1 docker build -t ${imageRef} -f ${exports.GENERATED_IMAGES_FOLDER}/${name}/Dockerfile ${shippedImages_1.RUNNER_IMAGE_BUILD_CONTEXT[name] === "root" ? exports.GENERATED_IMAGES_FOLDER : `${exports.GENERATED_IMAGES_FOLDER}/${name}`}`]), ...(0, gitlab_1.collapseableSection)("docker-push", "Pushing image")([`docker push ${imageRef}`])]
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* the image definitions of all used images, materialized into the
|
|
150
|
+
* generated files (so pipelines build from committed, reviewable
|
|
151
|
+
* files and gitlab's rules:changes can watch them)
|
|
152
|
+
*/
|
|
153
|
+
getGeneratedFiles() {
|
|
154
|
+
return [...this.used.keys()].flatMap(name => {
|
|
155
|
+
const dir = (0, shippedImages_1.getShippedImageDir)(name);
|
|
156
|
+
return listFilesRecursive(dir).map(file => ({
|
|
157
|
+
path: (0, path_1.join)(exports.GENERATED_IMAGES_FOLDER, name, file),
|
|
158
|
+
content: (0, fs_1.readFileSync)((0, path_1.join)(dir, file), "utf-8")
|
|
159
|
+
}));
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
exports.JobImagesPlan = JobImagesPlan;
|
|
164
|
+
const IGNORED_FILES = new Set([".DS_Store", "Thumbs.db"]);
|
|
165
|
+
const listFilesRecursive = dir => (0, fs_1.readdirSync)(dir, {
|
|
166
|
+
recursive: true,
|
|
167
|
+
encoding: "utf-8"
|
|
168
|
+
}).filter(entry => {
|
|
169
|
+
var _a;
|
|
170
|
+
// OS junk files exist locally but not in CI checkouts
|
|
171
|
+
return !IGNORED_FILES.has((_a = entry.split("/").pop()) !== null && _a !== void 0 ? _a : "") && (0, fs_1.statSync)((0, path_1.join)(dir, entry)).isFile();
|
|
172
|
+
}).sort();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jobImagesPlan.js","sourceRoot":"","sources":["../../../../../pipeline/src/customImages/jobImagesPlan.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { RunnerImageName } from "../runner";
|
|
2
|
+
/**
|
|
3
|
+
* images whose Dockerfile INCLUDEs another image's Dockerfile
|
|
4
|
+
* (dockerfile-x/dockerfile-plus, resolved against the images root as
|
|
5
|
+
* build context)
|
|
6
|
+
*/
|
|
7
|
+
export declare const RUNNER_IMAGE_DEPENDENCIES: Partial<Record<RunnerImageName, RunnerImageName[]>>;
|
|
8
|
+
/**
|
|
9
|
+
* the docker build context of each image, mirroring the central image
|
|
10
|
+
* builds: the jobs family builds from the images root (their
|
|
11
|
+
* Dockerfiles INCLUDE sibling images), the others from their own dir
|
|
12
|
+
* (their COPY paths are relative to it)
|
|
13
|
+
*/
|
|
14
|
+
/**
|
|
15
|
+
* images that cannot be built from the shipped definitions and always
|
|
16
|
+
* come from the central registry: semantic-release bakes catladder's
|
|
17
|
+
* own cli sources into the image (repo-root build context).
|
|
18
|
+
* TODO: make the semantic-release image self-contained.
|
|
19
|
+
*/
|
|
20
|
+
export declare const CENTRAL_ONLY_IMAGES: ReadonlySet<RunnerImageName>;
|
|
21
|
+
export declare const RUNNER_IMAGE_BUILD_CONTEXT: Record<RunnerImageName, "root" | "self">;
|
|
22
|
+
/**
|
|
23
|
+
* the directory containing the image definitions shipped with the
|
|
24
|
+
* package (copied into dist at build time; the repository layout is
|
|
25
|
+
* the fallback for development and tests)
|
|
26
|
+
*/
|
|
27
|
+
export declare const getShippedImagesDir: () => string;
|
|
28
|
+
export declare const getShippedImageDir: (name: RunnerImageName) => string;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getShippedImageDir = exports.getShippedImagesDir = exports.RUNNER_IMAGE_BUILD_CONTEXT = exports.CENTRAL_ONLY_IMAGES = exports.RUNNER_IMAGE_DEPENDENCIES = void 0;
|
|
7
|
+
const fs_1 = require("fs");
|
|
8
|
+
const path_1 = require("path");
|
|
9
|
+
/**
|
|
10
|
+
* images whose Dockerfile INCLUDEs another image's Dockerfile
|
|
11
|
+
* (dockerfile-x/dockerfile-plus, resolved against the images root as
|
|
12
|
+
* build context)
|
|
13
|
+
*/
|
|
14
|
+
exports.RUNNER_IMAGE_DEPENDENCIES = {
|
|
15
|
+
"jobs-meteor": ["jobs-default"],
|
|
16
|
+
"jobs-testing-chrome": ["jobs-default"]
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* the docker build context of each image, mirroring the central image
|
|
20
|
+
* builds: the jobs family builds from the images root (their
|
|
21
|
+
* Dockerfiles INCLUDE sibling images), the others from their own dir
|
|
22
|
+
* (their COPY paths are relative to it)
|
|
23
|
+
*/
|
|
24
|
+
/**
|
|
25
|
+
* images that cannot be built from the shipped definitions and always
|
|
26
|
+
* come from the central registry: semantic-release bakes catladder's
|
|
27
|
+
* own cli sources into the image (repo-root build context).
|
|
28
|
+
* TODO: make the semantic-release image self-contained.
|
|
29
|
+
*/
|
|
30
|
+
exports.CENTRAL_ONLY_IMAGES = new Set(["semantic-release"]);
|
|
31
|
+
exports.RUNNER_IMAGE_BUILD_CONTEXT = {
|
|
32
|
+
"jobs-default": "root",
|
|
33
|
+
"jobs-meteor": "root",
|
|
34
|
+
"jobs-testing-chrome": "root",
|
|
35
|
+
kubernetes: "self",
|
|
36
|
+
"docker-build": "self",
|
|
37
|
+
gcloud: "self",
|
|
38
|
+
"semantic-release": "self",
|
|
39
|
+
"agent-claude": "self"
|
|
40
|
+
};
|
|
41
|
+
/**
|
|
42
|
+
* the directory containing the image definitions shipped with the
|
|
43
|
+
* package (copied into dist at build time; the repository layout is
|
|
44
|
+
* the fallback for development and tests)
|
|
45
|
+
*/
|
|
46
|
+
const getShippedImagesDir = () => {
|
|
47
|
+
const candidates = [
|
|
48
|
+
// built package: dist/customImages -> dist/runner-images
|
|
49
|
+
(0, path_1.join)(__dirname, "..", "runner-images"),
|
|
50
|
+
// repository: pipeline/src/customImages -> <root>/runner-images
|
|
51
|
+
(0, path_1.join)(__dirname, "..", "..", "..", "runner-images")];
|
|
52
|
+
const found = candidates.find(candidate => (0, fs_1.existsSync)(candidate));
|
|
53
|
+
if (!found) {
|
|
54
|
+
throw new Error("shipped job image definitions not found");
|
|
55
|
+
}
|
|
56
|
+
return found;
|
|
57
|
+
};
|
|
58
|
+
exports.getShippedImagesDir = getShippedImagesDir;
|
|
59
|
+
const getShippedImageDir = name => (0, path_1.join)((0, exports.getShippedImagesDir)(), name);
|
|
60
|
+
exports.getShippedImageDir = getShippedImageDir;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shippedImages.js","sourceRoot":"","sources":["../../../../../pipeline/src/customImages/shippedImages.ts"],"names":[],"mappings":";;;AAAA,2BAAgC;AAChC,+BAA4B;AAG5B;;;;GAIG;AACU,QAAA,yBAAyB,GAElC;IACF,aAAa,EAAE,CAAC,cAAc,CAAC;IAC/B,qBAAqB,EAAE,CAAC,cAAc,CAAC;CACxC,CAAC;AAEF;;;;;GAKG;AACH;;;;;GAKG;AACU,QAAA,mBAAmB,GAAiC,IAAI,GAAG,CAAC;IACvE,kBAAkB;CACnB,CAAC,CAAC;AAEU,QAAA,0BAA0B,GAGnC;IACF,cAAc,EAAE,MAAM;IACtB,aAAa,EAAE,MAAM;IACrB,qBAAqB,EAAE,MAAM;IAC7B,UAAU,EAAE,MAAM;IAClB,cAAc,EAAE,MAAM;IACtB,MAAM,EAAE,MAAM;IACd,kBAAkB,EAAE,MAAM;IAC1B,cAAc,EAAE,MAAM;CACvB,CAAC;AAEF;;;;GAIG;AACI,MAAM,mBAAmB,GAAG,GAAW,EAAE;IAC9C,MAAM,UAAU,GAAG;QACjB,yDAAyD;QACzD,IAAA,WAAI,EAAC,SAAS,EAAE,IAAI,EAAE,eAAe,CAAC;QACtC,gEAAgE;QAChE,IAAA,WAAI,EAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,eAAe,CAAC;KACnD,CAAC;IACF,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,IAAA,eAAU,EAAC,SAAS,CAAC,CAAC,CAAC;IACpE,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAZW,QAAA,mBAAmB,uBAY9B;AAEK,MAAM,kBAAkB,GAAG,CAAC,IAAqB,EAAU,EAAE,CAClE,IAAA,WAAI,EAAC,IAAA,2BAAmB,GAAE,EAAE,IAAI,CAAC,CAAC;AADvB,QAAA,kBAAkB,sBACK"}
|