@payfit/nx-core 4.34.0 → 4.34.1-ephemeral-bugfix-docker-push-annotations-8c27de1.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@payfit/nx-core",
3
- "version": "4.34.0",
3
+ "version": "4.34.1-ephemeral-bugfix-docker-push-annotations-8c27de1.0",
4
4
  "type": "commonjs",
5
5
  "main": "./src/index.js",
6
6
  "types": "./src/index.d.ts",
@@ -39,18 +39,11 @@ async function publishDocker(options, context, version, projectRoot) {
39
39
  }
40
40
  }
41
41
  logger_1.consola.box(`Publishing docker image to ${registry.url}/${options.ecrRegistry} with version ${version}`);
42
- logger_1.consola.start('Building docker image');
43
- await (0, docker_1.buildDockerImage)(options.ecrRegistry, projectDockerfile, version, await (0, github_1.getSanitizedCurrentGitRepoUrl)(), await (0, github_1.getCurrentGitCommitSha)(), registry.url);
44
- logger_1.consola.success('Docker image built!');
45
- logger_1.consola.start('Pushing docker image');
46
- await (0, docker_1.pushImageToEcr)(options.ecrRegistry, version, registry.url);
47
- logger_1.consola.success('Docker image pushed successfully!');
48
- // If the image is public, and the version is not ephemeral, we need to tag it as latest
49
- if (options.isPublicRegistry && !version.includes('ephemeral')) {
50
- logger_1.consola.start('Tagging docker image as latest');
51
- await (0, docker_1.tagLatestImage)(options.ecrRegistry, version, registry.url);
52
- await (0, docker_1.pushImageToEcr)(options.ecrRegistry, 'latest', registry.url);
53
- logger_1.consola.success('Docker image tagged as latest successfully!');
54
- }
42
+ logger_1.consola.start('Building and pushing docker image');
43
+ const extraTags = !version.includes('ephemeral') && options.extraReleaseTags
44
+ ? options.extraReleaseTags
45
+ : [];
46
+ await (0, docker_1.buildAndPushDockerImage)(options.ecrRegistry, projectDockerfile, version, await (0, github_1.getSanitizedCurrentGitRepoUrl)(), await (0, github_1.getCurrentGitCommitSha)(), registry.url, extraTags);
47
+ logger_1.consola.success('Docker image built and pushed successfully!');
55
48
  }
56
49
  //# sourceMappingURL=docker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"docker.js","sourceRoot":"","sources":["../../../../../../packages/nx-core/src/executors/publisher/docker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"docker.js","sourceRoot":"","sources":["../../../../../../packages/nx-core/src/executors/publisher/docker.ts"],"names":[],"mappings":";;AAsBA,sCAsEC;AA5FD,8BAA6B;AAI7B,mDAI6B;AAC7B,+CAA4D;AAC5D,+CAG2B;AAC3B,+CAA4C;AAQrC,KAAK,UAAU,aAAa,CACjC,OAAiC,EACjC,OAAwB,EACxB,OAAe,EACf,WAAmB;IAEnB,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,OAAM;IACR,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QACzB,gBAAO,CAAC,KAAK,CACX,mGAAmG,CACpG,CAAA;QACD,OAAM;IACR,CAAC;IAED,MAAM,QAAQ,GAAgB;QAC5B,GAAG,EAAE,OAAO,CAAC,gBAAgB;YAC3B,CAAC,CAAC,uBAAuB;YACzB,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB;QAChC,IAAI,EAAE,OAAO,CAAC,gBAAgB;YAC5B,CAAC,CAAC,gBAAgB;YAClB,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB;KACjC,CAAA;IAED,MAAM,IAAA,uBAAY,GAAE,CAAA;IACpB,MAAM,IAAA,qBAAU,EAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAA;IAEzD,8DAA8D;IAC9D,MAAM,mBAAmB,GAAG,MAAM,IAAA,+BAAoB,EAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IACrE,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACzB,gBAAO,CAAC,IAAI,CACV,mEAAmE,CACpE,CAAA;QACD,uBAAuB;QACvB,MAAM,IAAA,qBAAU,EAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAA;QAEzD,2BAA2B;QAC3B,MAAM,gBAAgB,GAAG,MAAM,IAAA,+BAAoB,EAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QAClE,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CACb,6DAA6D,CAC9D,CAAA;QACH,CAAC;IACH,CAAC;IAED,gBAAO,CAAC,GAAG,CACT,8BAA8B,QAAQ,CAAC,GAAG,IAAI,OAAO,CAAC,WAAW,iBAAiB,OAAO,EAAE,CAC5F,CAAA;IAED,gBAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAA;IAElD,MAAM,SAAS,GACb,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,gBAAgB;QACxD,CAAC,CAAC,OAAO,CAAC,gBAAgB;QAC1B,CAAC,CAAC,EAAE,CAAA;IAER,MAAM,IAAA,gCAAuB,EAC3B,OAAO,CAAC,WAAW,EACnB,iBAAiB,EACjB,OAAO,EACP,MAAM,IAAA,sCAA6B,GAAE,EACrC,MAAM,IAAA,+BAAsB,GAAE,EAC9B,QAAQ,CAAC,GAAG,EACZ,SAAS,CACV,CAAA;IACD,gBAAO,CAAC,OAAO,CAAC,6CAA6C,CAAC,CAAA;AAChE,CAAC"}
@@ -5,4 +5,5 @@ export interface PublisherExecutorOptions {
5
5
  ociEcrRegistry?: string
6
6
  isPublicRegistry?: boolean
7
7
  helmChartFolder?: string
8
+ extraReleaseTags?: string[]
8
9
  }
@@ -26,6 +26,14 @@
26
26
  "type": "string",
27
27
  "description": "The folder containing the Helm chart files (Chart.yaml, values.yaml, etc.)",
28
28
  "default": ".deploy"
29
+ },
30
+ "extraReleaseTags": {
31
+ "type": "array",
32
+ "items": {
33
+ "type": "string"
34
+ },
35
+ "description": "Additional tags to add to the Docker image during a release",
36
+ "default": []
29
37
  }
30
38
  },
31
39
  "required": []
package/src/index.js CHANGED
@@ -31,6 +31,10 @@ async function createNodesInternal(configFilePath, options, context) {
31
31
  ? projectConfiguration.metadata &&
32
32
  projectConfiguration.metadata['isPublicRegistry'] == true
33
33
  : false;
34
+ const extraReleaseTags = isDockerProject
35
+ ? projectConfiguration.metadata &&
36
+ projectConfiguration.metadata['extraReleaseTags']
37
+ : undefined;
34
38
  let release = null;
35
39
  if (isHelmProject || isDockerProject) {
36
40
  const publisherConfig = (0, devkit_1.readJsonFile)((0, path_1.join)(__dirname, '/executors/publisher/schema.json'));
@@ -42,6 +46,7 @@ async function createNodesInternal(configFilePath, options, context) {
42
46
  chartRegistry,
43
47
  isPublicRegistry,
44
48
  helmChartFolder,
49
+ extraReleaseTags,
45
50
  },
46
51
  metadata: {
47
52
  technologies: ['helm', 'docker'],
package/src/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/nx-core/src/index.ts"],"names":[],"mappings":";;;AA0BA,kDAuEC;AAjGD,2BAA+B;AAC/B,+BAAoC;AAEpC,uCAKmB;AAKN,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,GAAG,IAAA,qBAAY,EAAC,cAAc,CAAC,CAAA;IACzD,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;IAEnE,8DAA8D;IAC9D,MAAM,eAAe,GACnB,oBAAoB,CAAC,QAAQ,EAAE,eAAe,IAAI,SAAS,CAAA;IAC7D,MAAM,aAAa,GAAG,IAAA,eAAU,EAC9B,IAAA,WAAI,EAAC,WAAW,EAAE,eAAe,EAAE,YAAY,CAAC,CACjD,CAAA;IAED,MAAM,OAAO,GAAG,EAAE,CAAA;IAElB,MAAM,WAAW,GAAG,eAAe;QACjC,CAAC,CAAC,oBAAoB,CAAC,QAAQ;YAC7B,oBAAoB,CAAC,QAAQ,CAAC,aAAa,CAAC;QAC9C,CAAC,CAAC,SAAS,CAAA;IACb,MAAM,aAAa,GAAG,aAAa;QACjC,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;IAET,IAAI,OAAO,GAAG,IAAI,CAAA;IAElB,IAAI,aAAa,IAAI,eAAe,EAAE,CAAC;QACrC,MAAM,eAAe,GAAG,IAAA,qBAAY,EAClC,IAAA,WAAI,EAAC,SAAS,EAAE,kCAAkC,CAAC,CACpD,CAAA;QACD,OAAO,CAAC,oBAAoB,CAAC,GAAG;YAC9B,iFAAiF;YACjF,QAAQ,EAAE,2BAA2B;YACrC,OAAO,EAAE;gBACP,WAAW;gBACX,aAAa;gBACb,gBAAgB;gBAChB,eAAe;aAChB;YACD,QAAQ,EAAE;gBACR,YAAY,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC;gBAChC,WAAW,EAAE,eAAe,CAAC,WAAW;aACzC;SACF,CAAA;QACD,IAAI,CAAC,oBAAoB,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;YAC5D,OAAO,GAAG;gBACR,4DAA4D;gBAC5D,OAAO,EAAE;oBACP,cAAc,EAAE,gCAAgC;iBACjD;aACF,CAAA;QACH,CAAC;IACH,CAAC;IAED,OAAO;QACL,QAAQ,EAAE;YACR,CAAC,WAAW,CAAC,EAAE;gBACb,GAAG,oBAAoB;gBACvB,OAAO;gBACP,OAAO;aACR;SACF;KACF,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/nx-core/src/index.ts"],"names":[],"mappings":";;;AA0BA,kDA4EC;AAtGD,2BAA+B;AAC/B,+BAAoC;AAEpC,uCAKmB;AAKN,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,GAAG,IAAA,qBAAY,EAAC,cAAc,CAAC,CAAA;IACzD,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;IAEnE,8DAA8D;IAC9D,MAAM,eAAe,GACnB,oBAAoB,CAAC,QAAQ,EAAE,eAAe,IAAI,SAAS,CAAA;IAC7D,MAAM,aAAa,GAAG,IAAA,eAAU,EAC9B,IAAA,WAAI,EAAC,WAAW,EAAE,eAAe,EAAE,YAAY,CAAC,CACjD,CAAA;IAED,MAAM,OAAO,GAAG,EAAE,CAAA;IAElB,MAAM,WAAW,GAAG,eAAe;QACjC,CAAC,CAAC,oBAAoB,CAAC,QAAQ;YAC7B,oBAAoB,CAAC,QAAQ,CAAC,aAAa,CAAC;QAC9C,CAAC,CAAC,SAAS,CAAA;IACb,MAAM,aAAa,GAAG,aAAa;QACjC,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,GAAG,eAAe;QACtC,CAAC,CAAC,oBAAoB,CAAC,QAAQ;YAC7B,oBAAoB,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QACnD,CAAC,CAAC,SAAS,CAAA;IAEb,IAAI,OAAO,GAAG,IAAI,CAAA;IAElB,IAAI,aAAa,IAAI,eAAe,EAAE,CAAC;QACrC,MAAM,eAAe,GAAG,IAAA,qBAAY,EAClC,IAAA,WAAI,EAAC,SAAS,EAAE,kCAAkC,CAAC,CACpD,CAAA;QACD,OAAO,CAAC,oBAAoB,CAAC,GAAG;YAC9B,iFAAiF;YACjF,QAAQ,EAAE,2BAA2B;YACrC,OAAO,EAAE;gBACP,WAAW;gBACX,aAAa;gBACb,gBAAgB;gBAChB,eAAe;gBACf,gBAAgB;aACjB;YACD,QAAQ,EAAE;gBACR,YAAY,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC;gBAChC,WAAW,EAAE,eAAe,CAAC,WAAW;aACzC;SACF,CAAA;QACD,IAAI,CAAC,oBAAoB,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;YAC5D,OAAO,GAAG;gBACR,4DAA4D;gBAC5D,OAAO,EAAE;oBACP,cAAc,EAAE,gCAAgC;iBACjD;aACF,CAAA;QACH,CAAC;IACH,CAAC;IAED,OAAO;QACL,QAAQ,EAAE;YACR,CAAC,WAAW,CAAC,EAAE;gBACb,GAAG,oBAAoB;gBACvB,OAAO;gBACP,OAAO;aACR;SACF;KACF,CAAA;AACH,CAAC"}
@@ -52,7 +52,7 @@ async function getAuthWithOidcProfile() {
52
52
  const profileExist = await (0, exec_1.exec)(`aws configure list-profiles`).pipe('grep', [profileName]);
53
53
  return profileExist.exitCode == 0 ? profileExist.stdout.trim() : false;
54
54
  }
55
- catch (e) {
55
+ catch {
56
56
  return false;
57
57
  }
58
58
  }
@@ -74,7 +74,8 @@ async function loginToEcr(registry, isPublicRegistry = false) {
74
74
  }
75
75
  consola_1.consola.log(`Logging in to ECR registry: ${registry}`);
76
76
  try {
77
- const result = await (0, exec_1.exec)(ecrCommand, { throwOnError: true }).pipe(await (0, docker_1.getDockerOrPodman)(), `login --username AWS --password-stdin ${registry}`.split(' '));
77
+ await (0, docker_1.getDocker)();
78
+ const result = await (0, exec_1.exec)(ecrCommand, { throwOnError: true }).pipe(`docker`, `login --username AWS --password-stdin ${registry}`.split(' '));
78
79
  consola_1.consola.success(`Successfully logged in to ECR registry: ${registry}`);
79
80
  return result;
80
81
  }
@@ -95,45 +96,26 @@ async function verifyEcrCredentials(registry) {
95
96
  consola_1.consola.error('No ECR registry provided for credential verification');
96
97
  return false;
97
98
  }
98
- const dockerOrPodman = await (0, docker_1.getDockerOrPodman)();
99
99
  try {
100
100
  consola_1.consola.log(`Verifying ECR credentials for registry: ${registry}`);
101
- // Check if we're using Docker or Podman
102
- if (dockerOrPodman === 'docker') {
103
- // Docker config file path
104
- const configPath = path.join(os.homedir(), '.docker', 'config.json');
105
- // Check if the config file exists
106
- if (!fs.existsSync(configPath)) {
107
- consola_1.consola.error('Docker config file not found');
108
- return false;
109
- }
110
- // Read and parse the config file
111
- const configContent = fs.readFileSync(configPath, 'utf8');
112
- const config = JSON.parse(configContent);
113
- // Check if the registry is in the auths section
114
- if (config.auths && config.auths[registry]) {
115
- consola_1.consola.success(`ECR credentials verified for registry: ${registry}`);
116
- return true;
117
- }
118
- else {
119
- consola_1.consola.error(`ECR credentials verification failed: No authentication found for ${registry} in the .docker/config.json file`);
120
- return false;
121
- }
101
+ // Docker config file path
102
+ const configPath = path.join(os.homedir(), '.docker', 'config.json');
103
+ // Check if the config file exists
104
+ if (!fs.existsSync(configPath)) {
105
+ consola_1.consola.error('Docker config file not found');
106
+ return false;
107
+ }
108
+ // Read and parse the config file
109
+ const configContent = fs.readFileSync(configPath, 'utf8');
110
+ const config = JSON.parse(configContent);
111
+ // Check if the registry is in the auths section
112
+ if (config.auths && config.auths[registry]) {
113
+ consola_1.consola.success(`ECR credentials verified for registry: ${registry}`);
114
+ return true;
122
115
  }
123
116
  else {
124
- // For Podman, we might need a different approach
125
- // For now, we'll use a simple check to see if we can list images from the registry
126
- const result = await (0, exec_1.exec)(`podman login --get-login ${registry}`, {
127
- throwOnError: false,
128
- });
129
- if (result.exitCode === 0) {
130
- consola_1.consola.success(`ECR credentials verified for registry: ${registry}`);
131
- return true;
132
- }
133
- else {
134
- consola_1.consola.error(`ECR credentials verification failed for registry: ${registry}`);
135
- return false;
136
- }
117
+ consola_1.consola.error(`ECR credentials verification failed: No authentication found for ${registry} in the .docker/config.json file`);
118
+ return false;
137
119
  }
138
120
  }
139
121
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"aws-auth.js","sourceRoot":"","sources":["../../../../../packages/nx-core/src/utils/aws-auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"aws-auth.js","sourceRoot":"","sources":["../../../../../packages/nx-core/src/utils/aws-auth.ts"],"names":[],"mappings":"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"}
@@ -4,26 +4,17 @@ import { Result } from 'tinyexec';
4
4
  *
5
5
  * @return {Promise<string>} A promise that resolves to the string 'docker' if Docker is available, or 'podman' if Podman is used as a fallback.
6
6
  */
7
- export declare function getDockerOrPodman(): Promise<string>;
7
+ export declare function getDocker(): Promise<void>;
8
8
  /**
9
- * Builds a Docker image using the provided Dockerfile.
9
+ * Builds and pushes a Docker image using the provided Dockerfile.
10
10
  *
11
- * @param imageName
12
- * @param dockerfilePath
13
- * @param version
14
- * @param gitRepoUrl
15
- * @param commitSha
16
- * @param registry
11
+ * @param imageName - The name of the image
12
+ * @param dockerfilePath - Path to the Dockerfile
13
+ * @param version - Version tag for the image
14
+ * @param gitRepoUrl - Git repository URL for annotations
15
+ * @param commitSha - Git commit SHA for annotations
16
+ * @param registry - Docker registry URL
17
+ * @param extraTags - Optional additional tags for the image
17
18
  * @return {Promise<Result>}
18
19
  */
19
- export declare function buildDockerImage(imageName: string, dockerfilePath: string, version: string, gitRepoUrl: string, commitSha: string, registry: string): Promise<Result>;
20
- /**
21
- * Push a Docker image to ECR
22
- *
23
- * @param repositoryName - The name of the repository
24
- * @param version - The version of the image
25
- * @param registry
26
- * @returns A promise that resolves to the result of the push command
27
- */
28
- export declare function pushImageToEcr(repositoryName: string, version: string, registry: string): Promise<Result>;
29
- export declare function tagLatestImage(repositoryName: string, version: string, registry: string): Promise<Result>;
20
+ export declare function buildAndPushDockerImage(imageName: string, dockerfilePath: string, version: string, gitRepoUrl: string, commitSha: string, registry: string, extraTags?: string[]): Promise<Result>;
@@ -1,73 +1,88 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getDockerOrPodman = getDockerOrPodman;
4
- exports.buildDockerImage = buildDockerImage;
5
- exports.pushImageToEcr = pushImageToEcr;
6
- exports.tagLatestImage = tagLatestImage;
3
+ exports.getDocker = getDocker;
4
+ exports.buildAndPushDockerImage = buildAndPushDockerImage;
7
5
  const exec_1 = require("./exec");
8
6
  const logger_1 = require("./logger");
7
+ const BUILDKIT_BUILDER_NAME = 'dockerContainerBuildkit';
9
8
  /**
10
9
  * Determines the available container management tool by checking for Docker and fallback to Podman if Docker is unavailable.
11
10
  *
12
11
  * @return {Promise<string>} A promise that resolves to the string 'docker' if Docker is available, or 'podman' if Podman is used as a fallback.
13
12
  */
14
- async function getDockerOrPodman() {
13
+ async function getDocker() {
15
14
  try {
16
15
  await (0, exec_1.exec)('docker --version');
17
- return 'docker';
18
16
  }
19
- catch (e) {
20
- console.log('docker not found, trying podman');
21
- return 'podman';
17
+ catch {
18
+ logger_1.consola.error('No container management tool found. Please install Docker or Docker binary + Colima.');
19
+ throw new Error('No container management tool found');
22
20
  }
23
21
  }
22
+ async function setupDockerBuilder() {
23
+ await getDocker();
24
+ // Get list of builders
25
+ /*
26
+ Expected command output is:
27
+ NAME/NODE DRIVER/ENDPOINT STATUS BUILDKIT PLATFORMS
28
+ buildkit* docker-container
29
+ \_ buildkit0 \_ unix:///var/run/docker.sock running v0.22.0 linux/amd64 (+3), ...
30
+ default docker
31
+ \_ default \_ default running v0.23.1 linux/amd64 (+3), ...
32
+ */
33
+ const buildersResult = await (0, exec_1.exec)(`docker buildx ls`);
34
+ const hasBuildkitBuilder = buildersResult.stdout.includes(BUILDKIT_BUILDER_NAME);
35
+ const isBuildkitCurrentBuilder = buildersResult.stdout.includes(`${BUILDKIT_BUILDER_NAME}*`);
36
+ if (!hasBuildkitBuilder) {
37
+ // Create new buildkit builder
38
+ await (0, exec_1.exec)(`docker buildx create \
39
+ --name ${BUILDKIT_BUILDER_NAME} \
40
+ --driver=docker-container \
41
+ --use`, {
42
+ throwOnError: true,
43
+ });
44
+ }
45
+ else if (!isBuildkitCurrentBuilder) {
46
+ // Use existing buildkit builder
47
+ await (0, exec_1.exec)(`docker buildx use ${BUILDKIT_BUILDER_NAME}`, {
48
+ throwOnError: true,
49
+ });
50
+ }
51
+ logger_1.consola.info(`Buildx context is set to ${BUILDKIT_BUILDER_NAME}`);
52
+ }
24
53
  /**
25
- * Builds a Docker image using the provided Dockerfile.
54
+ * Builds and pushes a Docker image using the provided Dockerfile.
26
55
  *
27
- * @param imageName
28
- * @param dockerfilePath
29
- * @param version
30
- * @param gitRepoUrl
31
- * @param commitSha
32
- * @param registry
56
+ * @param imageName - The name of the image
57
+ * @param dockerfilePath - Path to the Dockerfile
58
+ * @param version - Version tag for the image
59
+ * @param gitRepoUrl - Git repository URL for annotations
60
+ * @param commitSha - Git commit SHA for annotations
61
+ * @param registry - Docker registry URL
62
+ * @param extraTags - Optional additional tags for the image
33
63
  * @return {Promise<Result>}
34
64
  */
35
- async function buildDockerImage(imageName, dockerfilePath, version, gitRepoUrl, commitSha, registry) {
36
- const dockerOrPodman = await getDockerOrPodman();
37
- return (0, exec_1.exec)(`${dockerOrPodman} buildx build -t ${registry}/${imageName}:${version} -f ${dockerfilePath} --secret id=NPM_TOKEN . --annotation org.opencontainers.image.source=${gitRepoUrl} --annotation org.opencontainers.image.revision=${commitSha} --build-arg DD_GIT_REPOSITORY_URL=${gitRepoUrl} --build-arg DD_GIT_COMMIT_SHA=${commitSha}`, {
65
+ async function buildAndPushDockerImage(imageName, dockerfilePath, version, gitRepoUrl, commitSha, registry, extraTags = []) {
66
+ await getDocker();
67
+ await setupDockerBuilder();
68
+ // Build all tags including base version and extra tags
69
+ const tagArgs = [`${version}`, ...extraTags]
70
+ .map(tag => `-t ${registry}/${imageName}:${tag}`)
71
+ .join(' ');
72
+ return (0, exec_1.exec)(`docker buildx build ${tagArgs} \
73
+ -f ${dockerfilePath} \
74
+ --secret id=NPM_TOKEN \
75
+ --push \
76
+ --provenance=false \
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
+ .`, {
38
82
  throwOnError: true,
39
83
  nodeOptions: {
40
84
  stdio: 'inherit',
41
85
  },
42
86
  });
43
87
  }
44
- /**
45
- * Push a Docker image to ECR
46
- *
47
- * @param repositoryName - The name of the repository
48
- * @param version - The version of the image
49
- * @param registry
50
- * @returns A promise that resolves to the result of the push command
51
- */
52
- async function pushImageToEcr(repositoryName, version, registry) {
53
- const dockerOrPodman = await getDockerOrPodman();
54
- try {
55
- return await (0, exec_1.exec)(`${dockerOrPodman} push ${registry}/${repositoryName}:${version}`, { throwOnError: true });
56
- }
57
- catch (error) {
58
- // Check if the error is related to authentication
59
- const errorMessage = error.toString();
60
- if (errorMessage.includes('no basic auth credentials')) {
61
- logger_1.consola.error('Authentication error when pushing to ECR. Your Docker credentials may have expired.');
62
- logger_1.consola.error('Please ensure you are properly authenticated with ECR before pushing images.');
63
- throw new Error(`Failed to push image due to authentication error: ${errorMessage}`);
64
- }
65
- // Re-throw the original error for other types of errors
66
- throw error;
67
- }
68
- }
69
- async function tagLatestImage(repositoryName, version, registry) {
70
- const dockerOrPodman = await getDockerOrPodman();
71
- return (0, exec_1.exec)(`${dockerOrPodman} tag ${registry}/${repositoryName}:${version} ${registry}/${repositoryName}:latest`);
72
- }
73
88
  //# sourceMappingURL=docker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"docker.js","sourceRoot":"","sources":["../../../../../packages/nx-core/src/utils/docker.ts"],"names":[],"mappings":";;AAUA,8CAQC;AAaD,4CAkBC;AAUD,wCA4BC;AAED,wCASC;AAhGD,iCAA6B;AAC7B,qCAAkC;AAElC;;;;GAIG;AACI,KAAK,UAAU,iBAAiB;IACrC,IAAI,CAAC;QACH,MAAM,IAAA,WAAI,EAAC,kBAAkB,CAAC,CAAA;QAC9B,OAAO,QAAQ,CAAA;IACjB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAA;QAC9C,OAAO,QAAQ,CAAA;IACjB,CAAC;AACH,CAAC;AAED;;;;;;;;;;GAUG;AACI,KAAK,UAAU,gBAAgB,CACpC,SAAiB,EACjB,cAAsB,EACtB,OAAe,EACf,UAAkB,EAClB,SAAiB,EACjB,QAAgB;IAEhB,MAAM,cAAc,GAAG,MAAM,iBAAiB,EAAE,CAAA;IAChD,OAAO,IAAA,WAAI,EACT,GAAG,cAAc,oBAAoB,QAAQ,IAAI,SAAS,IAAI,OAAO,OAAO,cAAc,yEAAyE,UAAU,mDAAmD,SAAS,sCAAsC,UAAU,kCAAkC,SAAS,EAAE,EACtU;QACE,YAAY,EAAE,IAAI;QAClB,WAAW,EAAE;YACX,KAAK,EAAE,SAAS;SACjB;KACF,CACF,CAAA;AACH,CAAC;AAED;;;;;;;GAOG;AACI,KAAK,UAAU,cAAc,CAClC,cAAsB,EACtB,OAAe,EACf,QAAgB;IAEhB,MAAM,cAAc,GAAG,MAAM,iBAAiB,EAAE,CAAA;IAChD,IAAI,CAAC;QACH,OAAO,MAAM,IAAA,WAAI,EACf,GAAG,cAAc,SAAS,QAAQ,IAAI,cAAc,IAAI,OAAO,EAAE,EACjE,EAAE,YAAY,EAAE,IAAI,EAAE,CACvB,CAAA;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,kDAAkD;QAClD,MAAM,YAAY,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAA;QACrC,IAAI,YAAY,CAAC,QAAQ,CAAC,2BAA2B,CAAC,EAAE,CAAC;YACvD,gBAAO,CAAC,KAAK,CACX,qFAAqF,CACtF,CAAA;YACD,gBAAO,CAAC,KAAK,CACX,8EAA8E,CAC/E,CAAA;YACD,MAAM,IAAI,KAAK,CACb,qDAAqD,YAAY,EAAE,CACpE,CAAA;QACH,CAAC;QACD,wDAAwD;QACxD,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,cAAc,CAClC,cAAsB,EACtB,OAAe,EACf,QAAgB;IAEhB,MAAM,cAAc,GAAG,MAAM,iBAAiB,EAAE,CAAA;IAChD,OAAO,IAAA,WAAI,EACT,GAAG,cAAc,QAAQ,QAAQ,IAAI,cAAc,IAAI,OAAO,IAAI,QAAQ,IAAI,cAAc,SAAS,CACtG,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"docker.js","sourceRoot":"","sources":["../../../../../packages/nx-core/src/utils/docker.ts"],"names":[],"mappings":";;AAYA,8BASC;AAuDD,0DAmCC;AA7GD,iCAA6B;AAC7B,qCAAkC;AAElC,MAAM,qBAAqB,GAAG,yBAAyB,CAAA;AAEvD;;;;GAIG;AACI,KAAK,UAAU,SAAS;IAC7B,IAAI,CAAC;QACH,MAAM,IAAA,WAAI,EAAC,kBAAkB,CAAC,CAAA;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,gBAAO,CAAC,KAAK,CACX,sFAAsF,CACvF,CAAA;QACD,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAA;IACvD,CAAC;AACH,CAAC;AAED,KAAK,UAAU,kBAAkB;IAC/B,MAAM,SAAS,EAAE,CAAA;IAEjB,uBAAuB;IACvB;;;;;;;MAOE;IACF,MAAM,cAAc,GAAG,MAAM,IAAA,WAAI,EAAC,kBAAkB,CAAC,CAAA;IACrD,MAAM,kBAAkB,GAAG,cAAc,CAAC,MAAM,CAAC,QAAQ,CACvD,qBAAqB,CACtB,CAAA;IACD,MAAM,wBAAwB,GAAG,cAAc,CAAC,MAAM,CAAC,QAAQ,CAC7D,GAAG,qBAAqB,GAAG,CAC5B,CAAA;IAED,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACxB,8BAA8B;QAC9B,MAAM,IAAA,WAAI,EACR;iBACW,qBAAqB;;cAExB,EACR;YACE,YAAY,EAAE,IAAI;SACnB,CACF,CAAA;IACH,CAAC;SAAM,IAAI,CAAC,wBAAwB,EAAE,CAAC;QACrC,gCAAgC;QAChC,MAAM,IAAA,WAAI,EAAC,qBAAqB,qBAAqB,EAAE,EAAE;YACvD,YAAY,EAAE,IAAI;SACnB,CAAC,CAAA;IACJ,CAAC;IAED,gBAAO,CAAC,IAAI,CAAC,4BAA4B,qBAAqB,EAAE,CAAC,CAAA;AACnE,CAAC;AAED;;;;;;;;;;;GAWG;AACI,KAAK,UAAU,uBAAuB,CAC3C,SAAiB,EACjB,cAAsB,EACtB,OAAe,EACf,UAAkB,EAClB,SAAiB,EACjB,QAAgB,EAChB,YAAsB,EAAE;IAExB,MAAM,SAAS,EAAE,CAAA;IACjB,MAAM,kBAAkB,EAAE,CAAA;IAE1B,uDAAuD;IACvD,MAAM,OAAO,GAAG,CAAC,GAAG,OAAO,EAAE,EAAE,GAAG,SAAS,CAAC;SACzC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,QAAQ,IAAI,SAAS,IAAI,GAAG,EAAE,CAAC;SAChD,IAAI,CAAC,GAAG,CAAC,CAAA;IAEZ,OAAO,IAAA,WAAI,EACT,uBAAuB,OAAO;WACvB,cAAc;;;;qDAI4B,UAAU;uDACR,SAAS;0CACtB,UAAU;sCACd,SAAS;QACvC,EACJ;QACE,YAAY,EAAE,IAAI;QAClB,WAAW,EAAE;YACX,KAAK,EAAE,SAAS;SACjB;KACF,CACF,CAAA;AACH,CAAC"}