dank-ai 1.0.28 → 1.0.29
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/lib/docker/manager.js +7 -30
- package/package.json +1 -1
package/lib/docker/manager.js
CHANGED
|
@@ -1155,7 +1155,7 @@ class DockerManager {
|
|
|
1155
1155
|
dockerCmd,
|
|
1156
1156
|
'buildx',
|
|
1157
1157
|
'build',
|
|
1158
|
-
'--platform', 'linux/amd64
|
|
1158
|
+
'--platform', 'linux/amd64',
|
|
1159
1159
|
'--tag', imageName,
|
|
1160
1160
|
'--file', path.join(buildContext, 'Dockerfile'),
|
|
1161
1161
|
'--load',
|
|
@@ -1227,10 +1227,10 @@ class DockerManager {
|
|
|
1227
1227
|
dockerCmd,
|
|
1228
1228
|
'buildx',
|
|
1229
1229
|
'build',
|
|
1230
|
-
'--platform', 'linux/amd64
|
|
1230
|
+
'--platform', 'linux/amd64',
|
|
1231
1231
|
'--tag', imageName,
|
|
1232
1232
|
'--file', path.join(buildContext, 'Dockerfile'),
|
|
1233
|
-
'--load',
|
|
1233
|
+
...(push ? ['--push'] : ['--load']),
|
|
1234
1234
|
...(force ? ['--no-cache'] : []),
|
|
1235
1235
|
buildContext
|
|
1236
1236
|
].join(' ');
|
|
@@ -1238,37 +1238,14 @@ class DockerManager {
|
|
|
1238
1238
|
await this.runCommand(buildCommand, `Production build for ${agent.name}`);
|
|
1239
1239
|
|
|
1240
1240
|
this.logger.info(`Production image '${imageName}' built successfully`);
|
|
1241
|
+
if (push) {
|
|
1242
|
+
this.logger.info(`Successfully pushed image: ${imageName}`);
|
|
1243
|
+
}
|
|
1241
1244
|
|
|
1242
1245
|
// Clean up build context
|
|
1243
1246
|
await fs.remove(buildContext);
|
|
1244
1247
|
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
// Push to registry if requested (use docker CLI for reliability)
|
|
1248
|
-
if (push) {
|
|
1249
|
-
const dockerCmd = await this.resolveDockerCommand();
|
|
1250
|
-
const maxAttempts = 3;
|
|
1251
|
-
for (let attempt = 1; attempt <= maxAttempts; attempt++) {
|
|
1252
|
-
try {
|
|
1253
|
-
this.logger.info(`Pushing image to registry (attempt ${attempt}/${maxAttempts}): ${imageName}`);
|
|
1254
|
-
await this.runCommand(`${dockerCmd} push ${imageName}`, `Docker push ${imageName}`);
|
|
1255
|
-
this.logger.info(`Successfully pushed image: ${imageName}`);
|
|
1256
|
-
pushed = true;
|
|
1257
|
-
break;
|
|
1258
|
-
} catch (pushError) {
|
|
1259
|
-
const msg = pushError?.message || '';
|
|
1260
|
-
this.logger.warn(`Push attempt ${attempt} failed: ${msg}`);
|
|
1261
|
-
if (msg.match(/denied|unauthorized|authentication required/i)) {
|
|
1262
|
-
this.logger.warn("Authentication issue detected. Please ensure you're logged in: docker login <registry>");
|
|
1263
|
-
break; // don't retry auth failures automatically
|
|
1264
|
-
}
|
|
1265
|
-
if (attempt < maxAttempts) {
|
|
1266
|
-
await this.sleep(2000 * attempt);
|
|
1267
|
-
continue;
|
|
1268
|
-
}
|
|
1269
|
-
}
|
|
1270
|
-
}
|
|
1271
|
-
}
|
|
1248
|
+
const pushed = push;
|
|
1272
1249
|
|
|
1273
1250
|
return {
|
|
1274
1251
|
imageName,
|