@payfit/nx-core 5.3.1-ephemeral-frontend-path-annotation.2 → 5.3.1-ephemeral-knutfr-patch-1.1
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/src/executors/docker-build/executor.js +6 -3
- package/dist/src/executors/docker-build/executor.js.map +1 -1
- package/dist/src/executors/publisher/frontend.js +1 -1
- package/dist/src/executors/publisher/frontend.js.map +1 -1
- package/dist/src/executors/publisher/lambda.js +1 -3
- package/dist/src/executors/publisher/lambda.js.map +1 -1
- package/dist/src/scripts/nx-core-updater.js +1 -0
- package/dist/src/utils/common/oci.d.ts +2 -10
- package/dist/src/utils/common/oci.js +6 -22
- package/dist/src/utils/common/oci.js.map +1 -1
- package/dist/src/utils/docker.d.ts +2 -1
- package/dist/src/utils/docker.js +5 -4
- package/dist/src/utils/docker.js.map +1 -1
- package/package.json +1 -1
|
@@ -8,6 +8,7 @@ const docker_1 = require("../../utils/docker");
|
|
|
8
8
|
const runExecutor = async (options, context) => {
|
|
9
9
|
const projectRoot = context.projectGraph.nodes[context.projectName].data.root;
|
|
10
10
|
const projectDockerfile = `${projectRoot}/Dockerfile`;
|
|
11
|
+
const isCI = process.env.CI === 'true';
|
|
11
12
|
if (!fs.existsSync(projectDockerfile)) {
|
|
12
13
|
logger_1.consola.warn(`Dockerfile not found at ${projectDockerfile}, skipping`);
|
|
13
14
|
return { success: true };
|
|
@@ -29,10 +30,12 @@ const runExecutor = async (options, context) => {
|
|
|
29
30
|
logger_1.consola.box(`Would have published docker image located at ${projectDockerfile} to registry ${options.ecrRepository} with tag ${tag} but --dry-run is enabled`);
|
|
30
31
|
return { success: true };
|
|
31
32
|
}
|
|
32
|
-
|
|
33
|
+
if (isCI) {
|
|
34
|
+
await (0, ecr_1.ensureEcrAuth)(registry.name, options.isPublicRepository);
|
|
35
|
+
}
|
|
33
36
|
// Build ephemeral sha tag (immutable)
|
|
34
|
-
logger_1.consola.box(
|
|
35
|
-
await (0, docker_1.buildAndPushDockerImage)(options.ecrRepository, projectDockerfile, tag, sanitizedRepoUrl, commitSha, registry.url, [], context.projectName, options.buildArgs);
|
|
37
|
+
logger_1.consola.box(`${isCI ? 'Building and pushing ephemeral' : 'Building locally'} image to ${isCI ? registry.url + '/' : ''}${options.ecrRepository}:${tag}`);
|
|
38
|
+
await (0, docker_1.buildAndPushDockerImage)(options.ecrRepository, projectDockerfile, tag, sanitizedRepoUrl, commitSha, registry.url, [], context.projectName, options.buildArgs, isCI);
|
|
36
39
|
return { success: true };
|
|
37
40
|
};
|
|
38
41
|
exports.default = runExecutor;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../../src/executors/docker-build/executor.ts"],"names":[],"mappings":";;AAAA,8BAA6B;AAI7B,gDAI+B;AAC/B,sDAGkC;AAClC,sDAAmD;AACnD,+CAA4D;AAG5D,MAAM,WAAW,GAGyB,KAAK,EAC7C,OAAmC,EACnC,OAAwB,EACxB,EAAE;IACF,MAAM,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAA;IAC7E,MAAM,iBAAiB,GAAG,GAAG,WAAW,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../../src/executors/docker-build/executor.ts"],"names":[],"mappings":";;AAAA,8BAA6B;AAI7B,gDAI+B;AAC/B,sDAGkC;AAClC,sDAAmD;AACnD,+CAA4D;AAG5D,MAAM,WAAW,GAGyB,KAAK,EAC7C,OAAmC,EACnC,OAAwB,EACxB,EAAE;IACF,MAAM,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAA;IAC7E,MAAM,iBAAiB,GAAG,GAAG,WAAW,aAAa,CAAA;IACrD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,KAAK,MAAM,CAAA;IAEtC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACtC,gBAAO,CAAC,IAAI,CAAC,2BAA2B,iBAAiB,YAAY,CAAC,CAAA;QACtE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;IAC1B,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;QAC3B,gBAAO,CAAC,KAAK,CACX,qGAAqG,CACtG,CAAA;QACD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;IAC3B,CAAC;IAED,MAAM,QAAQ,GAAgB;QAC5B,GAAG,EAAE,OAAO,CAAC,kBAAkB;YAC7B,CAAC,CAAC,uBAAuB;YACzB,CAAC,CAAC,IAAA,uBAAiB,GAAE;QACvB,IAAI,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAA,uBAAiB,GAAE;KAC1E,CAAA;IAED,MAAM,SAAS,GAAG,MAAM,IAAA,+BAAsB,GAAE,CAAA;IAChD,MAAM,gBAAgB,GAAG,MAAM,IAAA,sCAA6B,GAAE,CAAA;IAC9D,MAAM,GAAG,GAAG,iBAAiB,SAAS,EAAE,CAAA;IAExC,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,gBAAO,CAAC,GAAG,CACT,gDAAgD,iBAAiB,gBAAgB,OAAO,CAAC,aAAa,aAAa,GAAG,2BAA2B,CAClJ,CAAA;QACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;IAC1B,CAAC;IAED,IAAI,IAAI,EAAE,CAAC;QACT,MAAM,IAAA,mBAAa,EAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAA;IAChE,CAAC;IAED,sCAAsC;IACtC,gBAAO,CAAC,GAAG,CACT,GAAG,IAAI,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,kBAAkB,aAAa,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,aAAa,IAAI,GAAG,EAAE,CAC5I,CAAA;IAED,MAAM,IAAA,gCAAuB,EAC3B,OAAO,CAAC,aAAa,EACrB,iBAAiB,EACjB,GAAG,EACH,gBAAgB,EAChB,SAAS,EACT,QAAQ,CAAC,GAAG,EACZ,EAAE,EACF,OAAO,CAAC,WAAW,EACnB,OAAO,CAAC,SAAS,EACjB,IAAI,CACL,CAAA;IAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;AAC1B,CAAC,CAAA;AAED,kBAAe,WAAW,CAAA"}
|
|
@@ -43,7 +43,7 @@ async function publishFrontend(options, context, version, projectRoot, projectDi
|
|
|
43
43
|
const packageJsonPath = (0, path_1.join)(absoluteProjectRoot, 'package.json');
|
|
44
44
|
logger_1.consola.log(`Pushing empty image to ECR ${(0, ecr_1.getAwsEcrRegistry)()}/${ociRepository}:${version}`);
|
|
45
45
|
await (0, aws_auth_1.loginToEcr)((0, ecr_1.getAwsEcrRegistry)());
|
|
46
|
-
await (0, oci_1.pushImageToEcr)(ociRepository, version, packageJsonPath, enums_1.ArtifactType.FRONTEND, (0, ecr_1.getAwsEcrRegistry)()
|
|
46
|
+
await (0, oci_1.pushImageToEcr)(ociRepository, version, packageJsonPath, enums_1.ArtifactType.FRONTEND, (0, ecr_1.getAwsEcrRegistry)());
|
|
47
47
|
logger_1.consola.success('Empty image pushed to ECR successfully!');
|
|
48
48
|
}
|
|
49
49
|
//# sourceMappingURL=frontend.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frontend.js","sourceRoot":"","sources":["../../../../src/executors/publisher/frontend.ts"],"names":[],"mappings":";;AAiBA,
|
|
1
|
+
{"version":3,"file":"frontend.js","sourceRoot":"","sources":["../../../../src/executors/publisher/frontend.ts"],"names":[],"mappings":";;AAiBA,0CAwEC;AAzFD,+BAAqC;AAErC,uCAA2D;AAC3D,iDAA+C;AAE/C,0DAAsE;AACtE,gDAA0D;AAC1D,oDAAuD;AACvD,sDAAmD;AACnD,gDAAuD;AACvD,gDAAkD;AAClD,wEAG4C;AAGrC,KAAK,UAAU,eAAe,CACnC,OAAiC,EACjC,OAAwB,EACxB,OAAe,EACf,WAAmB,EACnB,WAAmB,EACnB,QAAiB;IAEjB,MAAM,2BAA2B,GAAG,OAAO,CAAC,2BAA2B,CAAA;IACvE,MAAM,yBAAyB,GAAG,OAAO,CAAC,yBAAyB,IAAI,EAAE,CAAA;IACzE,MAAM,2BAA2B,GAAG,OAAO,CAAC,2BAA2B,IAAI,EAAE,CAAA;IAC7E,MAAM,WAAW,GAAG,IAAI,aAAM,CAAC,sBAAa,EAAE,KAAK,CAAC,CAAA;IACpD,MAAM,YAAY,GAAG,QAAQ,2BAA2B,IAAI,OAAO,EAAE,CAAA;IACrE,mHAAmH;IACnH,MAAM,mBAAmB,GAAG,IAAA,eAAQ,EAAC,sBAAa,EAAE,WAAW,CAAC,CAAA;IAChE,mHAAmH;IACnH,MAAM,mBAAmB,GAAG,IAAA,WAAI,EAAC,sBAAa,EAAE,WAAW,CAAC,CAAA;IAC5D,MAAM,aAAa,GAAG,OAAO,CAAC,qBAAqB,IAAI,OAAO,CAAC,WAAW,CAAA;IAE1E,iDAAiD;IACjD,MAAM,iBAAiB,GAAG,CAAC,GAAG,yBAAyB,EAAE,cAAc,CAAC,CAAA;IAExE,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACjC,gBAAO,CAAC,IAAI,CACV,yCAAyC,OAAO,CAAC,WAAW,sBAAsB,CACnF,CAAA;QACD,OAAM;IACR,CAAC;IAED,WAAW,CAAC,MAAM,CAAC,mBAAmB,GAAG,eAAe,CAAC,CAAA;IACzD,MAAM,IAAA,gDAA+B,EACnC,mBAAmB,EACnB,WAAW,EACX,OAAO,CACR,CAAA;IACD,MAAM,IAAA,iCAAgB,EAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;IAE7C,IAAI,QAAQ,EAAE,CAAC;QACb,gBAAO,CAAC,GAAG,CACT,mDAAmD,WAAW,iBAAiB,2BAA2B,IAAI,OAAO,iBAAiB,OAAO,2BAA2B,CACzK,CAAA;QACD,OAAM;IACR,CAAC;IAED,MAAM,IAAA,uBAAY,GAAE,CAAA;IAEpB,gBAAO,CAAC,GAAG,CACT,2CAA2C,2BAA2B,IAAI,OAAO,iBAAiB,OAAO,EAAE,CAC5G,CAAA;IAED,gBAAO,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAA;IAC1C,MAAM,IAAA,aAAQ,EACZ,mBAAmB,EACnB,YAAY,EACZ,iBAAiB,EACjB,2BAA2B,EAC3B,mCAAmC,CACpC,CAAA;IACD,gBAAO,CAAC,OAAO,CAAC,qCAAqC,CAAC,CAAA;IACtD,MAAM,eAAe,GAAG,IAAA,WAAI,EAAC,mBAAmB,EAAE,cAAc,CAAC,CAAA;IACjE,gBAAO,CAAC,GAAG,CACT,8BAA8B,IAAA,uBAAiB,GAAE,IAAI,aAAa,IAAI,OAAO,EAAE,CAChF,CAAA;IACD,MAAM,IAAA,qBAAU,EAAC,IAAA,uBAAiB,GAAE,CAAC,CAAA;IACrC,MAAM,IAAA,oBAAc,EAClB,aAAa,EACb,OAAO,EACP,eAAe,EACf,oBAAY,CAAC,QAAQ,EACrB,IAAA,uBAAiB,GAAE,CACpB,CAAA;IACD,gBAAO,CAAC,OAAO,CAAC,yCAAyC,CAAC,CAAA;AAC5D,CAAC"}
|
|
@@ -63,7 +63,6 @@ async function publishLambda(options, context, version, projectRoot, projectDist
|
|
|
63
63
|
logger_1.consola.box(`Would have published lambda function version ${version} for project ${context.projectName} but --dry-run is enabled`);
|
|
64
64
|
return;
|
|
65
65
|
}
|
|
66
|
-
let artifactPath = 'None';
|
|
67
66
|
if (!options.artifactTypes.includes(enums_1.ArtifactType.DOCKER)) {
|
|
68
67
|
await (0, aws_auth_1.checkAwsAuth)();
|
|
69
68
|
logger_1.consola.box(`Publishing the lambda artefact ${zipFileNameS3}`);
|
|
@@ -72,7 +71,6 @@ async function publishLambda(options, context, version, projectRoot, projectDist
|
|
|
72
71
|
const zipPath = (0, path_1.join)(projectDist, zipName);
|
|
73
72
|
logger_1.consola.info(`Uploading ${zipPath} to S3 at ${zipFileNameS3}`);
|
|
74
73
|
await (0, s3_1.pushToS3)(zipPath, zipFileNameS3);
|
|
75
|
-
artifactPath = 's3://' + zipFileNameS3;
|
|
76
74
|
logger_1.consola.success(`Lambda artefact successfully pushed to S3 at ${zipFileNameS3}`);
|
|
77
75
|
}
|
|
78
76
|
// When we create the spacelift stack, we also run the smoke tests so we should not publish to ECR if the tests fails
|
|
@@ -81,7 +79,7 @@ async function publishLambda(options, context, version, projectRoot, projectDist
|
|
|
81
79
|
const packageJsonPath = (0, path_1.join)(projectDist, 'package.json');
|
|
82
80
|
logger_1.consola.info(`Pushing OCI Artifact to ECR ${(0, ecr_1.getAwsEcrRegistry)()}/${options.lambdaOciRepository}:${version}`);
|
|
83
81
|
await (0, aws_auth_1.loginToEcr)((0, ecr_1.getAwsEcrRegistry)());
|
|
84
|
-
await (0, oci_1.pushImageToEcr)(options.lambdaOciRepository, version, packageJsonPath, enums_1.ArtifactType.LAMBDA, (0, ecr_1.getAwsEcrRegistry)()
|
|
82
|
+
await (0, oci_1.pushImageToEcr)(options.lambdaOciRepository, version, packageJsonPath, enums_1.ArtifactType.LAMBDA, (0, ecr_1.getAwsEcrRegistry)());
|
|
85
83
|
logger_1.consola.success(`Lambda version ${version} successfully created and smoke tests passed, your lambda is ready to be promoted in Kargo !`);
|
|
86
84
|
}
|
|
87
85
|
//# sourceMappingURL=lambda.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lambda.js","sourceRoot":"","sources":["../../../../src/executors/publisher/lambda.ts"],"names":[],"mappings":";;AAkCA,
|
|
1
|
+
{"version":3,"file":"lambda.js","sourceRoot":"","sources":["../../../../src/executors/publisher/lambda.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,23 +7,15 @@ import { ArtifactType } from './enums';
|
|
|
7
7
|
* @param artifactPath - Path to artifact to package
|
|
8
8
|
* @param type - Artifact type
|
|
9
9
|
* @param ecrRegistry - ECR registry
|
|
10
|
-
* @param remoteArtifactPath - Remote path to artifact (s3 for Frontend and lambda)
|
|
11
10
|
*/
|
|
12
|
-
export declare function pushImageToEcr(ecrRepository: string, tag: string, artifactPath: string, type: ArtifactType.LAMBDA | ArtifactType.FRONTEND, ecrRegistry: string
|
|
13
|
-
/**
|
|
14
|
-
* Get annotations to add to the OCI push command
|
|
15
|
-
* @param gitRepoUrl
|
|
16
|
-
* @param commitSha
|
|
17
|
-
* @param remoteArtifactPath
|
|
18
|
-
* @param type
|
|
19
|
-
*/
|
|
20
|
-
export declare function getOciAnnotations(gitRepoUrl: string, commitSha: string, type: ArtifactType, remoteArtifactPath?: string): string[];
|
|
11
|
+
export declare function pushImageToEcr(ecrRepository: string, tag: string, artifactPath: string, type: ArtifactType.LAMBDA | ArtifactType.FRONTEND, ecrRegistry: string): Promise<void>;
|
|
21
12
|
/**
|
|
22
13
|
* Pushes helm chart as OCI artifact to ECR using ORAS.
|
|
23
14
|
*
|
|
24
15
|
* @param ecrRepository - ECR repository name
|
|
25
16
|
* @param tag - Version tag for the artifact
|
|
26
17
|
* @param artifactPath - Path to artifact to package
|
|
18
|
+
* @param type - Artifact type
|
|
27
19
|
* @param ecrRegistry - ECR registry
|
|
28
20
|
* @param chartConfigPath - Path to chart config file in JSON format
|
|
29
21
|
*/
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.pushImageToEcr = pushImageToEcr;
|
|
4
|
-
exports.getOciAnnotations = getOciAnnotations;
|
|
5
4
|
exports.pushHelmOciToEcr = pushHelmOciToEcr;
|
|
6
5
|
const consola_1 = require("consola");
|
|
7
|
-
const enums_1 = require("./enums");
|
|
8
6
|
const exec_1 = require("./exec");
|
|
9
7
|
const github_1 = require("./github");
|
|
10
8
|
/**
|
|
@@ -15,16 +13,16 @@ const github_1 = require("./github");
|
|
|
15
13
|
* @param artifactPath - Path to artifact to package
|
|
16
14
|
* @param type - Artifact type
|
|
17
15
|
* @param ecrRegistry - ECR registry
|
|
18
|
-
* @param remoteArtifactPath - Remote path to artifact (s3 for Frontend and lambda)
|
|
19
16
|
*/
|
|
20
|
-
async function pushImageToEcr(ecrRepository, tag, artifactPath, type, ecrRegistry
|
|
17
|
+
async function pushImageToEcr(ecrRepository, tag, artifactPath, type, ecrRegistry) {
|
|
21
18
|
consola_1.consola.log(`OCI: Pushing image to ECR: ${ecrRegistry}/${ecrRepository}:${tag}`);
|
|
22
19
|
const commitSha = await (0, github_1.getCurrentGitCommitSha)();
|
|
23
20
|
const gitRepoUrl = await (0, github_1.getSanitizedCurrentGitRepoUrl)();
|
|
24
21
|
const artifactType = `application/vnd.payfit.${type}.manifest`;
|
|
25
22
|
const orasPushCommand = [
|
|
26
23
|
`oras push ${ecrRegistry}/${ecrRepository}:${tag}`,
|
|
27
|
-
|
|
24
|
+
`--annotation "org.opencontainers.image.source=${gitRepoUrl}"`,
|
|
25
|
+
`--annotation "org.opencontainers.image.revision=${commitSha}"`,
|
|
28
26
|
`--disable-path-validation`,
|
|
29
27
|
`--artifact-type ${artifactType} ${artifactPath}`,
|
|
30
28
|
].join(' ');
|
|
@@ -33,28 +31,13 @@ async function pushImageToEcr(ecrRepository, tag, artifactPath, type, ecrRegistr
|
|
|
33
31
|
});
|
|
34
32
|
consola_1.consola.log(uploadToOci.stdout);
|
|
35
33
|
}
|
|
36
|
-
/**
|
|
37
|
-
* Get annotations to add to the OCI push command
|
|
38
|
-
* @param gitRepoUrl
|
|
39
|
-
* @param commitSha
|
|
40
|
-
* @param remoteArtifactPath
|
|
41
|
-
* @param type
|
|
42
|
-
*/
|
|
43
|
-
function getOciAnnotations(gitRepoUrl, commitSha, type, remoteArtifactPath = 'None') {
|
|
44
|
-
const annotations = [
|
|
45
|
-
`--annotation "org.opencontainers.image.source=${gitRepoUrl}"`,
|
|
46
|
-
`--annotation "org.opencontainers.image.revision=${commitSha}"`,
|
|
47
|
-
];
|
|
48
|
-
if (type === enums_1.ArtifactType.LAMBDA || type === enums_1.ArtifactType.FRONTEND)
|
|
49
|
-
annotations.push(`--annotation "payfit.net.artifact=${remoteArtifactPath}"`);
|
|
50
|
-
return annotations;
|
|
51
|
-
}
|
|
52
34
|
/**
|
|
53
35
|
* Pushes helm chart as OCI artifact to ECR using ORAS.
|
|
54
36
|
*
|
|
55
37
|
* @param ecrRepository - ECR repository name
|
|
56
38
|
* @param tag - Version tag for the artifact
|
|
57
39
|
* @param artifactPath - Path to artifact to package
|
|
40
|
+
* @param type - Artifact type
|
|
58
41
|
* @param ecrRegistry - ECR registry
|
|
59
42
|
* @param chartConfigPath - Path to chart config file in JSON format
|
|
60
43
|
*/
|
|
@@ -64,7 +47,8 @@ async function pushHelmOciToEcr(ecrRepository, tag, artifactPath, ecrRegistry, c
|
|
|
64
47
|
const gitRepoUrl = await (0, github_1.getSanitizedCurrentGitRepoUrl)();
|
|
65
48
|
const orasPushCommand = [
|
|
66
49
|
`oras push ${ecrRegistry}/${ecrRepository}:${tag}`,
|
|
67
|
-
|
|
50
|
+
`--annotation "org.opencontainers.image.source=${gitRepoUrl}"`,
|
|
51
|
+
`--annotation "org.opencontainers.image.revision=${commitSha}"`,
|
|
68
52
|
`--disable-path-validation`,
|
|
69
53
|
`--config ${chartConfigPath}:application/vnd.cncf.helm.config.v1+json`,
|
|
70
54
|
`${artifactPath}:application/vnd.cncf.helm.chart.content.v1.tar+gzip`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oci.js","sourceRoot":"","sources":["../../../../src/utils/common/oci.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"oci.js","sourceRoot":"","sources":["../../../../src/utils/common/oci.ts"],"names":[],"mappings":";;AAeA,wCAwBC;AAYD,4CAwBC;AA3ED,qCAAiC;AAGjC,iCAA6B;AAC7B,qCAAgF;AAEhF;;;;;;;;GAQG;AACI,KAAK,UAAU,cAAc,CAClC,aAAqB,EACrB,GAAW,EACX,YAAoB,EACpB,IAAiD,EACjD,WAAmB;IAEnB,iBAAO,CAAC,GAAG,CACT,8BAA8B,WAAW,IAAI,aAAa,IAAI,GAAG,EAAE,CACpE,CAAA;IACD,MAAM,SAAS,GAAG,MAAM,IAAA,+BAAsB,GAAE,CAAA;IAChD,MAAM,UAAU,GAAG,MAAM,IAAA,sCAA6B,GAAE,CAAA;IACxD,MAAM,YAAY,GAAG,0BAA0B,IAAI,WAAW,CAAA;IAC9D,MAAM,eAAe,GAAG;QACtB,aAAa,WAAW,IAAI,aAAa,IAAI,GAAG,EAAE;QAClD,iDAAiD,UAAU,GAAG;QAC9D,mDAAmD,SAAS,GAAG;QAC/D,2BAA2B;QAC3B,mBAAmB,YAAY,IAAI,YAAY,EAAE;KAClD,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACX,MAAM,WAAW,GAAG,MAAM,IAAA,WAAI,EAAC,eAAe,EAAE;QAC9C,YAAY,EAAE,IAAI;KACnB,CAAC,CAAA;IACF,iBAAO,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;AACjC,CAAC;AAED;;;;;;;;;GASG;AACI,KAAK,UAAU,gBAAgB,CACpC,aAAqB,EACrB,GAAW,EACX,YAAoB,EACpB,WAAmB,EACnB,eAAuB;IAEvB,iBAAO,CAAC,GAAG,CACT,8BAA8B,WAAW,IAAI,aAAa,IAAI,GAAG,EAAE,CACpE,CAAA;IACD,MAAM,SAAS,GAAG,MAAM,IAAA,+BAAsB,GAAE,CAAA;IAChD,MAAM,UAAU,GAAG,MAAM,IAAA,sCAA6B,GAAE,CAAA;IACxD,MAAM,eAAe,GAAG;QACtB,aAAa,WAAW,IAAI,aAAa,IAAI,GAAG,EAAE;QAClD,iDAAiD,UAAU,GAAG;QAC9D,mDAAmD,SAAS,GAAG;QAC/D,2BAA2B;QAC3B,YAAY,eAAe,2CAA2C;QACtE,GAAG,YAAY,sDAAsD;KACtE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACX,MAAM,WAAW,GAAG,MAAM,IAAA,WAAI,EAAC,eAAe,EAAE;QAC9C,YAAY,EAAE,IAAI;KACnB,CAAC,CAAA;IACF,iBAAO,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;AACjC,CAAC"}
|
|
@@ -11,6 +11,7 @@ import { Result } from 'tinyexec';
|
|
|
11
11
|
* @param extraTags - Optional additional tags for the image
|
|
12
12
|
* @param appName
|
|
13
13
|
* @param buildArgs - Optional build arguments for the Docker build
|
|
14
|
+
* @param isCI - Are we running this in a CI context, enabling caching & pushing. Default to true as we only need it within the docker-build executor
|
|
14
15
|
* @return {Promise<Result>}
|
|
15
16
|
*/
|
|
16
|
-
export declare function buildAndPushDockerImage(imageName: string, dockerfilePath: string, version: string, gitRepoUrl: string, commitSha: string, registry: string, extraTags: string[], appName: string, buildArgs?: string): Promise<Result>;
|
|
17
|
+
export declare function buildAndPushDockerImage(imageName: string, dockerfilePath: string, version: string, gitRepoUrl: string, commitSha: string, registry: string, extraTags: string[], appName: string, buildArgs?: string, isCI?: boolean): Promise<Result>;
|
package/dist/src/utils/docker.js
CHANGED
|
@@ -45,19 +45,20 @@ async function setupDockerBuilder(appName) {
|
|
|
45
45
|
* @param extraTags - Optional additional tags for the image
|
|
46
46
|
* @param appName
|
|
47
47
|
* @param buildArgs - Optional build arguments for the Docker build
|
|
48
|
+
* @param isCI - Are we running this in a CI context, enabling caching & pushing. Default to true as we only need it within the docker-build executor
|
|
48
49
|
* @return {Promise<Result>}
|
|
49
50
|
*/
|
|
50
|
-
async function buildAndPushDockerImage(imageName, dockerfilePath, version, gitRepoUrl, commitSha, registry, extraTags = [], appName, buildArgs = undefined) {
|
|
51
|
+
async function buildAndPushDockerImage(imageName, dockerfilePath, version, gitRepoUrl, commitSha, registry, extraTags = [], appName, buildArgs = undefined, isCI = true) {
|
|
51
52
|
appName = appName.replaceAll('@', '-').replaceAll('/', '-');
|
|
52
53
|
const buildContextName = await setupDockerBuilder(appName);
|
|
53
54
|
// Build all tags including base version and extra tags
|
|
54
55
|
const tagArgs = [`${version}`, ...extraTags]
|
|
55
|
-
.map(tag => `-t ${registry}/${imageName}:${tag}`)
|
|
56
|
+
.map(tag => isCI ? `-t ${registry}/${imageName}:${tag}` : `-t ${imageName}:${tag}`)
|
|
56
57
|
.join(' ');
|
|
57
58
|
// Setup registry cache (skip for public ECR which doesn't support BuildKit cache backend)
|
|
58
59
|
const isPublicEcr = registry.includes('public.ecr.aws');
|
|
59
60
|
const cacheArgParts = [];
|
|
60
|
-
if (!isPublicEcr) {
|
|
61
|
+
if (!isPublicEcr && isCI) {
|
|
61
62
|
const branch = await (0, github_1.getSanitizedCurrentGitBranch)();
|
|
62
63
|
const branchCacheRef = `${registry}/${imageName}:cache-build-${branch}`;
|
|
63
64
|
const mainCacheRef = `${registry}/${imageName}:cache-build-main`;
|
|
@@ -84,7 +85,7 @@ async function buildAndPushDockerImage(imageName, dockerfilePath, version, gitRe
|
|
|
84
85
|
`--builder ${buildContextName}`,
|
|
85
86
|
`-f ${dockerfilePath}`,
|
|
86
87
|
`--secret id=NPM_TOKEN`,
|
|
87
|
-
|
|
88
|
+
`${isCI ? '--push' : '--load'}`,
|
|
88
89
|
`--provenance=false`,
|
|
89
90
|
...cacheArgParts,
|
|
90
91
|
`--annotation org.opencontainers.image.source=${gitRepoUrl}`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docker.js","sourceRoot":"","sources":["../../../src/utils/docker.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"docker.js","sourceRoot":"","sources":["../../../src/utils/docker.ts"],"names":[],"mappings":"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"}
|