Skip to content

Commit 9776689

Browse files
authored
Porting RunFromZip fix from common (#14572)
1 parent 8df54f7 commit 9776689

File tree

4 files changed

+16
-11
lines changed

4 files changed

+16
-11
lines changed

common-npm-packages/AzureRmDeploy-common/azure-arm-rest/azure-arm-app-service-kudu.ts

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -458,9 +458,13 @@ export class Kudu {
458458
httpRequest.method = 'POST';
459459
httpRequest.uri = this._client.getRequestUri(`/api/zipdeploy`, queryParameters);
460460
httpRequest.body = fs.createReadStream(webPackage);
461-
461+
let requestOptions = new webClient.WebRequestOptions();
462+
//Bydefault webclient.sendRequest retries for [408, 409, 500, 502, 503, 504] as suggested by appservice team for zipdeploy api
463+
//408 and 409 should not be retried as it will never turn into success
464+
requestOptions.retriableStatusCodes = [500, 502, 503, 504];
465+
requestOptions.retryIntervalInSeconds = 5;
462466
try {
463-
let response = await this._client.beginRequest(httpRequest, null, 'application/octet-stream');
467+
let response = await this._client.beginRequest(httpRequest, requestOptions, 'application/octet-stream');
464468
tl.debug(`ZIP Deploy response: ${JSON.stringify(response)}`);
465469
if(response.statusCode == 200) {
466470
tl.debug('Deployment passed');
@@ -633,17 +637,16 @@ export class Kudu {
633637
}
634638

635639
private _getFormattedError(error: any) {
636-
if(error && error.statusCode) {
637-
return `${error.statusMessage} (CODE: ${error.statusCode})`;
638-
}
639-
else if(error && error.message) {
640+
if(error && error.message) {
640641
if(error.statusCode) {
641642
error.message = `${typeof error.message.valueOf() == 'string' ? error.message : error.message.Code + " - " + error.message.Message } (CODE: ${error.statusCode})`
642643
}
643644

644645
return error.message;
645646
}
646-
647+
if(error && error.statusCode) {
648+
return `${error.statusMessage} (CODE: ${error.statusCode})`;
649+
}
647650
return error;
648651
}
649652
}

common-npm-packages/AzureRmDeploy-common/operations/KuduServiceUtility.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -123,13 +123,15 @@ export class KuduServiceUtility {
123123
public async deployUsingRunFromZip(packagePath: string, customMessage?: any) : Promise<void> {
124124
try {
125125
console.log(tl.loc('PackageDeploymentInitiated'));
126-
126+
//zipdeploy async api ref: https://github.com/projectkudu/kudu/wiki/Deploying-from-a-zip-file-or-url#asynchronous-zip-deployment
127127
let queryParameters: Array<string> = [
128+
'isAsync=true',
128129
'deployer=' + VSTS_DEPLOY
129130
];
130131
var deploymentMessage = this._getUpdateHistoryRequest(null, null, customMessage).message;
131132
queryParameters.push('message=' + encodeURIComponent(deploymentMessage));
132-
await this._appServiceKuduService.zipDeploy(packagePath, queryParameters);
133+
let deploymentDetails = await this._appServiceKuduService.zipDeploy(packagePath, queryParameters);
134+
await this._processDeploymentResponse(deploymentDetails);
133135
console.log(tl.loc('PackageDeploymentSuccess'));
134136
console.log("NOTE: Run From Package makes wwwroot read-only, so you will receive an error when writing files to this directory.");
135137
}

common-npm-packages/AzureRmDeploy-common/package-lock.json

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

common-npm-packages/AzureRmDeploy-common/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "azure-pipelines-tasks-azurermdeploycommon",
3-
"version": "2.0.2",
3+
"version": "2.0.3",
44
"description": "Common Lib for Azure ARM REST apis",
55
"repository": {
66
"type": "git",

0 commit comments

Comments
 (0)