From e96eb9e1940e660c684998aac43077802506e74e Mon Sep 17 00:00:00 2001 From: Shilpi Rachna Date: Tue, 17 Dec 2024 14:54:49 +0530 Subject: [PATCH 1/2] Copying v5 changes to v4 for easier PR --- .../resources.resjson/en-US/resources.resjson | 2 + .../BuiltInLinuxWebAppDeploymentProvider.ts | 37 ++- .../operations/KuduServiceUtility.ts | 47 ++- .../operations/TaskParameters.ts | 4 + .../package-lock.json | 305 ++++++++++-------- Tasks/AzureRmWebAppDeploymentV4/package.json | 2 +- Tasks/AzureRmWebAppDeploymentV4/task.json | 6 +- Tasks/AzureRmWebAppDeploymentV4/task.loc.json | 6 +- 8 files changed, 255 insertions(+), 154 deletions(-) diff --git a/Tasks/AzureRmWebAppDeploymentV4/Strings/resources.resjson/en-US/resources.resjson b/Tasks/AzureRmWebAppDeploymentV4/Strings/resources.resjson/en-US/resources.resjson index dfb1c49dc866..212bf25b4d3d 100644 --- a/Tasks/AzureRmWebAppDeploymentV4/Strings/resources.resjson/en-US/resources.resjson +++ b/Tasks/AzureRmWebAppDeploymentV4/Strings/resources.resjson/en-US/resources.resjson @@ -204,6 +204,8 @@ "loc.messages.MultipleResourceGroupFoundForAppService": "Multiple resource group found for App Service '%s'.", "loc.messages.PackageDeploymentUsingZipDeployFailed": "Package deployment using ZIP Deploy failed. Refer logs for more details.", "loc.messages.PackageDeploymentInitiated": "Package deployment using ZIP Deploy initiated.", + "loc.messages.PackageDeploymentInitiatedWithOneDeploy": "Package deployment using One Deploy initiated.", + "loc.messages.OneDeployWithIncrementalDeploymentOption": "Deploying using incremental deployment.", "loc.messages.WarPackageDeploymentInitiated": "Package deployment using WAR Deploy initiated.", "loc.messages.FailedToGetDeploymentLogs": "Failed to get deployment logs. Error: %s", "loc.messages.GoExeNameNotPresent": "Go exe name is not present", diff --git a/Tasks/AzureRmWebAppDeploymentV4/deploymentProvider/BuiltInLinuxWebAppDeploymentProvider.ts b/Tasks/AzureRmWebAppDeploymentV4/deploymentProvider/BuiltInLinuxWebAppDeploymentProvider.ts index 152cf585c09e..ad4f30290587 100644 --- a/Tasks/AzureRmWebAppDeploymentV4/deploymentProvider/BuiltInLinuxWebAppDeploymentProvider.ts +++ b/Tasks/AzureRmWebAppDeploymentV4/deploymentProvider/BuiltInLinuxWebAppDeploymentProvider.ts @@ -3,6 +3,7 @@ import tl = require('azure-pipelines-task-lib/task'); import { PackageType } from 'azure-pipelines-tasks-webdeployment-common/packageUtility'; import path = require('path'); import * as ParameterParser from 'azure-pipelines-tasks-webdeployment-common/ParameterParserUtility'; +import { DeploymentType } from '../operations/TaskParameters'; var webCommonUtility = require('azure-pipelines-tasks-webdeployment-common/utility.js'); var deployUtility = require('azure-pipelines-tasks-webdeployment-common/utility.js'); @@ -52,19 +53,37 @@ export class BuiltInLinuxWebAppDeploymentProvider extends AzureRmWebAppDeploymen if(!isNewValueUpdated) { await this.kuduServiceUtility.warmpUp(); } + + var zipDeploy: boolean = this.taskParams.DeploymentType === DeploymentType.zipDeploy; + var isClean: boolean = !this.taskParams.AdditionalArguments.includes("-clean:false"); + if (!zipDeploy && !isClean) { + console.log(tl.loc('OneDeployWithIncrementalDeploymentOption')); + } switch(packageType){ case PackageType.folder: let tempPackagePath = deployUtility.generateTemporaryFolderOrZipPath(tl.getVariable('AGENT.TEMPDIRECTORY'), false); let archivedWebPackage = await zipUtility.archiveFolder(this.taskParams.Package.getPath(), "", tempPackagePath); tl.debug("Compressed folder into zip " + archivedWebPackage); - this.zipDeploymentID = await this.kuduServiceUtility.deployUsingZipDeploy(archivedWebPackage, this.taskParams.TakeAppOfflineFlag, - { slotName: this.appService.getSlot() }); + if (zipDeploy) { + this.zipDeploymentID = await this.kuduServiceUtility.deployUsingZipDeploy(archivedWebPackage, this.taskParams.TakeAppOfflineFlag, + { slotName: this.appService.getSlot() }, true); + } + else { + this.zipDeploymentID = await this.kuduServiceUtility.deployUsingOneDeploy(archivedWebPackage, isClean, this.taskParams.TakeAppOfflineFlag, + { slotName: this.appService.getSlot() }, 'Zip', true); + } break; case PackageType.zip: - this.zipDeploymentID = await this.kuduServiceUtility.deployUsingZipDeploy(this.taskParams.Package.getPath(), this.taskParams.TakeAppOfflineFlag, - { slotName: this.appService.getSlot() }); + if (zipDeploy) { + this.zipDeploymentID = await this.kuduServiceUtility.deployUsingZipDeploy(this.taskParams.Package.getPath(), this.taskParams.TakeAppOfflineFlag, + { slotName: this.appService.getSlot() }, true); + } + else { + this.zipDeploymentID = await this.kuduServiceUtility.deployUsingOneDeploy(this.taskParams.Package.getPath(), isClean, this.taskParams.TakeAppOfflineFlag, + { slotName: this.appService.getSlot() }, 'Zip', true); + } break; @@ -74,8 +93,14 @@ export class BuiltInLinuxWebAppDeploymentProvider extends AzureRmWebAppDeploymen var output = await webCommonUtility.archiveFolderForDeployment(false, folderPath); var webPackage = output.webDeployPkg; tl.debug("Initiated deployment via kudu service for webapp jar package : "+ webPackage); - this.zipDeploymentID = await this.kuduServiceUtility.deployUsingZipDeploy(webPackage, this.taskParams.TakeAppOfflineFlag, - { slotName: this.appService.getSlot() }); + if (zipDeploy) { + this.zipDeploymentID = await this.kuduServiceUtility.deployUsingZipDeploy(webPackage, this.taskParams.TakeAppOfflineFlag, + { slotName: this.appService.getSlot() }, true); + } + else { + this.zipDeploymentID = await this.kuduServiceUtility.deployUsingOneDeploy(webPackage, isClean, this.taskParams.TakeAppOfflineFlag, + { slotName: this.appService.getSlot() }, 'Jar', true); + } break; diff --git a/Tasks/AzureRmWebAppDeploymentV4/operations/KuduServiceUtility.ts b/Tasks/AzureRmWebAppDeploymentV4/operations/KuduServiceUtility.ts index 7cc3560e54a5..7d7ae3c07d8b 100644 --- a/Tasks/AzureRmWebAppDeploymentV4/operations/KuduServiceUtility.ts +++ b/Tasks/AzureRmWebAppDeploymentV4/operations/KuduServiceUtility.ts @@ -16,6 +16,7 @@ const physicalRootPath: string = '/site/wwwroot'; const deploymentFolder: string = 'site/deployments'; const manifestFileName: string = 'manifest'; const VSTS_ZIP_DEPLOY: string = 'VSTS_ZIP_DEPLOY'; +const VSTS_ONE_DEPLOY: string = 'VSTS_ONE_DEPLOY'; const VSTS_DEPLOY: string = 'VSTS'; export class KuduServiceUtility { @@ -158,7 +159,7 @@ export class KuduServiceUtility { } } - public async deployUsingZipDeploy(packagePath: string, appOffline?: boolean, customMessage?: any): Promise { + public async deployUsingZipDeploy(packagePath: string, appOffline?: boolean, customMessage?: any, addChecksumHeader?: boolean): Promise { try { console.log(tl.loc('PackageDeploymentInitiated')); @@ -176,7 +177,47 @@ export class KuduServiceUtility { var deploymentMessage = this._getUpdateHistoryRequest(true, null, customMessage).message; queryParameters.push('message=' + encodeURIComponent(deploymentMessage)); - let deploymentDetails = await this._appServiceKuduService.zipDeploy(packagePath, queryParameters); + let deploymentDetails = await this._appServiceKuduService.zipDeploy(packagePath, queryParameters, addChecksumHeader); + + await this._processDeploymentResponse(deploymentDetails); + if(appOffline) { + await this._appOfflineKuduService(physicalRootPath, false); + } + + console.log(tl.loc('PackageDeploymentSuccess')); + return deploymentDetails.id; + } + catch(error) { + tl.error(tl.loc('PackageDeploymentFailed')); + throw Error(error); + } + } + + public async deployUsingOneDeploy(packagePath: string, isClean: boolean, appOffline?: boolean, customMessage?: any, packageType?:string, addChecksumHeader?: boolean): Promise { + try { + console.log(tl.loc('PackageDeploymentInitiatedWithOneDeploy')); + + if(appOffline) { + await this._appOfflineKuduService(physicalRootPath, true); + tl.debug('Wait for 5 seconds for app_offline to take effect'); + await webClient.sleepFor(5); + } + + if (!packageType){ + packageType = 'Zip' + } + + let queryParameters: Array = [ + 'async=true', + 'deployer=' + VSTS_ONE_DEPLOY, + 'type=' + packageType, + 'clean=' + isClean + ]; + + var deploymentMessage = this._getUpdateHistoryRequest(true, null, customMessage).message; + queryParameters.push('message=' + encodeURIComponent(deploymentMessage)); + + let deploymentDetails = await this._appServiceKuduService.oneDeploy(packagePath, queryParameters, addChecksumHeader); await this._processDeploymentResponse(deploymentDetails); if(appOffline) { @@ -195,7 +236,7 @@ export class KuduServiceUtility { public async deployUsingRunFromZip(packagePath: string, customMessage?: any) : Promise { try { console.log(tl.loc('PackageDeploymentInitiated')); - + let queryParameters: Array = [ 'deployer=' + VSTS_DEPLOY ]; diff --git a/Tasks/AzureRmWebAppDeploymentV4/operations/TaskParameters.ts b/Tasks/AzureRmWebAppDeploymentV4/operations/TaskParameters.ts index a00b52ee0b6f..94a96851e707 100644 --- a/Tasks/AzureRmWebAppDeploymentV4/operations/TaskParameters.ts +++ b/Tasks/AzureRmWebAppDeploymentV4/operations/TaskParameters.ts @@ -109,6 +109,10 @@ export class TaskParametersUtility { taskParameters.AdditionalArguments = tl.getInput('AdditionalArguments', false) || ''; } } + else if(taskParameters.isLinuxApp) { + taskParameters.DeploymentType = this.getDeploymentType(tl.getInput('DeploymentType', false)); + taskParameters.AdditionalArguments = tl.getInput('AdditionalArguments', false) || ''; + } else { // Retry Attempt is passed by default taskParameters.AdditionalArguments = '-retryAttempts:6 -retryInterval:10000'; diff --git a/Tasks/AzureRmWebAppDeploymentV4/package-lock.json b/Tasks/AzureRmWebAppDeploymentV4/package-lock.json index 7b1f4d12cb9d..796c15e3892a 100644 --- a/Tasks/AzureRmWebAppDeploymentV4/package-lock.json +++ b/Tasks/AzureRmWebAppDeploymentV4/package-lock.json @@ -17,7 +17,7 @@ "@types/jsonwebtoken": { "version": "8.5.9", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@types/jsonwebtoken/-/jsonwebtoken-8.5.9.tgz", - "integrity": "sha512-272FMnFGzAVMGtu9tkr29hRL6bZj4Zs1KZNeHLnKqAvp06tAIcarTMwOh8/8bz4FmKRcMxZhZNeUAQsNLoiPhg==", + "integrity": "sha1-LAZOywsxKNg30nZKoLEXsP9uRYY=", "requires": { "@types/node": "*" } @@ -101,18 +101,18 @@ "async-mutex": { "version": "0.4.1", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/async-mutex/-/async-mutex-0.4.1.tgz", - "integrity": "sha512-WfoBo4E/TbCX1G95XTjbWTE3X2XLG0m1Xbv2cwOtuPdyH9CZvnaA5nCt1ucjaKEgW2A5IF71hxrRhr83Je5xjA==", + "integrity": "sha1-vM9VuW8rr435DteYy1VEofbuTCw=", "requires": { "tslib": "^2.4.0" } }, "azure-devops-node-api": { - "version": "14.0.2", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/azure-devops-node-api/-/azure-devops-node-api-14.0.2.tgz", - "integrity": "sha512-TwjAEnWnOSZ2oypkDyqppgvJw43qArEfPiJtEWLL3NBgdvAuOuB0xgFz/Eiz4H6Dk0Yv52wCodZxtZvAMhJXwQ==", + "version": "14.1.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/azure-devops-node-api/-/azure-devops-node-api-14.1.0.tgz", + "integrity": "sha1-7FOT3p+hRjmd6qtpBOQdoD7c4YA=", "requires": { "tunnel": "0.0.6", - "typed-rest-client": "^2.0.1" + "typed-rest-client": "2.1.0" } }, "azure-pipelines-task-lib": { @@ -138,9 +138,9 @@ } }, "azure-pipelines-tasks-azure-arm-rest": { - "version": "3.246.4", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/azure-pipelines-tasks-azure-arm-rest/-/azure-pipelines-tasks-azure-arm-rest-3.246.4.tgz", - "integrity": "sha512-SXpvlnKUB5J73k1L7KpYDvGE+nZLZxIeXyjJaSilKuTm2RMcFZqzahzZGyfHMXSyufusDMT/Msg1lByYMMDT1w==", + "version": "3.251.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/azure-pipelines-tasks-azure-arm-rest/-/azure-pipelines-tasks-azure-arm-rest-3.251.0.tgz", + "integrity": "sha1-9989r2zWGXLLREIAQHuYci00+EM=", "requires": { "@types/jsonwebtoken": "^8.5.8", "@types/mocha": "^5.2.7", @@ -162,53 +162,31 @@ "@types/node": { "version": "10.17.60", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@types/node/-/node-10.17.60.tgz", - "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==" + "integrity": "sha1-NfPWIT2u2V2n8Pc+dbzGmA6QWXs=" }, "@types/q": { "version": "1.5.4", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@types/q/-/q-1.5.4.tgz", - "integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==" + "integrity": "sha1-FZJUFOCtLNdlv+9YhC9+JqesyyQ=" }, "agent-base": { "version": "5.1.1", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/agent-base/-/agent-base-5.1.1.tgz", - "integrity": "sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g==" + "integrity": "sha1-6Ps/JClZ20TWO+Zl23qOc5U3oyw=" }, "https-proxy-agent": { "version": "4.0.0", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz", - "integrity": "sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg==", + "integrity": "sha1-cCtx+1UgoTKmbeH2dUHZ5iFU2Cs=", "requires": { "agent-base": "5", "debug": "4" } }, - "msalv2": { - "version": "npm:@azure/msal-node@2.15.0", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@azure/msal-node/-/msal-node-2.15.0.tgz", - "integrity": "sha1-UL+OaSpmVgJ8Bzp12HeopHiq/f0=", - "requires": { - "@azure/msal-common": "14.15.0", - "jsonwebtoken": "^9.0.0", - "uuid": "^8.3.0" - }, - "dependencies": { - "@azure/msal-common": { - "version": "14.15.0", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@azure/msal-common/-/msal-common-14.15.0.tgz", - "integrity": "sha1-DiesC7iP4QD0+NFgW2TVwmhjalU=" - } - } - }, "q": { "version": "1.5.1", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/q/-/q-1.5.1.tgz", - "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==" - }, - "uuid": { - "version": "8.3.2", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha1-gNW1ztJxu5r2xEXyGhoExgbO++I=" + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" } } }, @@ -310,23 +288,29 @@ "buffer-equal-constant-time": { "version": "1.0.1", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" + "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" }, "buffer-fill": { "version": "1.0.0", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/buffer-fill/-/buffer-fill-1.0.0.tgz", "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==" }, - "call-bind": { - "version": "1.0.7", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "call-bind-apply-helpers": { + "version": "1.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz", + "integrity": "sha1-MuWJLmNhspsLVFum93YzeNrKKEA=", "requires": { - "es-define-property": "^1.0.0", "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" + "function-bind": "^1.1.2" + } + }, + "call-bound": { + "version": "1.0.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/call-bound/-/call-bound-1.0.3.tgz", + "integrity": "sha1-Qc/QMrWT45F2pxUzq084SqBP1oE=", + "requires": { + "call-bind-apply-helpers": "^1.0.1", + "get-intrinsic": "^1.2.6" } }, "compress-commons": { @@ -384,29 +368,29 @@ "ms": "2.1.2" } }, - "define-data-property": { - "version": "1.1.4", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "requires": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - } - }, "des.js": { "version": "1.1.0", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/des.js/-/des.js-1.1.0.tgz", - "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==", + "integrity": "sha1-HTf1dm87v/Tuljjocah2jBc7gdo=", "requires": { "inherits": "^2.0.1", "minimalistic-assert": "^1.0.0" } }, + "dunder-proto": { + "version": "1.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/dunder-proto/-/dunder-proto-1.0.0.tgz", + "integrity": "sha1-wvzgmLPI+ImVVJBfQ3e22F2rqoA=", + "requires": { + "call-bind-apply-helpers": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + } + }, "ecdsa-sig-formatter": { "version": "1.0.11", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", - "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "integrity": "sha1-rg8PothQRe8UqBfao86azQSJ5b8=", "requires": { "safe-buffer": "^5.0.1" } @@ -420,17 +404,22 @@ } }, "es-define-property": { - "version": "1.0.0", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", - "requires": { - "get-intrinsic": "^1.2.4" - } + "version": "1.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha1-mD6y+aZyTpMD9hrd8BHHLgngsPo=" }, "es-errors": { "version": "1.3.0", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==" + "integrity": "sha1-BfdaJdq5jk+x3NXhRywFRtUFfI8=" + }, + "es-object-atoms": { + "version": "1.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha1-3bVc1HrC4kBwEmC8Ko4x7LZD2UE=", + "requires": { + "es-errors": "^1.3.0" + } }, "file-uri-to-path": { "version": "1.0.0", @@ -458,15 +447,20 @@ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" }, "get-intrinsic": { - "version": "1.2.4", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "version": "1.2.6", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/get-intrinsic/-/get-intrinsic-1.2.6.tgz", + "integrity": "sha1-Q9090Oe0m4Ky38rRDcgkv3/CZdU=", "requires": { + "call-bind-apply-helpers": "^1.0.1", + "dunder-proto": "^1.0.0", + "es-define-property": "^1.0.1", "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.0.0" } }, "glob": { @@ -493,35 +487,19 @@ } }, "gopd": { - "version": "1.0.1", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "requires": { - "get-intrinsic": "^1.1.3" - } + "version": "1.2.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha1-ifVrghe9vIgCvSmd9tfxCB1+UaE=" }, "graceful-fs": { "version": "4.2.11", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/graceful-fs/-/graceful-fs-4.2.11.tgz", "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" }, - "has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "requires": { - "es-define-property": "^1.0.0" - } - }, - "has-proto": { - "version": "1.0.3", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==" - }, "has-symbols": { - "version": "1.0.3", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + "version": "1.1.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha1-/JxqeDoISVHQuXH+EBjegTcHozg=" }, "hasown": { "version": "2.0.2", @@ -580,12 +558,12 @@ "js-md4": { "version": "0.3.2", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/js-md4/-/js-md4-0.3.2.tgz", - "integrity": "sha512-/GDnfQYsltsjRswQhN9fhv3EMw2sCpUdrdxyWDOUK7eyD++r3gRhzgiQgc/x4MAv2i1iuQ4lxO5mvqM3vj4bwA==" + "integrity": "sha1-zTs9wEWwxARVbIHdtXVsI+WdfPU=" }, "jsonwebtoken": { "version": "9.0.2", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", - "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", + "integrity": "sha1-Zf+R9KvvF4RpfUCVK7GZjFBMqvM=", "requires": { "jws": "^3.2.2", "lodash.includes": "^4.3.0", @@ -602,14 +580,14 @@ "semver": { "version": "7.6.3", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==" + "integrity": "sha1-mA97VVC8F1+03AlAMIVif56zMUM=" } } }, "jwa": { "version": "1.4.1", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/jwa/-/jwa-1.4.1.tgz", - "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "integrity": "sha1-dDwymFy56YZVUw1TZBtmyGRbA5o=", "requires": { "buffer-equal-constant-time": "1.0.1", "ecdsa-sig-formatter": "1.0.11", @@ -619,7 +597,7 @@ "jws": { "version": "3.2.2", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/jws/-/jws-3.2.2.tgz", - "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "integrity": "sha1-ABCZ82OUaMlBQADpmZX6UvtHgwQ=", "requires": { "jwa": "^1.4.1", "safe-buffer": "^5.0.1" @@ -641,37 +619,37 @@ "lodash.includes": { "version": "4.3.0", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/lodash.includes/-/lodash.includes-4.3.0.tgz", - "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==" + "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=" }, "lodash.isboolean": { "version": "3.0.3", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", - "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==" + "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=" }, "lodash.isinteger": { "version": "4.0.4", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", - "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==" + "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=" }, "lodash.isnumber": { "version": "3.0.3", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", - "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==" + "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=" }, "lodash.isplainobject": { "version": "4.0.6", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" }, "lodash.isstring": { "version": "4.0.1", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==" + "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" }, "lodash.once": { "version": "4.1.1", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/lodash.once/-/lodash.once-4.1.1.tgz", - "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" + "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=" }, "ltx": { "version": "2.8.0", @@ -681,6 +659,11 @@ "inherits": "^2.0.1" } }, + "math-intrinsics": { + "version": "1.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/math-intrinsics/-/math-intrinsics-1.0.0.tgz", + "integrity": "sha1-TgS/h8hapR6Q0HjawiUrTrUmCBc=" + }, "mime-db": { "version": "1.52.0", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/mime-db/-/mime-db-1.52.0.tgz", @@ -697,7 +680,7 @@ "minimalistic-assert": { "version": "1.0.1", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + "integrity": "sha1-LhlN4ERibUoQ5/f7wAznPoPk1cc=" }, "minimatch": { "version": "3.0.5", @@ -734,6 +717,28 @@ } } }, + "msalv2": { + "version": "npm:@azure/msal-node@2.16.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@azure/msal-node/-/msal-node-2.16.2.tgz", + "integrity": "sha1-Prdo02iD6m+ak5wLW0Z7UY54//w=", + "requires": { + "@azure/msal-common": "14.16.0", + "jsonwebtoken": "^9.0.0", + "uuid": "^8.3.0" + }, + "dependencies": { + "@azure/msal-common": { + "version": "14.16.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@azure/msal-common/-/msal-common-14.16.0.tgz", + "integrity": "sha1-80cPyux4jb5QhZlSzUmTQL2iPXo=" + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha1-gNW1ztJxu5r2xEXyGhoExgbO++I=" + } + } + }, "node-addon-api": { "version": "1.7.2", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/node-addon-api/-/node-addon-api-1.7.2.tgz", @@ -742,7 +747,7 @@ "node-fetch": { "version": "2.7.0", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "integrity": "sha1-0PD6bj4twdJ+/NitmdVQvalNGH0=", "requires": { "whatwg-url": "^5.0.0" } @@ -772,9 +777,9 @@ } }, "object-inspect": { - "version": "1.13.2", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/object-inspect/-/object-inspect-1.13.2.tgz", - "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==" + "version": "1.13.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/object-inspect/-/object-inspect-1.13.3.tgz", + "integrity": "sha1-8UwYPeURMCQ9bRiuFJN1/1DqSIo=" }, "once": { "version": "1.4.0", @@ -805,9 +810,9 @@ "integrity": "sha512-/CdEdaw49VZVmyIDGUQKDDT53c7qBkO6g5CefWz91Ae+l4+cRtcDYwMTXh6me4O8TMldeGHG3N2Bl84V78Ywbg==" }, "qs": { - "version": "6.13.0", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/qs/-/qs-6.13.0.tgz", - "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "version": "6.13.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/qs/-/qs-6.13.1.tgz", + "integrity": "sha1-POX8cr06gXG4XJm5PGXdILfRsW4=", "requires": { "side-channel": "^1.0.6" } @@ -879,19 +884,6 @@ "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/semver/-/semver-5.7.2.tgz", "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==" }, - "set-function-length": { - "version": "1.2.2", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "requires": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - } - }, "shelljs": { "version": "0.8.5", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/shelljs/-/shelljs-0.8.5.tgz", @@ -903,14 +895,47 @@ } }, "side-channel": { - "version": "1.0.6", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/side-channel/-/side-channel-1.0.6.tgz", - "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "version": "1.1.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha1-w/z/nE2pMnhIczNeyXZfqU/2a8k=", "requires": { - "call-bind": "^1.0.7", "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "object-inspect": "^1.13.1" + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + } + }, + "side-channel-list": { + "version": "1.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha1-EMtZhCYxFdO3oOM2WR4pCoMK+K0=", + "requires": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + } + }, + "side-channel-map": { + "version": "1.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha1-1rtrN5Asb+9RdOX1M/q0xzKib0I=", + "requires": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + } + }, + "side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha1-Ed2hnVNo5Azp7CvcH7DsvAeQ7Oo=", + "requires": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" } }, "string_decoder": { @@ -955,7 +980,7 @@ "tr46": { "version": "0.0.3", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" }, "truncate-utf8-bytes": { "version": "1.0.2", @@ -966,19 +991,19 @@ } }, "tslib": { - "version": "2.7.0", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" + "version": "2.8.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha1-YS7+TtI11Wfoq6Xypfq3AoCt6D8=" }, "tunnel": { "version": "0.0.6", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/tunnel/-/tunnel-0.0.6.tgz", - "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==" + "integrity": "sha1-cvExSzSlsZLbASMk3yzFh8pH+Sw=" }, "typed-rest-client": { "version": "2.1.0", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/typed-rest-client/-/typed-rest-client-2.1.0.tgz", - "integrity": "sha512-Nel9aPbgSzRxfs1+4GoSB4wexCF+4Axlk7OSGVQCMa+4fWcyxIsN/YNmkp0xTT2iQzMD98h8yFLav/cNaULmRA==", + "integrity": "sha1-8Exs/KvGASwtA2uAbqrEVWBPFZg=", "requires": { "des.js": "^1.1.0", "js-md4": "^0.3.2", @@ -996,7 +1021,7 @@ "underscore": { "version": "1.13.7", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/underscore/-/underscore-1.13.7.tgz", - "integrity": "sha512-GMXzWtsc57XAtguZgaQViUOzs0KTkk8ojr3/xAxXLITqf/3EMwxC0inyETfDFjH/Krbhuep0HNbbjI9i/q3F3g==" + "integrity": "sha1-lw4zljr5p92iKPF+voOZ5fvmOhA=" }, "utf8-byte-length": { "version": "1.0.5", @@ -1016,12 +1041,12 @@ "webidl-conversions": { "version": "3.0.1", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" }, "whatwg-url": { "version": "5.0.0", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", "requires": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" diff --git a/Tasks/AzureRmWebAppDeploymentV4/package.json b/Tasks/AzureRmWebAppDeploymentV4/package.json index fff559535dca..d6b02956a212 100644 --- a/Tasks/AzureRmWebAppDeploymentV4/package.json +++ b/Tasks/AzureRmWebAppDeploymentV4/package.json @@ -22,7 +22,7 @@ "@types/q": "1.0.7", "agent-base": "^6.0.2", "azure-pipelines-task-lib": "4.11.0", - "azure-pipelines-tasks-azure-arm-rest": "^3.246.4", + "azure-pipelines-tasks-azure-arm-rest": "^3.251.0", "azure-pipelines-tasks-webdeployment-common": "4.243.1", "moment": "^2.29.4", "q": "1.4.1", diff --git a/Tasks/AzureRmWebAppDeploymentV4/task.json b/Tasks/AzureRmWebAppDeploymentV4/task.json index 12903c3e3491..56021feb41e9 100644 --- a/Tasks/AzureRmWebAppDeploymentV4/task.json +++ b/Tasks/AzureRmWebAppDeploymentV4/task.json @@ -16,8 +16,8 @@ ], "author": "Microsoft Corporation", "version": { - "Major": 4, - "Minor": 247, + "Major": 5, + "Minor": 249, "Patch": 0 }, "releaseNotes": "What's new in version 4.*
Supports Zip Deploy, Run From Package, War Deploy [Details here](https://aka.ms/appServiceDeploymentMethods)
Supports App Service Environments
Improved UI for discovering different App service types supported by the task
Run From Package is the preferred deployment method, which makes files in wwwroot folder read-only
Click [here](https://aka.ms/azurermwebdeployreadme) for more information.", @@ -634,6 +634,8 @@ "MultipleResourceGroupFoundForAppService": "Multiple resource group found for App Service '%s'.", "PackageDeploymentUsingZipDeployFailed": "Package deployment using ZIP Deploy failed. Refer logs for more details.", "PackageDeploymentInitiated": "Package deployment using ZIP Deploy initiated.", + "PackageDeploymentInitiatedWithOneDeploy": "Package deployment using One Deploy initiated.", + "OneDeployWithIncrementalDeploymentOption": "Deploying using incremental deployment.", "WarPackageDeploymentInitiated": "Package deployment using WAR Deploy initiated.", "FailedToGetDeploymentLogs": "Failed to get deployment logs. Error: %s", "GoExeNameNotPresent": "Go exe name is not present", diff --git a/Tasks/AzureRmWebAppDeploymentV4/task.loc.json b/Tasks/AzureRmWebAppDeploymentV4/task.loc.json index 2b8f59691030..bc56315a4685 100644 --- a/Tasks/AzureRmWebAppDeploymentV4/task.loc.json +++ b/Tasks/AzureRmWebAppDeploymentV4/task.loc.json @@ -16,8 +16,8 @@ ], "author": "Microsoft Corporation", "version": { - "Major": 4, - "Minor": 247, + "Major": 5, + "Minor": 249, "Patch": 0 }, "releaseNotes": "ms-resource:loc.releaseNotes", @@ -634,6 +634,8 @@ "MultipleResourceGroupFoundForAppService": "ms-resource:loc.messages.MultipleResourceGroupFoundForAppService", "PackageDeploymentUsingZipDeployFailed": "ms-resource:loc.messages.PackageDeploymentUsingZipDeployFailed", "PackageDeploymentInitiated": "ms-resource:loc.messages.PackageDeploymentInitiated", + "PackageDeploymentInitiatedWithOneDeploy": "ms-resource:loc.messages.PackageDeploymentInitiatedWithOneDeploy", + "OneDeployWithIncrementalDeploymentOption": "ms-resource:loc.messages.OneDeployWithIncrementalDeploymentOption", "WarPackageDeploymentInitiated": "ms-resource:loc.messages.WarPackageDeploymentInitiated", "FailedToGetDeploymentLogs": "ms-resource:loc.messages.FailedToGetDeploymentLogs", "GoExeNameNotPresent": "ms-resource:loc.messages.GoExeNameNotPresent", From 9eb10155c3a003d023028dd11eca05437f61abb9 Mon Sep 17 00:00:00 2001 From: Shilpi Rachna Date: Mon, 23 Dec 2024 00:59:30 +0530 Subject: [PATCH 2/2] Applying recent commit --- .../resources.resjson/en-US/resources.resjson | 5 +++ .../BuiltInLinuxWebAppDeploymentProvider.ts | 6 ++-- .../operations/TaskParameters.ts | 18 +++++++++-- Tasks/AzureRmWebAppDeploymentV4/task.json | 31 ++++++++++++++++++- Tasks/AzureRmWebAppDeploymentV4/task.loc.json | 31 ++++++++++++++++++- 5 files changed, 84 insertions(+), 7 deletions(-) diff --git a/Tasks/AzureRmWebAppDeploymentV4/Strings/resources.resjson/en-US/resources.resjson b/Tasks/AzureRmWebAppDeploymentV4/Strings/resources.resjson/en-US/resources.resjson index 212bf25b4d3d..4214956f7665 100644 --- a/Tasks/AzureRmWebAppDeploymentV4/Strings/resources.resjson/en-US/resources.resjson +++ b/Tasks/AzureRmWebAppDeploymentV4/Strings/resources.resjson/en-US/resources.resjson @@ -6,6 +6,7 @@ "loc.releaseNotes": "What's new in version 4.*
Supports Zip Deploy, Run From Package, War Deploy [Details here](https://aka.ms/appServiceDeploymentMethods)
Supports App Service Environments
Improved UI for discovering different App service types supported by the task
Run From Package is the preferred deployment method, which makes files in wwwroot folder read-only
Click [here](https://aka.ms/azurermwebdeployreadme) for more information.", "loc.group.displayName.FileTransformsAndVariableSubstitution": "File Transforms & Variable Substitution Options", "loc.group.displayName.AdditionalDeploymentOptions": "Additional Deployment Options", + "loc.group.displayName.AdditionalDeploymentOptionsLinux": "Additional Deployment Options", "loc.group.displayName.PostDeploymentAction": "Post Deployment Action", "loc.group.displayName.ApplicationAndConfigurationSettings": "Application and Configuration Settings", "loc.input.label.ConnectionType": "Connection type", @@ -74,6 +75,10 @@ "loc.input.help.XmlVariableSubstitution": "Variables defined in the build or release pipelines will be matched against the 'key' or 'name' entries in the appSettings, applicationSettings, and connectionStrings sections of any config file and parameters.xml. Variable Substitution is run after config transforms.

Note: If same variables are defined in the release pipeline and in the environment, then the environment variables will supersede the release pipeline variables.
", "loc.input.label.JSONFiles": "JSON variable substitution", "loc.input.help.JSONFiles": "Provide new line separated list of JSON files to substitute the variable values. Files names are to be provided relative to the root folder.
To substitute JSON variables that are nested or hierarchical, specify them using JSONPath expressions.

For example, to replace the value of ‘ConnectionString’ in the sample below, you need to define a variable as ‘Data.DefaultConnection.ConnectionString’ in the build or release pipeline (or release pipeline's environment).
{
  \"Data\": {
    \"DefaultConnection\": {
      \"ConnectionString\": \"Server=(localdb)\\SQLEXPRESS;Database=MyDB;Trusted_Connection=True\"
    }
  }
}
Variable Substitution is run after configuration transforms.

Note: pipeline variables are excluded in substitution.", + "loc.input.label.DeploymentTypeLinux": "Deployment method", + "loc.input.help.DeploymentTypeLinux": "Choose the deployment method for the app.", + "loc.input.label.CleanDeploymentFlag": "Enable clean deployment", + "loc.input.help.CleanDeploymentFlag": "Deployment mode for complete sync (clean) deployment", "loc.messages.Invalidwebapppackageorfolderpathprovided": "Invalid App Service package or folder path provided: %s", "loc.messages.SetParamFilenotfound0": "Set parameters file not found: %s", "loc.messages.XDTTransformationsappliedsuccessfully": "XML Transformations applied successfully", diff --git a/Tasks/AzureRmWebAppDeploymentV4/deploymentProvider/BuiltInLinuxWebAppDeploymentProvider.ts b/Tasks/AzureRmWebAppDeploymentV4/deploymentProvider/BuiltInLinuxWebAppDeploymentProvider.ts index ad4f30290587..80c19ea78209 100644 --- a/Tasks/AzureRmWebAppDeploymentV4/deploymentProvider/BuiltInLinuxWebAppDeploymentProvider.ts +++ b/Tasks/AzureRmWebAppDeploymentV4/deploymentProvider/BuiltInLinuxWebAppDeploymentProvider.ts @@ -3,7 +3,7 @@ import tl = require('azure-pipelines-task-lib/task'); import { PackageType } from 'azure-pipelines-tasks-webdeployment-common/packageUtility'; import path = require('path'); import * as ParameterParser from 'azure-pipelines-tasks-webdeployment-common/ParameterParserUtility'; -import { DeploymentType } from '../operations/TaskParameters'; +import { DeploymentTypeLinux } from '../operations/TaskParameters'; var webCommonUtility = require('azure-pipelines-tasks-webdeployment-common/utility.js'); var deployUtility = require('azure-pipelines-tasks-webdeployment-common/utility.js'); @@ -54,8 +54,8 @@ export class BuiltInLinuxWebAppDeploymentProvider extends AzureRmWebAppDeploymen await this.kuduServiceUtility.warmpUp(); } - var zipDeploy: boolean = this.taskParams.DeploymentType === DeploymentType.zipDeploy; - var isClean: boolean = !this.taskParams.AdditionalArguments.includes("-clean:false"); + var zipDeploy: boolean = this.taskParams.DeploymentTypeLinux === DeploymentTypeLinux.zipDeploy; + var isClean: boolean = this.taskParams.CleanDeploymentFlag; if (!zipDeploy && !isClean) { console.log(tl.loc('OneDeployWithIncrementalDeploymentOption')); } diff --git a/Tasks/AzureRmWebAppDeploymentV4/operations/TaskParameters.ts b/Tasks/AzureRmWebAppDeploymentV4/operations/TaskParameters.ts index 94a96851e707..a0efa0c2f176 100644 --- a/Tasks/AzureRmWebAppDeploymentV4/operations/TaskParameters.ts +++ b/Tasks/AzureRmWebAppDeploymentV4/operations/TaskParameters.ts @@ -10,6 +10,11 @@ export enum DeploymentType { warDeploy } +export enum DeploymentTypeLinux { + oneDeploy, + zipDeploy +} + type AdditionalArgumentsTelemetry = { deploymentMethod: DeploymentType; doubleQuoteCount: number; @@ -110,8 +115,8 @@ export class TaskParametersUtility { } } else if(taskParameters.isLinuxApp) { - taskParameters.DeploymentType = this.getDeploymentType(tl.getInput('DeploymentType', false)); - taskParameters.AdditionalArguments = tl.getInput('AdditionalArguments', false) || ''; + taskParameters.DeploymentTypeLinux = this.getDeploymentTypeLinux(tl.getInput('DeploymentTypeLinux', false)); + taskParameters.CleanDeploymentFlag = tl.getBoolInput('CleanDeploymentFlag', false); } else { // Retry Attempt is passed by default @@ -164,6 +169,13 @@ export class TaskParametersUtility { } } + private static getDeploymentTypeLinux(type): DeploymentTypeLinux { + switch(type) { + case "oneDeploy": return DeploymentTypeLinux.oneDeploy; + case "zipDeploy": return DeploymentTypeLinux.zipDeploy; + } + } + private static _getAdditionalArgumentsTelemetry(additionalArguments: string, deploymentType: DeploymentType): AdditionalArgumentsTelemetry { const telemetry = { deploymentMethod: deploymentType, @@ -276,6 +288,8 @@ export interface TaskParameters { XmlVariableSubstitution?: boolean; UseWebDeploy?: boolean; DeploymentType?: DeploymentType; + DeploymentTypeLinux?: DeploymentTypeLinux; + CleanDeploymentFlag?: boolean; RemoveAdditionalFilesFlag?: boolean; SetParametersFile?: string; ExcludeFilesFromAppDataFlag?: boolean; diff --git a/Tasks/AzureRmWebAppDeploymentV4/task.json b/Tasks/AzureRmWebAppDeploymentV4/task.json index 56021feb41e9..86a503ef89c8 100644 --- a/Tasks/AzureRmWebAppDeploymentV4/task.json +++ b/Tasks/AzureRmWebAppDeploymentV4/task.json @@ -17,7 +17,7 @@ "author": "Microsoft Corporation", "version": { "Major": 5, - "Minor": 249, + "Minor": 250, "Patch": 0 }, "releaseNotes": "What's new in version 4.*
Supports Zip Deploy, Run From Package, War Deploy [Details here](https://aka.ms/appServiceDeploymentMethods)
Supports App Service Environments
Improved UI for discovering different App service types supported by the task
Run From Package is the preferred deployment method, which makes files in wwwroot folder read-only
Click [here](https://aka.ms/azurermwebdeployreadme) for more information.", @@ -35,6 +35,12 @@ "isExpanded": false, "visibleRule": "ConnectionType = AzureRM && WebAppKind != webAppLinux && WebAppKind != webAppContainer && WebAppKind != webAppHyperVContainer && WebAppkind != functionAppContainer && webAppKind != functionAppLinux && WebAppKind != \"\" && Package NotEndsWith .war && Package NotEndsWith .jar" }, + { + "name": "AdditionalDeploymentOptionsLinux", + "displayName": "Additional Deployment Options", + "isExpanded": false, + "visibleRule": "ConnectionType = AzureRM && WebAppKind = webAppLinux" + }, { "name": "PostDeploymentAction", "displayName": "Post Deployment Action", @@ -448,6 +454,29 @@ "defaultValue": "", "groupName": "FileTransformsAndVariableSubstitution", "helpMarkDown": "Provide new line separated list of JSON files to substitute the variable values. Files names are to be provided relative to the root folder.
To substitute JSON variables that are nested or hierarchical, specify them using JSONPath expressions.

For example, to replace the value of ‘ConnectionString’ in the sample below, you need to define a variable as ‘Data.DefaultConnection.ConnectionString’ in the build or release pipeline (or release pipeline's environment).
{
  \"Data\": {
    \"DefaultConnection\": {
      \"ConnectionString\": \"Server=(localdb)\\SQLEXPRESS;Database=MyDB;Trusted_Connection=True\"
    }
  }
}
Variable Substitution is run after configuration transforms.

Note: pipeline variables are excluded in substitution." + }, + { + "name": "DeploymentTypeLinux", + "type": "pickList", + "label": "Deployment method", + "defaultValue": "oneDeploy", + "required": true, + "groupName": "AdditionalDeploymentOptionsLinux", + "options": { + "oneDeploy": "One Deploy", + "zipDeploy": "Zip Deploy" + }, + "helpMarkDown": "Choose the deployment method for the app." + }, + { + "name": "CleanDeploymentFlag", + "type": "boolean", + "label": "Enable clean deployment", + "required": false, + "defaultValue": "true", + "groupName": "AdditionalDeploymentOptionsLinux", + "visibleRule": "DeploymentTypeLinux == oneDeploy", + "helpMarkDown": "Deployment mode for complete sync (clean) deployment" } ], "outputVariables": [ diff --git a/Tasks/AzureRmWebAppDeploymentV4/task.loc.json b/Tasks/AzureRmWebAppDeploymentV4/task.loc.json index bc56315a4685..f7ff1a75bd98 100644 --- a/Tasks/AzureRmWebAppDeploymentV4/task.loc.json +++ b/Tasks/AzureRmWebAppDeploymentV4/task.loc.json @@ -17,7 +17,7 @@ "author": "Microsoft Corporation", "version": { "Major": 5, - "Minor": 249, + "Minor": 250, "Patch": 0 }, "releaseNotes": "ms-resource:loc.releaseNotes", @@ -35,6 +35,12 @@ "isExpanded": false, "visibleRule": "ConnectionType = AzureRM && WebAppKind != webAppLinux && WebAppKind != webAppContainer && WebAppKind != webAppHyperVContainer && WebAppkind != functionAppContainer && webAppKind != functionAppLinux && WebAppKind != \"\" && Package NotEndsWith .war && Package NotEndsWith .jar" }, + { + "name": "AdditionalDeploymentOptionsLinux", + "displayName": "ms-resource:loc.group.displayName.AdditionalDeploymentOptionsLinux", + "isExpanded": false, + "visibleRule": "ConnectionType = AzureRM && WebAppKind = webAppLinux" + }, { "name": "PostDeploymentAction", "displayName": "ms-resource:loc.group.displayName.PostDeploymentAction", @@ -448,6 +454,29 @@ "defaultValue": "", "groupName": "FileTransformsAndVariableSubstitution", "helpMarkDown": "ms-resource:loc.input.help.JSONFiles" + }, + { + "name": "DeploymentTypeLinux", + "type": "pickList", + "label": "ms-resource:loc.input.label.DeploymentTypeLinux", + "defaultValue": "oneDeploy", + "required": true, + "groupName": "AdditionalDeploymentOptionsLinux", + "options": { + "oneDeploy": "One Deploy", + "zipDeploy": "Zip Deploy" + }, + "helpMarkDown": "ms-resource:loc.input.help.DeploymentTypeLinux" + }, + { + "name": "CleanDeploymentFlag", + "type": "boolean", + "label": "ms-resource:loc.input.label.CleanDeploymentFlag", + "required": false, + "defaultValue": "true", + "groupName": "AdditionalDeploymentOptionsLinux", + "visibleRule": "DeploymentTypeLinux == oneDeploy", + "helpMarkDown": "ms-resource:loc.input.help.CleanDeploymentFlag" } ], "outputVariables": [