Skip to content

Commit 3270794

Browse files
authored
Add retries for Build image in Azure (#577)
* Add retries for building image * move run * Remove line * change
1 parent 1518af7 commit 3270794

File tree

3 files changed

+61
-3
lines changed

3 files changed

+61
-3
lines changed

package-lock.json

Lines changed: 45 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -631,6 +631,7 @@
631631
"dotenv": "^16.0.0",
632632
"fs-extra": "^8.1.0",
633633
"semver": "^7.5.2",
634+
"p-retry": "^4.6.2",
634635
"vscode-nls": "^4.1.1",
635636
"vscode-uri": "^3.0.2"
636637
},

src/commands/image/imageSource/buildImageInAzure/RunStep.ts

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,10 @@
55

66
import { type DockerBuildRequest as AcrDockerBuildRequest } from "@azure/arm-containerregistry";
77
import { AzExtFsExtra, GenericParentTreeItem, activityFailContext, activityFailIcon } from "@microsoft/vscode-azext-utils";
8+
import * as retry from 'p-retry';
89
import * as path from 'path';
910
import { type Progress } from "vscode";
11+
import { ext } from "../../../../extensionVariables";
1012
import { ExecuteActivityOutputStepBase, type ExecuteActivityOutput } from "../../../../utils/activity/ExecuteActivityOutputStepBase";
1113
import { createActivityChildContext } from "../../../../utils/activity/activityUtils";
1214
import { localize } from "../../../../utils/localize";
@@ -27,10 +29,20 @@ export class RunStep extends ExecuteActivityOutputStepBase<BuildImageInAzureImag
2729
dockerFilePath: path.basename(context.dockerfilePath) /* Assume the dockerfile is always in the root of the source */
2830
};
2931

30-
const building: string = localize('buildingImage', 'Building image...');
31-
progress.report({ message: building });
32+
const retries = 3;
33+
await retry(
34+
async (currentAttempt: number): Promise<void> => {
35+
const message: string = currentAttempt === 1 ?
36+
localize('buildingImage', 'Building image...') :
37+
localize('buildingImageAttempt', 'Building image (Attempt {0}/{1})...', currentAttempt, retries + 1);
38+
progress.report({ message: message });
39+
ext.outputChannel.appendLog(message);
3240

33-
context.run = await context.client.registries.beginScheduleRunAndWait(context.resourceGroupName, context.registryName, runRequest);
41+
context.run = await context.client.registries.beginScheduleRunAndWait(context.resourceGroupName, context.registryName, runRequest);
42+
43+
},
44+
{ retries, minTimeout: 2 * 1000 }
45+
);
3446
} finally {
3547
if (await AzExtFsExtra.pathExists(context.tarFilePath)) {
3648
await AzExtFsExtra.deleteResource(context.tarFilePath);

0 commit comments

Comments
 (0)