@payfit/nx-core 4.54.1 → 4.54.2-ephemeral-nx-docker-plugin.0
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/publisher/docker.js +7 -10
- package/dist/src/executors/publisher/docker.js.map +1 -1
- package/dist/src/executors/publisher/executor.js.map +1 -1
- package/dist/src/generators/init/files/.circleci/config.yml.template +1 -1
- package/dist/src/index.js +35 -19
- package/dist/src/index.js.map +1 -1
- package/dist/src/scripts/version-actions.mock.js +1 -0
- package/dist/src/scripts/version-actions.mock.js.map +1 -1
- package/dist/src/utils/common/github.js +46 -23
- package/dist/src/utils/common/github.js.map +1 -1
- package/executors.json +0 -5
- package/package.json +7 -2
- package/dist/src/executors/docker-build/executor.d.ts +0 -4
- package/dist/src/executors/docker-build/executor.js +0 -41
- package/dist/src/executors/docker-build/executor.js.map +0 -1
- package/dist/src/executors/docker-build/schema.json +0 -24
- package/dist/src/utils/docker.d.ts +0 -15
- package/dist/src/utils/docker.js +0 -90
- package/dist/src/utils/docker.js.map +0 -1
|
@@ -6,7 +6,6 @@ const ecr_1 = require("../../utils/common/ecr");
|
|
|
6
6
|
const github_1 = require("../../utils/common/github");
|
|
7
7
|
const logger_1 = require("../../utils/common/logger");
|
|
8
8
|
const datadog_1 = require("../../utils/datadog");
|
|
9
|
-
const docker_1 = require("../../utils/docker");
|
|
10
9
|
async function publishDocker(options, context, version, projectRoot, isDryRun = false) {
|
|
11
10
|
const projectDockerfile = `${projectRoot}/Dockerfile`;
|
|
12
11
|
if (!fs.existsSync(projectDockerfile)) {
|
|
@@ -30,16 +29,15 @@ async function publishDocker(options, context, version, projectRoot, isDryRun =
|
|
|
30
29
|
return;
|
|
31
30
|
}
|
|
32
31
|
await (0, ecr_1.ensureEcrAuth)(registry.name, options.isPublicRegistry);
|
|
33
|
-
|
|
32
|
+
const commitSha = await (0, github_1.getCurrentGitCommitSha)();
|
|
33
|
+
const ephemeralTag = `ephemeral-sha-${commitSha}`;
|
|
34
|
+
const ephemeralRef = `${registry.url}/${options.ecrRegistry}:${ephemeralTag}`;
|
|
35
|
+
logger_1.consola.box(`Promoting docker image from ${ephemeralRef} to ${registry.url}/${options.ecrRegistry} with version ${version}`);
|
|
34
36
|
const extraTags = !version.includes('ephemeral') && options.extraReleaseTags
|
|
35
37
|
? options.extraReleaseTags
|
|
36
38
|
: [];
|
|
37
39
|
const sanitizedRepoUrl = await (0, github_1.getSanitizedCurrentGitRepoUrl)();
|
|
38
|
-
const commitSha = await (0, github_1.getCurrentGitCommitSha)();
|
|
39
|
-
const appName = context.projectName || 'unknown-app';
|
|
40
40
|
try {
|
|
41
|
-
const ephemeralTag = `ephemeral-sha-${commitSha}`;
|
|
42
|
-
const ephemeralRef = `${registry.url}/${options.ecrRegistry}:${ephemeralTag}`;
|
|
43
41
|
const hasEphemeral = await (0, ecr_1.imageTagExistsInEcr)(options.ecrRegistry, ephemeralTag, options.isPublicRegistry);
|
|
44
42
|
if (hasEphemeral) {
|
|
45
43
|
logger_1.consola.start(`Promoting existing image ${ephemeralRef} to ${version} and extra tags`);
|
|
@@ -48,16 +46,15 @@ async function publishDocker(options, context, version, projectRoot, isDryRun =
|
|
|
48
46
|
logger_1.consola.success('Docker image retagged successfully!');
|
|
49
47
|
}
|
|
50
48
|
else {
|
|
51
|
-
logger_1.consola.
|
|
52
|
-
|
|
53
|
-
logger_1.consola.success('Docker image built and pushed successfully!');
|
|
49
|
+
logger_1.consola.warn('Docker image does not exist in ECR, did you run docker:build?');
|
|
50
|
+
return;
|
|
54
51
|
}
|
|
55
52
|
if (!version.includes('ephemeral')) {
|
|
56
53
|
await (0, datadog_1.correlateDeploymentImage)(`${registry.url}/${options.ecrRegistry}:${version}`, sanitizedRepoUrl, commitSha);
|
|
57
54
|
}
|
|
58
55
|
}
|
|
59
56
|
catch (error) {
|
|
60
|
-
logger_1.consola.error('Failed to
|
|
57
|
+
logger_1.consola.error('Failed to promote Docker image:', error);
|
|
61
58
|
throw error;
|
|
62
59
|
}
|
|
63
60
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docker.js","sourceRoot":"","sources":["../../../../src/executors/publisher/docker.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"docker.js","sourceRoot":"","sources":["../../../../src/executors/publisher/docker.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../../src/executors/publisher/executor.ts"],"names":[],"mappings":";;AAEA,8CAAiE;AACjE,qCAAwC;AACxC,yCAA4C;AAC5C,iCAAoC;AACpC,qCAAwC;AAGxC,MAAM,WAAW,GAGuB,KAAK,EAC3C,OAAiC,EACjC,OAAwB,EACxB,EAAE;IACF,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,KAAK,MAAM,IAAI,OAAO,CAAC,MAAM,IAAI,KAAK,CAAA;IAC7E,MAAM,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAA;IAC7E,MAAM,WAAW,GAAG,MAAM,IAAA,kBAAa,EAAC,OAAO,CAAC,CAAA;IAChD,MAAM,OAAO,GAAG,IAAA,eAAU,EAAC,OAAO,CAAC,CAAA;IAEnC,MAAM,IAAA,sBAAa,EAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../../src/executors/publisher/executor.ts"],"names":[],"mappings":";;AAEA,8CAAiE;AACjE,qCAAwC;AACxC,yCAA4C;AAC5C,iCAAoC;AACpC,qCAAwC;AAGxC,MAAM,WAAW,GAGuB,KAAK,EAC3C,OAAiC,EACjC,OAAwB,EACxB,EAAE;IACF,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,KAAK,MAAM,IAAI,OAAO,CAAC,MAAM,IAAI,KAAK,CAAA;IAC7E,MAAM,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAA;IAC7E,MAAM,WAAW,GAAG,MAAM,IAAA,kBAAa,EAAC,OAAO,CAAC,CAAA;IAChD,MAAM,OAAO,GAAG,IAAA,eAAU,EAAC,OAAO,CAAC,CAAA;IAEnC,MAAM,IAAA,sBAAa,EAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAA;IAErE,MAAM,IAAA,kBAAW,EACf,OAAO,EACP,OAAO,EACP,OAAO,EACP,WAAW,EACX,WAAW,EACX,QAAQ,CACT,CAAA;IACD,MAAM,IAAA,sBAAa,EACjB,OAAO,EACP,OAAO,EACP,OAAO,EACP,WAAW,EACX,WAAW,EACX,QAAQ,CACT,CAAA;IACD,MAAM,IAAA,0BAAe,EACnB,OAAO,EACP,OAAO,EACP,OAAO,EACP,WAAW,EACX,WAAW,EACX,QAAQ,CACT,CAAA;IAED,OAAO;QACL,OAAO,EAAE,IAAI;KACd,CAAA;AACH,CAAC,CAAA;AAED,kBAAe,WAAW,CAAA"}
|
|
@@ -155,7 +155,7 @@ jobs:
|
|
|
155
155
|
command: |
|
|
156
156
|
if [[ $(yq '. | has("workflows")' .circleci/continue-config.yml) != true ]]
|
|
157
157
|
then
|
|
158
|
-
|
|
158
|
+
echo "no continuous workflow to run, stopping"
|
|
159
159
|
circleci-agent step halt
|
|
160
160
|
fi
|
|
161
161
|
- run:
|
package/dist/src/index.js
CHANGED
|
@@ -5,6 +5,7 @@ exports.createNodesInternal = createNodesInternal;
|
|
|
5
5
|
const fs_1 = require("fs");
|
|
6
6
|
const path_1 = require("path");
|
|
7
7
|
const devkit_1 = require("@nx/devkit");
|
|
8
|
+
const github_1 = require("./utils/common/github");
|
|
8
9
|
exports.createNodesV2 = [
|
|
9
10
|
'**/project.json',
|
|
10
11
|
async (configFiles, options, context) => {
|
|
@@ -85,26 +86,41 @@ async function createNodesInternal(configFilePath, options, context) {
|
|
|
85
86
|
isFrontendProject) {
|
|
86
87
|
const publisherConfig = (0, devkit_1.readJsonFile)((0, path_1.join)(__dirname, '/executors/publisher/schema.json'));
|
|
87
88
|
if (isDockerProject) {
|
|
88
|
-
const
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
89
|
+
const dockerfileRelPath = `${projectRoot}/Dockerfile`;
|
|
90
|
+
const sanitizedProjectName = (projectConfiguration?.name || projectRoot)
|
|
91
|
+
.toString()
|
|
92
|
+
.replaceAll('@', '-')
|
|
93
|
+
.replaceAll('/', '-');
|
|
94
|
+
// Prefer repositoryName from release config, fallback to metadata.ecrRegistry, then sanitized name
|
|
95
|
+
const repositoryName = projectConfiguration?.release?.docker?.repositoryName ||
|
|
96
|
+
ecrRegistry ||
|
|
97
|
+
sanitizedProjectName;
|
|
98
|
+
// BuildKit cache args against ECR (skip for public ECR)
|
|
99
|
+
const registryUrl = isPublicRegistry
|
|
100
|
+
? 'public.ecr.aws/payfit'
|
|
101
|
+
: '${AWS_ECR_REGISTRY}';
|
|
102
|
+
const cacheArgsArray = !isPublicRegistry && repositoryName
|
|
103
|
+
? [
|
|
104
|
+
`--cache-from type=registry,ref=${registryUrl}/${repositoryName}:cache-build-$(git rev-parse --abbrev-ref HEAD | tr '/' '-')`,
|
|
105
|
+
`--cache-from type=registry,ref=${registryUrl}/${repositoryName}:cache-build-main`,
|
|
106
|
+
`--cache-to type=registry,ref=${registryUrl}/${repositoryName}:cache-build-$(git rev-parse --abbrev-ref HEAD | tr '/' '-'),mode=max`,
|
|
107
|
+
]
|
|
108
|
+
: [];
|
|
109
|
+
const baseArgs = [
|
|
110
|
+
`-f ${dockerfileRelPath}`,
|
|
111
|
+
`--secret id=NPM_TOKEN`,
|
|
112
|
+
`--provenance=false`,
|
|
113
|
+
`--annotation org.opencontainers.image.source=${await (0, github_1.getSanitizedCurrentGitRepoUrl)()}`,
|
|
114
|
+
`--annotation org.opencontainers.image.revision=$(git rev-parse HEAD)`,
|
|
115
|
+
`--build-arg DD_GIT_REPOSITORY_URL=${await (0, github_1.getSanitizedCurrentGitRepoUrl)()}`,
|
|
116
|
+
`--build-arg DD_GIT_COMMIT_SHA=$(git rev-parse HEAD)`,
|
|
117
|
+
`--push`,
|
|
118
|
+
`-t ${registryUrl}/${repositoryName}:ephemeral-sha-$(git rev-parse HEAD)`,
|
|
119
|
+
];
|
|
120
|
+
targets['docker:build'] = {
|
|
101
121
|
options: {
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
},
|
|
105
|
-
metadata: {
|
|
106
|
-
technologies: ['docker'],
|
|
107
|
-
description: dockerBuildConfig?.description,
|
|
122
|
+
cwd: '.', // run from workspace root
|
|
123
|
+
args: [...baseArgs, ...cacheArgsArray],
|
|
108
124
|
},
|
|
109
125
|
};
|
|
110
126
|
}
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AA8BA,kDAsNC;AApPD,2BAA+B;AAC/B,+BAAoC;AAEpC,uCAMmB;AAGnB,kDAAqE;AAKxD,QAAA,aAAa,GAAmC;IAC3D,iBAAiB;IACjB,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;QACtC,OAAO,MAAM,IAAA,6BAAoB,EAC/B,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CAC/B,mBAAmB,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,EACnD,WAAW,EACX,OAAO,EACP,OAAO,CACR,CAAA;IACH,CAAC;CACF,CAAA;AAEM,KAAK,UAAU,mBAAmB,CACvC,cAAsB,EACtB,OAAwB,EACxB,OAA6B;IAE7B,MAAM,oBAAoB,GACxB,IAAA,qBAAY,EAAC,cAAc,CAAC,CAAA;IAC9B,MAAM,WAAW,GAAG,IAAA,cAAO,EAAC,cAAc,CAAC,CAAA;IAE3C,MAAM,eAAe,GAAG,IAAA,eAAU,EAAC,IAAA,WAAI,EAAC,WAAW,EAAE,YAAY,CAAC,CAAC,CAAA;IACnE,8DAA8D;IAC9D,MAAM,eAAe,GACnB,oBAAoB,EAAE,QAAQ,EAAE,CAAC,iBAAiB,CAAC,IAAI,SAAS,CAAA;IAClE,MAAM,aAAa,GAAG,IAAA,eAAU,EAC9B,IAAA,WAAI,EAAC,WAAW,EAAE,eAAe,EAAE,YAAY,CAAC,CACjD,CAAA;IACD,MAAM,eAAe,GAAG,CAAC,CAAC,CACxB,oBAAoB,CAAC,QAAQ;QAC7B,oBAAoB,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CACjD,CAAA;IACD,MAAM,iBAAiB,GAAG,CAAC,CAAC,CAC1B,oBAAoB,CAAC,QAAQ;QAC7B,oBAAoB,CAAC,QAAQ,CAAC,6BAA6B,CAAC,CAC7D,CAAA;IACD,MAAM,OAAO,GAAG,EAAE,CAAA;IAElB,MAAM,WAAW,GAAW,eAAe;QACzC,CAAC,CAAC,oBAAoB,CAAC,QAAQ;YAC7B,oBAAoB,CAAC,QAAQ,CAAC,aAAa,CAAC;QAC9C,CAAC,CAAC,SAAS,CAAA;IACb,MAAM,aAAa,GAAW,aAAa;QACzC,CAAC,CAAC,oBAAoB,CAAC,QAAQ;YAC7B,oBAAoB,CAAC,QAAQ,CAAC,eAAe,CAAC;QAChD,CAAC,CAAC,SAAS,CAAA;IACb,MAAM,gBAAgB,GAAG,eAAe;QACtC,CAAC,CAAC,oBAAoB,CAAC,QAAQ;YAC7B,oBAAoB,CAAC,QAAQ,CAAC,kBAAkB,CAAC,IAAI,IAAI;QAC3D,CAAC,CAAC,KAAK,CAAA;IACT,MAAM,gBAAgB,GAAa,eAAe;QAChD,CAAC,CAAC,oBAAoB,CAAC,QAAQ;YAC7B,oBAAoB,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QACnD,CAAC,CAAC,SAAS,CAAA;IACb,MAAM,YAAY,GAAW,eAAe;QAC1C,CAAC,CAAC,oBAAoB,CAAC,QAAQ;YAC7B,oBAAoB,CAAC,QAAQ,CAAC,cAAc,CAAC;QAC/C,CAAC,CAAC,SAAS,CAAA;IACb,MAAM,YAAY,GAAa,eAAe;QAC5C,CAAC,CAAC,oBAAoB,CAAC,QAAQ;YAC7B,oBAAoB,CAAC,QAAQ,CAAC,cAAc,CAAC;QAC/C,CAAC,CAAC,SAAS,CAAA;IACb,MAAM,eAAe,GAAa,eAAe;QAC/C,CAAC,CAAC,oBAAoB,CAAC,QAAQ;YAC7B,oBAAoB,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QAClD,CAAC,CAAC,SAAS,CAAA;IACb,MAAM,wBAAwB,GAAW,eAAe;QACtD,CAAC,CAAC,oBAAoB,CAAC,QAAQ;YAC7B,oBAAoB,CAAC,QAAQ,CAAC,0BAA0B,CAAC;QAC3D,CAAC,CAAC,SAAS,CAAA;IACb,MAAM,iBAAiB,GAAW,eAAe;QAC/C,CAAC,CAAC,oBAAoB,CAAC,QAAQ;YAC7B,oBAAoB,CAAC,QAAQ,CAAC,mBAAmB,CAAC;YAClD,CAAC,CAAC,oBAAoB,CAAC,QAAQ,CAAC,mBAAmB,CAAC;YACpD,CAAC,CAAC,oBAAoB,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;QACvD,CAAC,CAAC,SAAS,CAAA;IAEb,MAAM,2BAA2B,GAAW,iBAAiB;QAC3D,CAAC,CAAC,oBAAoB,CAAC,QAAQ;YAC7B,oBAAoB,CAAC,QAAQ,CAAC,6BAA6B,CAAC;QAC9D,CAAC,CAAC,SAAS,CAAA;IACb,MAAM,yBAAyB,GAAa,iBAAiB;QAC3D,CAAC,CAAC,oBAAoB,CAAC,QAAQ;YAC7B,oBAAoB,CAAC,QAAQ,CAAC,2BAA2B,CAAC;QAC5D,CAAC,CAAC,SAAS,CAAA;IACb,MAAM,2BAA2B,GAAa,iBAAiB;QAC7D,CAAC,CAAC,oBAAoB,CAAC,QAAQ;YAC7B,oBAAoB,CAAC,QAAQ,CAAC,6BAA6B,CAAC;QAC9D,CAAC,CAAC,SAAS,CAAA;IACb,MAAM,mBAAmB,GAAa,iBAAiB;QACrD,CAAC,CAAC,oBAAoB,CAAC,QAAQ;YAC7B,oBAAoB,CAAC,QAAQ,CAAC,qBAAqB,CAAC;QACtD,CAAC,CAAC,SAAS,CAAA;IAEb,MAAM,aAAa,GAAG,WAAW,KAAK,GAAG,CAAA;IAEzC,IAAI,OAAO,GAAG,IAAI,CAAA;IAElB,IACE,aAAa;QACb,eAAe;QACf,eAAe;QACf,iBAAiB,EACjB,CAAC;QACD,MAAM,eAAe,GAAG,IAAA,qBAAY,EAClC,IAAA,WAAI,EAAC,SAAS,EAAE,kCAAkC,CAAC,CACpD,CAAA;QAED,IAAI,eAAe,EAAE,CAAC;YACpB,MAAM,iBAAiB,GAAG,GAAG,WAAW,aAAa,CAAA;YAErD,MAAM,oBAAoB,GAAG,CAC1B,oBAA4B,EAAE,IAAI,IAAI,WAAW,CACnD;iBACE,QAAQ,EAAE;iBACV,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC;iBACpB,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;YAEvB,mGAAmG;YACnG,MAAM,cAAc,GACjB,oBAA4B,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc;gBAC9D,WAAW;gBACX,oBAAoB,CAAA;YAEtB,wDAAwD;YACxD,MAAM,WAAW,GAAG,gBAAgB;gBAClC,CAAC,CAAC,uBAAuB;gBACzB,CAAC,CAAC,qBAAqB,CAAA;YACzB,MAAM,cAAc,GAClB,CAAC,gBAAgB,IAAI,cAAc;gBACjC,CAAC,CAAC;oBACE,kCAAkC,WAAW,IAAI,cAAc,8DAA8D;oBAC7H,kCAAkC,WAAW,IAAI,cAAc,mBAAmB;oBAClF,gCAAgC,WAAW,IAAI,cAAc,uEAAuE;iBACrI;gBACH,CAAC,CAAC,EAAE,CAAA;YAER,MAAM,QAAQ,GAAG;gBACf,MAAM,iBAAiB,EAAE;gBACzB,uBAAuB;gBACvB,oBAAoB;gBACpB,gDAAgD,MAAM,IAAA,sCAA6B,GAAE,EAAE;gBACvF,sEAAsE;gBACtE,qCAAqC,MAAM,IAAA,sCAA6B,GAAE,EAAE;gBAC5E,qDAAqD;gBACrD,QAAQ;gBACR,MAAM,WAAW,IAAI,cAAc,sCAAsC;aAC1E,CAAA;YAED,OAAO,CAAC,cAAc,CAAC,GAAG;gBACxB,OAAO,EAAE;oBACP,GAAG,EAAE,GAAG,EAAE,0BAA0B;oBACpC,IAAI,EAAE,CAAC,GAAG,QAAQ,EAAE,GAAG,cAAc,CAAC;iBACvC;aACF,CAAA;QACH,CAAC;QAED,OAAO,CAAC,oBAAoB,CAAC,GAAG;YAC9B,iFAAiF;YACjF,QAAQ,EAAE,2BAA2B;YACrC,KAAK,EAAE,KAAK;YACZ,OAAO,EAAE;gBACP,WAAW;gBACX,aAAa;gBACb,gBAAgB;gBAChB,eAAe;gBACf,gBAAgB;gBAChB,YAAY;gBACZ,YAAY;gBACZ,eAAe;gBACf,wBAAwB;gBACxB,iBAAiB;gBACjB,2BAA2B;gBAC3B,yBAAyB;gBACzB,2BAA2B;gBAC3B,mBAAmB;aACpB;YACD,QAAQ,EAAE;gBACR,YAAY,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,CAAC;gBACtD,WAAW,EAAE,eAAe,CAAC,WAAW;aACzC;SACF,CAAA;QAED,IACE,CAAE,oBAAoB,EAAE,OAAO,EAAE,OAAyC;YACxE,EAAE,cAAc,EAClB,CAAC;YACD,OAAO,GAAG;gBACR,4DAA4D;gBAC5D,OAAO,EAAE;oBACP,cAAc,EAAE,gCAAgC;iBACjD;aACF,CAAA;QACH,CAAC;IACH,CAAC;IACD,IAAI,aAAa,EAAE,CAAC;QAClB,MAAM,mBAAmB,GAAG,IAAA,qBAAY,EACtC,IAAA,WAAI,EAAC,SAAS,EAAE,uCAAuC,CAAC,CACzD,CAAA;QACD,OAAO,CAAC,gBAAgB,CAAC,GAAG;YAC1B,QAAQ,EAAE,gCAAgC;YAC1C,KAAK,EAAE,KAAK;YACZ,QAAQ,EAAE;gBACR,WAAW,EAAE,mBAAmB,CAAC,WAAW;aAC7C;SACF,CAAA;QACD,MAAM,aAAa,GAAG,IAAA,qBAAY,EAChC,IAAA,WAAI,EAAC,SAAS,EAAE,gCAAgC,CAAC,CAClD,CAAA;QACD,OAAO,CAAC,SAAS,CAAC,GAAG;YACnB,QAAQ,EAAE,yBAAyB;YACnC,KAAK,EAAE,KAAK;YACZ,QAAQ,EAAE;gBACR,WAAW,EAAE,aAAa,CAAC,WAAW;aACvC;SACF,CAAA;IACH,CAAC;IAED,OAAO;QACL,QAAQ,EAAE;YACR,CAAC,WAAW,CAAC,EAAE;gBACb,OAAO;gBACP,OAAO;aACR;SACF;KACF,CAAA;AACH,CAAC;AAED,oDAAoD;AAA3C,sGAAA,UAAU,OAAA;AACnB,0CAAmD;AAA1C,qGAAA,cAAc,OAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version-actions.mock.js","sourceRoot":"","sources":["../../../src/scripts/version-actions.mock.ts"],"names":[],"mappings":";;;AAIa,QAAA,oBAAoB,GAA4B;IAC3D,IAAI,EAAE,cAAc;IACpB,IAAI,EAAE,KAAK;IACX,IAAI,EAAE;QACJ,IAAI,EAAE,mBAAmB;QACzB,OAAO,EAAE;YACP,KAAK,EAAE;gBACL,QAAQ,EAAE,YAAY;gBACtB,OAAO,EAAE,CAAC,sBAAsB,CAAC;gBACjC,OAAO,EAAE;oBACP,UAAU,EAAE,wBAAwB;iBACrC;aACF;SACF;KACF;CACF,CAAA;AAEY,QAAA,gBAAgB,GAAyB;IACpD,IAAI,EAAE,YAAY;IAClB,QAAQ,EAAE,CAAC,cAAc,CAAC;IAC1B,OAAO,EAAE;QACP,mBAAmB,EAAE,KAAK;QAC1B,mBAAmB,EAAE,IAAI;QACzB,iBAAiB,EAAE,EAAE;QACrB,eAAe,EAAE,sBAAsB;QACvC,qBAAqB,EAAE,EAAE;QACzB,cAAc,EAAE,gCAAgC;QAChD,sBAAsB,EAAE,SAAS;QACjC,8BAA8B,EAAE,EAAE;QAClC,8BAA8B,EAAE,MAAM;QACtC,aAAa,EAAE,EAAE;QACjB,gCAAgC,EAAE,KAAK;QACvC,qBAAqB,EAAE,EAAE;QACzB,YAAY,EAAE,KAAK;QACnB,kBAAkB,EAAE,IAAI;QACxB,gBAAgB,EAAE,MAAM;QACxB,sBAAsB,EAAE,EAAE;QAC1B,oBAAoB,EAAE,IAAI;KAC3B;IACD,oBAAoB,EAAE,EAAE;IACxB,SAAS,EAAE,KAAK;IAChB,oBAAoB,EAAE,aAAa;IACnC,iBAAiB,EAAE,0BAA0B;IAC7C,qCAAqC,EAAE,KAAK;IAC5C,8BAA8B,EAAE,KAAK;IACrC,4BAA4B,EAAE,KAAK;IACnC,YAAY,EAAE,KAAK;CACpB,CAAA;AAEY,QAAA,eAAe,GAA0B;IACpD,eAAe,EAAE,sBAAsB;IACvC,sBAAsB,EAAE,SAAS;IACjC,8BAA8B,EAAE,EAAE;IAClC,8BAA8B,EAAE,MAAM;IACtC,aAAa,EAAE,EAAE;IACjB,gCAAgC,EAAE,KAAK;IACvC,qBAAqB,EAAE,EAAE;IACzB,qBAAqB,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"version-actions.mock.js","sourceRoot":"","sources":["../../../src/scripts/version-actions.mock.ts"],"names":[],"mappings":";;;AAIa,QAAA,oBAAoB,GAA4B;IAC3D,IAAI,EAAE,cAAc;IACpB,IAAI,EAAE,KAAK;IACX,IAAI,EAAE;QACJ,IAAI,EAAE,mBAAmB;QACzB,OAAO,EAAE;YACP,KAAK,EAAE;gBACL,QAAQ,EAAE,YAAY;gBACtB,OAAO,EAAE,CAAC,sBAAsB,CAAC;gBACjC,OAAO,EAAE;oBACP,UAAU,EAAE,wBAAwB;iBACrC;aACF;SACF;KACF;CACF,CAAA;AAEY,QAAA,gBAAgB,GAAyB;IACpD,IAAI,EAAE,YAAY;IAClB,QAAQ,EAAE,CAAC,cAAc,CAAC;IAC1B,OAAO,EAAE;QACP,mBAAmB,EAAE,KAAK;QAC1B,mBAAmB,EAAE,IAAI;QACzB,iBAAiB,EAAE,EAAE;QACrB,eAAe,EAAE,sBAAsB;QACvC,qBAAqB,EAAE,EAAE;QACzB,cAAc,EAAE,gCAAgC;QAChD,sBAAsB,EAAE,SAAS;QACjC,8BAA8B,EAAE,EAAE;QAClC,8BAA8B,EAAE,MAAM;QACtC,aAAa,EAAE,EAAE;QACjB,gCAAgC,EAAE,KAAK;QACvC,qBAAqB,EAAE,EAAE;QACzB,YAAY,EAAE,KAAK;QACnB,kBAAkB,EAAE,IAAI;QACxB,gBAAgB,EAAE,MAAM;QACxB,sBAAsB,EAAE,EAAE;QAC1B,oBAAoB,EAAE,IAAI;KAC3B;IACD,oBAAoB,EAAE,EAAE;IACxB,SAAS,EAAE,KAAK;IAChB,oBAAoB,EAAE,aAAa;IACnC,iBAAiB,EAAE,0BAA0B;IAC7C,qCAAqC,EAAE,KAAK;IAC5C,8BAA8B,EAAE,KAAK;IACrC,4BAA4B,EAAE,KAAK;IACnC,YAAY,EAAE,KAAK;CACpB,CAAA;AAEY,QAAA,eAAe,GAA0B;IACpD,eAAe,EAAE,sBAAsB;IACvC,sBAAsB,EAAE,SAAS;IACjC,8BAA8B,EAAE,EAAE;IAClC,8BAA8B,EAAE,MAAM;IACtC,aAAa,EAAE,EAAE;IACjB,gCAAgC,EAAE,KAAK;IACvC,qBAAqB,EAAE,EAAE;IACzB,qBAAqB,EAAE,EAAE;IACzB,aAAa,EAAE,SAAS;CACzB,CAAA"}
|
|
@@ -10,46 +10,69 @@ const exec_1 = require("./exec");
|
|
|
10
10
|
* Get sanitized current git branch name
|
|
11
11
|
*/
|
|
12
12
|
async function getSanitizedCurrentGitBranch() {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
.
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
13
|
+
try {
|
|
14
|
+
const branchName = await (0, exec_1.exec)(`git branch --show-current`);
|
|
15
|
+
return branchName.exitCode == 0
|
|
16
|
+
? branchName.stdout
|
|
17
|
+
.trim()
|
|
18
|
+
.toLowerCase()
|
|
19
|
+
.replace(/[^a-z0-9-]/g, '')
|
|
20
|
+
: '';
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
return '';
|
|
24
|
+
}
|
|
20
25
|
}
|
|
21
26
|
/**
|
|
22
27
|
* Get current commit sha
|
|
23
28
|
*/
|
|
24
29
|
async function getCurrentGitCommitSha() {
|
|
25
|
-
|
|
26
|
-
|
|
30
|
+
try {
|
|
31
|
+
const commitSha = await (0, exec_1.exec)(`git rev-parse HEAD`);
|
|
32
|
+
return commitSha.exitCode == 0 ? commitSha.stdout.trim() : '';
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
return '';
|
|
36
|
+
}
|
|
27
37
|
}
|
|
28
38
|
/**
|
|
29
39
|
* Get sanitized current repo url
|
|
30
40
|
*/
|
|
31
41
|
async function getSanitizedCurrentGitRepoUrl() {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
42
|
+
try {
|
|
43
|
+
const repoUrlExec = await (0, exec_1.exec)(`git config --get remote.origin.url`);
|
|
44
|
+
if (repoUrlExec.exitCode == 0) {
|
|
45
|
+
const repoUrlMatching = repoUrlExec.stdout.match(/github\.com[:/]PayFit\/[^/]+/);
|
|
46
|
+
if (repoUrlMatching && repoUrlMatching.length > 0) {
|
|
47
|
+
return `https://${repoUrlMatching[0]
|
|
48
|
+
.trim()
|
|
49
|
+
.replace(':', '/')
|
|
50
|
+
.replace('.git', '')}`;
|
|
51
|
+
}
|
|
37
52
|
}
|
|
53
|
+
return '';
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
return '';
|
|
38
57
|
}
|
|
39
|
-
return '';
|
|
40
58
|
}
|
|
41
59
|
/**
|
|
42
60
|
* Get git repository name from remote origin URL
|
|
43
61
|
*/
|
|
44
62
|
async function getGitRepositoryName() {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
63
|
+
try {
|
|
64
|
+
const repoUrlExec = await (0, exec_1.exec)('git config --get remote.origin.url');
|
|
65
|
+
const repoUrl = repoUrlExec.stdout.trim();
|
|
66
|
+
// Extract repo name from URL (handles both HTTPS and SSH formats)
|
|
67
|
+
const match = repoUrl.match(/\/([^/]+?)(?:\.git)?$/);
|
|
68
|
+
if (match && match[1]) {
|
|
69
|
+
return match[1];
|
|
70
|
+
}
|
|
71
|
+
return undefined;
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
return undefined;
|
|
75
|
+
}
|
|
53
76
|
}
|
|
54
77
|
/**
|
|
55
78
|
* Checks if the branch is a default branch
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github.js","sourceRoot":"","sources":["../../../../src/utils/common/github.ts"],"names":[],"mappings":";;AAKA,
|
|
1
|
+
{"version":3,"file":"github.js","sourceRoot":"","sources":["../../../../src/utils/common/github.ts"],"names":[],"mappings":";;AAKA,oEAYC;AAKD,wDAOC;AAKD,sEAkBC;AAKD,oDAaC;AAKD,0CAEC;AA7ED,iCAA6B;AAE7B;;GAEG;AACI,KAAK,UAAU,4BAA4B;IAChD,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,MAAM,IAAA,WAAI,EAAC,2BAA2B,CAAC,CAAA;QAC1D,OAAO,UAAU,CAAC,QAAQ,IAAI,CAAC;YAC7B,CAAC,CAAC,UAAU,CAAC,MAAM;iBACd,IAAI,EAAE;iBACN,WAAW,EAAE;iBACb,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC;YAC/B,CAAC,CAAC,EAAE,CAAA;IACR,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAA;IACX,CAAC;AACH,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,sBAAsB;IAC1C,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,MAAM,IAAA,WAAI,EAAC,oBAAoB,CAAC,CAAA;QAClD,OAAO,SAAS,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IAC/D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAA;IACX,CAAC;AACH,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,6BAA6B;IACjD,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,MAAM,IAAA,WAAI,EAAC,oCAAoC,CAAC,CAAA;QACpE,IAAI,WAAW,CAAC,QAAQ,IAAI,CAAC,EAAE,CAAC;YAC9B,MAAM,eAAe,GAAG,WAAW,CAAC,MAAM,CAAC,KAAK,CAC9C,8BAA8B,CAC/B,CAAA;YACD,IAAI,eAAe,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClD,OAAO,WAAW,eAAe,CAAC,CAAC,CAAC;qBACjC,IAAI,EAAE;qBACN,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC;qBACjB,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAA;YAC1B,CAAC;QACH,CAAC;QACD,OAAO,EAAE,CAAA;IACX,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAA;IACX,CAAC;AACH,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,oBAAoB;IACxC,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,MAAM,IAAA,WAAI,EAAC,oCAAoC,CAAC,CAAA;QACpE,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;QACzC,kEAAkE;QAClE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAA;QACpD,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YACtB,OAAO,KAAK,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;QACD,OAAO,SAAS,CAAA;IAClB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAA;IAClB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe,CAAC,UAAkB;IAChD,OAAO,UAAU,KAAK,MAAM,IAAI,UAAU,KAAK,QAAQ,CAAA;AACzD,CAAC"}
|
package/executors.json
CHANGED
|
@@ -10,11 +10,6 @@
|
|
|
10
10
|
"schema": "./dist/src/executors/release/schema.json",
|
|
11
11
|
"description": "Custom release executor"
|
|
12
12
|
},
|
|
13
|
-
"docker-build": {
|
|
14
|
-
"implementation": "./dist/src/executors/docker-build/executor",
|
|
15
|
-
"schema": "./dist/src/executors/docker-build/schema.json",
|
|
16
|
-
"description": "Build and push ephemeral Docker image (ephemeral-sha-<commit>) with ECR cache"
|
|
17
|
-
},
|
|
18
13
|
"preview-deploy": {
|
|
19
14
|
"implementation": "./dist/src/executors/preview-deploy/executor",
|
|
20
15
|
"schema": "./dist/src/executors/preview-deploy/schema.json",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@payfit/nx-core",
|
|
3
|
-
"version": "4.54.
|
|
3
|
+
"version": "4.54.2-ephemeral-nx-docker-plugin.0",
|
|
4
4
|
"type": "commonjs",
|
|
5
5
|
"main": "./dist/src/index.js",
|
|
6
6
|
"types": "./dist/src/index.d.ts",
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
41
|
"@graphql-codegen/cli": "^5.0.7",
|
|
42
|
-
"@nx/plugin": "21.
|
|
42
|
+
"@nx/plugin": "21.5.2",
|
|
43
43
|
"portfinder": "^1.0.32",
|
|
44
44
|
"verdaccio": "^6.1.6"
|
|
45
45
|
},
|
|
@@ -49,6 +49,11 @@
|
|
|
49
49
|
"require": "./dist/src/index.js",
|
|
50
50
|
"default": "./dist/src/index.js"
|
|
51
51
|
},
|
|
52
|
+
"./ecr": {
|
|
53
|
+
"types": "./dist/src/utils/common/ecr.d.ts",
|
|
54
|
+
"require": "./dist/src/utils/common/ecr.js",
|
|
55
|
+
"default": "./dist/src/utils/common/ecr.js"
|
|
56
|
+
},
|
|
52
57
|
"./versionActions": "./dist/src/scripts/version-actions.js",
|
|
53
58
|
"./package.json": "./package.json"
|
|
54
59
|
},
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import { ExecutorContext } from '@nx/devkit';
|
|
2
|
-
import { DockerBuildExecutorOptions, DockerBuildExecutorSchema } from './schema';
|
|
3
|
-
declare const runExecutor: (options: DockerBuildExecutorOptions, context: ExecutorContext) => Promise<DockerBuildExecutorSchema>;
|
|
4
|
-
export default runExecutor;
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const fs = require("node:fs");
|
|
4
|
-
const ecr_1 = require("../../utils/common/ecr");
|
|
5
|
-
const github_1 = require("../../utils/common/github");
|
|
6
|
-
const logger_1 = require("../../utils/common/logger");
|
|
7
|
-
const docker_1 = require("../../utils/docker");
|
|
8
|
-
const runExecutor = async (options, context) => {
|
|
9
|
-
const projectRoot = context.projectGraph.nodes[context.projectName].data.root;
|
|
10
|
-
const projectDockerfile = `${projectRoot}/Dockerfile`;
|
|
11
|
-
if (!fs.existsSync(projectDockerfile)) {
|
|
12
|
-
logger_1.consola.warn(`Dockerfile not found at ${projectDockerfile}, skipping`);
|
|
13
|
-
return { success: true };
|
|
14
|
-
}
|
|
15
|
-
if (!options.ecrRepository) {
|
|
16
|
-
logger_1.consola.error('Dockerfile detected but No ECR registry provided, add "ecrRepository" to your project.json metadata');
|
|
17
|
-
return { success: false };
|
|
18
|
-
}
|
|
19
|
-
const registry = {
|
|
20
|
-
url: options.isPublicRepository
|
|
21
|
-
? 'public.ecr.aws/payfit'
|
|
22
|
-
: process.env.AWS_ECR_REGISTRY,
|
|
23
|
-
name: options.isPublicRepository
|
|
24
|
-
? 'public.ecr.aws'
|
|
25
|
-
: process.env.AWS_ECR_REGISTRY,
|
|
26
|
-
};
|
|
27
|
-
const commitSha = await (0, github_1.getCurrentGitCommitSha)();
|
|
28
|
-
const sanitizedRepoUrl = await (0, github_1.getSanitizedCurrentGitRepoUrl)();
|
|
29
|
-
const tag = `ephemeral-sha-${commitSha}`;
|
|
30
|
-
if (options.isDryRun) {
|
|
31
|
-
logger_1.consola.box(`Would have published docker image located at ${projectDockerfile} to registry ${options.ecrRepository} with tag ${tag} but --dry-run is enabled`);
|
|
32
|
-
return { success: true };
|
|
33
|
-
}
|
|
34
|
-
await (0, ecr_1.ensureEcrAuth)(registry.name, options.isPublicRepository);
|
|
35
|
-
// Build ephemeral sha tag (immutable)
|
|
36
|
-
logger_1.consola.box(`Building and pushing ephemeral image to ${registry.url}/${options.ecrRepository}:${tag}`);
|
|
37
|
-
await (0, docker_1.buildAndPushDockerImage)(options.ecrRepository, projectDockerfile, tag, sanitizedRepoUrl, commitSha, registry.url, [], context.projectName);
|
|
38
|
-
return { success: true };
|
|
39
|
-
};
|
|
40
|
-
exports.default = runExecutor;
|
|
41
|
-
//# sourceMappingURL=executor.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../../src/executors/docker-build/executor.ts"],"names":[],"mappings":";;AAAA,8BAA6B;AAI7B,gDAAmE;AACnE,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;IAErD,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,OAAO,CAAC,GAAG,CAAC,gBAAgB;QAChC,IAAI,EAAE,OAAO,CAAC,kBAAkB;YAC9B,CAAC,CAAC,gBAAgB;YAClB,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB;KACjC,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,MAAM,IAAA,mBAAa,EAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAA;IAE9D,sCAAsC;IACtC,gBAAO,CAAC,GAAG,CACT,2CAA2C,QAAQ,CAAC,GAAG,IAAI,OAAO,CAAC,aAAa,IAAI,GAAG,EAAE,CAC1F,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,CACpB,CAAA;IAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;AAC1B,CAAC,CAAA;AAED,kBAAe,WAAW,CAAA"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "https://json-schema.org/schema",
|
|
3
|
-
"version": 2,
|
|
4
|
-
"title": "Docker build executor",
|
|
5
|
-
"description": "Build and push ephemeral Docker image (ephemeral-sha-<commit>) with Buildx",
|
|
6
|
-
"type": "object",
|
|
7
|
-
"properties": {
|
|
8
|
-
"ecrRepository": {
|
|
9
|
-
"type": "string",
|
|
10
|
-
"description": "The ecr repository repository name (<accountid>.dkr.ecr.<region>.amazonaws.com)"
|
|
11
|
-
},
|
|
12
|
-
"isPublicRepository": {
|
|
13
|
-
"type": "boolean",
|
|
14
|
-
"description": "Use AWS public ECR (us-east-1)",
|
|
15
|
-
"default": false
|
|
16
|
-
},
|
|
17
|
-
"isDryRun": {
|
|
18
|
-
"type": "boolean",
|
|
19
|
-
"description": "Do not build/push, only print what would happen",
|
|
20
|
-
"default": false
|
|
21
|
-
}
|
|
22
|
-
},
|
|
23
|
-
"required": ["ecrRepository"]
|
|
24
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { Result } from 'tinyexec';
|
|
2
|
-
/**
|
|
3
|
-
* Builds and pushes a Docker image using the provided Dockerfile.
|
|
4
|
-
*
|
|
5
|
-
* @param imageName - The name of the image
|
|
6
|
-
* @param dockerfilePath - Path to the Dockerfile
|
|
7
|
-
* @param version - Version tag for the image
|
|
8
|
-
* @param gitRepoUrl - Git repository URL for annotations
|
|
9
|
-
* @param commitSha - Git commit SHA for annotations
|
|
10
|
-
* @param registry - Docker registry URL
|
|
11
|
-
* @param extraTags - Optional additional tags for the image
|
|
12
|
-
* @param appName
|
|
13
|
-
* @return {Promise<Result>}
|
|
14
|
-
*/
|
|
15
|
-
export declare function buildAndPushDockerImage(imageName: string, dockerfilePath: string, version: string, gitRepoUrl: string, commitSha: string, registry: string, extraTags: string[], appName: string): Promise<Result>;
|
package/dist/src/utils/docker.js
DELETED
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.buildAndPushDockerImage = buildAndPushDockerImage;
|
|
4
|
-
const exec_1 = require("./common/exec");
|
|
5
|
-
const github_1 = require("./common/github");
|
|
6
|
-
const logger_1 = require("./common/logger");
|
|
7
|
-
async function setupDockerBuilder(appName) {
|
|
8
|
-
const BUILDKIT_BUILDER_NAME = 'dockerContainerBuildkit'.concat(appName);
|
|
9
|
-
logger_1.consola.log(`Setting up Docker Buildx builder named ${BUILDKIT_BUILDER_NAME}...`);
|
|
10
|
-
const buildersResult = await (0, exec_1.exec)(`docker buildx ls`, {
|
|
11
|
-
throwOnError: true,
|
|
12
|
-
});
|
|
13
|
-
const hasBuildkitBuilder = buildersResult.stdout.includes(BUILDKIT_BUILDER_NAME);
|
|
14
|
-
const isBuildkitCurrentBuilder = buildersResult.stdout.includes(`${BUILDKIT_BUILDER_NAME}*`);
|
|
15
|
-
logger_1.consola.log(`Checking for existing buildx builders...`);
|
|
16
|
-
if (!hasBuildkitBuilder) {
|
|
17
|
-
// Create new buildkit builder
|
|
18
|
-
logger_1.consola.log(`Creating new buildkit builder...`);
|
|
19
|
-
await (0, exec_1.exec)(`docker buildx create \
|
|
20
|
-
--name ${BUILDKIT_BUILDER_NAME} \
|
|
21
|
-
--driver=docker-container \
|
|
22
|
-
--use`, {
|
|
23
|
-
throwOnError: true,
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
else if (!isBuildkitCurrentBuilder) {
|
|
27
|
-
logger_1.consola.log(`Existing buildkit builder found, but not current.`);
|
|
28
|
-
// Use existing buildkit builder
|
|
29
|
-
await (0, exec_1.exec)(`docker buildx use ${BUILDKIT_BUILDER_NAME}`, {
|
|
30
|
-
throwOnError: true,
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
logger_1.consola.info(`Buildx context is set to ${BUILDKIT_BUILDER_NAME}`);
|
|
34
|
-
return BUILDKIT_BUILDER_NAME;
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Builds and pushes a Docker image using the provided Dockerfile.
|
|
38
|
-
*
|
|
39
|
-
* @param imageName - The name of the image
|
|
40
|
-
* @param dockerfilePath - Path to the Dockerfile
|
|
41
|
-
* @param version - Version tag for the image
|
|
42
|
-
* @param gitRepoUrl - Git repository URL for annotations
|
|
43
|
-
* @param commitSha - Git commit SHA for annotations
|
|
44
|
-
* @param registry - Docker registry URL
|
|
45
|
-
* @param extraTags - Optional additional tags for the image
|
|
46
|
-
* @param appName
|
|
47
|
-
* @return {Promise<Result>}
|
|
48
|
-
*/
|
|
49
|
-
async function buildAndPushDockerImage(imageName, dockerfilePath, version, gitRepoUrl, commitSha, registry, extraTags = [], appName) {
|
|
50
|
-
appName = appName.replaceAll('@', '-').replaceAll('/', '-');
|
|
51
|
-
const buildContextName = await setupDockerBuilder(appName);
|
|
52
|
-
// Build all tags including base version and extra tags
|
|
53
|
-
const tagArgs = [`${version}`, ...extraTags]
|
|
54
|
-
.map(tag => `-t ${registry}/${imageName}:${tag}`)
|
|
55
|
-
.join(' ');
|
|
56
|
-
// Setup registry cache (skip for public ECR which doesn't support BuildKit cache backend)
|
|
57
|
-
const isPublicEcr = registry.includes('public.ecr.aws');
|
|
58
|
-
const cacheArgParts = [];
|
|
59
|
-
if (!isPublicEcr) {
|
|
60
|
-
const branch = await (0, github_1.getSanitizedCurrentGitBranch)();
|
|
61
|
-
const branchCacheRef = `${registry}/${imageName}:cache-build-${branch}`;
|
|
62
|
-
const mainCacheRef = `${registry}/${imageName}:cache-build-main`;
|
|
63
|
-
cacheArgParts.push(`--cache-from type=registry,ref=${branchCacheRef}`);
|
|
64
|
-
if (!(0, github_1.isDefaultBranch)(branch)) {
|
|
65
|
-
cacheArgParts.push(`--cache-from type=registry,ref=${mainCacheRef}`);
|
|
66
|
-
}
|
|
67
|
-
cacheArgParts.push(`--cache-to type=registry,ref=${branchCacheRef},mode=max`);
|
|
68
|
-
}
|
|
69
|
-
const runCmd = [
|
|
70
|
-
`docker buildx build ${tagArgs}`,
|
|
71
|
-
`--builder ${buildContextName}`,
|
|
72
|
-
`-f ${dockerfilePath}`,
|
|
73
|
-
`--secret id=NPM_TOKEN`,
|
|
74
|
-
`--push`,
|
|
75
|
-
`--provenance=false`,
|
|
76
|
-
...cacheArgParts,
|
|
77
|
-
`--annotation org.opencontainers.image.source=${gitRepoUrl}`,
|
|
78
|
-
`--annotation org.opencontainers.image.revision=${commitSha}`,
|
|
79
|
-
`--build-arg DD_GIT_REPOSITORY_URL=${gitRepoUrl}`,
|
|
80
|
-
`--build-arg DD_GIT_COMMIT_SHA=${commitSha}`,
|
|
81
|
-
`.`,
|
|
82
|
-
].join(' \\\n');
|
|
83
|
-
return (0, exec_1.exec)(runCmd, {
|
|
84
|
-
throwOnError: true,
|
|
85
|
-
nodeOptions: {
|
|
86
|
-
stdio: 'inherit',
|
|
87
|
-
},
|
|
88
|
-
});
|
|
89
|
-
}
|
|
90
|
-
//# sourceMappingURL=docker.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"docker.js","sourceRoot":"","sources":["../../../src/utils/docker.ts"],"names":[],"mappings":"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"}
|