diff --git a/Tasks/AzureRmWebAppDeploymentV4/_buildConfigs/Node20/package-lock.json b/Tasks/AzureRmWebAppDeploymentV4/_buildConfigs/Node20/package-lock.json
index 501bf41ca9ea..e90eb59e3aed 100644
--- a/Tasks/AzureRmWebAppDeploymentV4/_buildConfigs/Node20/package-lock.json
+++ b/Tasks/AzureRmWebAppDeploymentV4/_buildConfigs/Node20/package-lock.json
@@ -35,9 +35,9 @@
}
},
"@types/events": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.2.tgz",
- "integrity": "sha512-v4Mr60wJuF069iZZCdY5DKhfj0l6eXNJtbSM/oMDNdRLoBEUsktmKnswkz0X3OAic5W8Qy/YU6owKE4A66Y46A=="
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.3.tgz",
+ "integrity": "sha512-trOc4AAUThEz9hapPtSd7wf5tiQKvTtu5b371UxXdTuqzIh0ArcRspRP0i0Viu+LXstIQ1z96t1nsPxT9ol01g=="
},
"@types/form-data": {
"version": "0.0.33",
@@ -69,9 +69,9 @@
"integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ=="
},
"@types/node": {
- "version": "20.10.4",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.4.tgz",
- "integrity": "sha512-D08YG6rr8X90YB56tSIuBaddy/UXAA9RKJoFvrsnogAum/0pmjkgi4+2nx96A330FmioegBWmEYQ+syqCFaveg==",
+ "version": "20.11.16",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.16.tgz",
+ "integrity": "sha512-gKb0enTmRCzXSSUJDq6/sPcqrfCv2mkkG6Jt/clpn5eiCbKTY+SgZUxo+p8ZKMof5dCp9vHQUAB7wOUTod22wQ==",
"requires": {
"undici-types": "~5.26.4"
}
@@ -82,9 +82,9 @@
"integrity": "sha512-0WS7XU7sXzQ7J1nbnMKKYdjrrFoO3YtZYgUzeV8JFXffPnHfvSJQleR70I8BOAsOm14i4dyaAZ3YzqIl1YhkXQ=="
},
"@types/qs": {
- "version": "6.9.7",
- "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz",
- "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw=="
+ "version": "6.9.8",
+ "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.8.tgz",
+ "integrity": "sha512-u95svzDlTysU5xecFNTgfFG5RUWu1A9P0VzgpcIiGZA9iraHOdSzcxMxQ55DyeRaGCSxQi7LxXDI4rzq/MYfdg=="
},
"@xmldom/xmldom": {
"version": "git+https://github.com/xmldom/xmldom.git#238b1ea8431fae8817812c68d55b4933248af07e",
@@ -95,15 +95,13 @@
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
"integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
},
- "adm-zip": {
- "version": "0.5.10",
- "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.10.tgz",
- "integrity": "sha512-x0HvcHqVJNTPk/Bw8JbLWlWoo6Wwnsug0fnYYro1HBrjxZ3G7/AZk7Ahv8JwDe1uIcz8eBqvu86FuF1POiG7vQ=="
- },
"agent-base": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-5.1.1.tgz",
- "integrity": "sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g=="
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
+ "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
+ "requires": {
+ "debug": "4"
+ }
},
"archiver": {
"version": "1.2.0",
@@ -147,9 +145,9 @@
}
},
"async-mutex": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/async-mutex/-/async-mutex-0.4.0.tgz",
- "integrity": "sha512-eJFZ1YhRR8UN8eBLoNzcDPcy/jqjsg6I1AP+KvWQX80BqOSW1oJPJXDylPUEeMr2ZQvHgnQ//Lp6f3RQ1zI7HA==",
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/async-mutex/-/async-mutex-0.4.1.tgz",
+ "integrity": "sha512-WfoBo4E/TbCX1G95XTjbWTE3X2XLG0m1Xbv2cwOtuPdyH9CZvnaA5nCt1ucjaKEgW2A5IF71hxrRhr83Je5xjA==",
"requires": {
"tslib": "^2.4.0"
}
@@ -160,18 +158,18 @@
"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
},
"azure-devops-node-api": {
- "version": "12.0.0",
- "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-12.0.0.tgz",
- "integrity": "sha512-S6Il++7dQeMlZDokBDWw7YVoPeb90tWF10pYxnoauRMnkuL91jq9M7SOYRVhtO3FUC5URPkB/qzGa7jTLft0Xw==",
+ "version": "12.4.0",
+ "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-12.4.0.tgz",
+ "integrity": "sha512-ZrJlnoAOjliBYvO1wV9oa5Saa3h5tfRbvCSpwjqryag7bIeeY5Zl/zGiZBVD+75EumhtY5mOXNBzHvLf6JmdNQ==",
"requires": {
"tunnel": "0.0.6",
"typed-rest-client": "^1.8.4"
}
},
"azure-pipelines-task-lib": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/azure-pipelines-task-lib/-/azure-pipelines-task-lib-3.4.0.tgz",
- "integrity": "sha512-3eC4OTFw+7xD7A2aUhxR/j+jRlTI+vVfS0CGxt1pCLs4c/KmY0tQWgbqjD3157kmiucWxELBvgZHaD2gCBe9fg==",
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/azure-pipelines-task-lib/-/azure-pipelines-task-lib-4.4.0.tgz",
+ "integrity": "sha512-JgtxfjxjRA+KWY0Q5UC1fo48nkbVxFHgKEuasKdJMSNxHydOyNlB5MNw4UTiTXp9b0nnqKeOQOBn5RN3go3aPg==",
"requires": {
"minimatch": "3.0.5",
"mockery": "^2.1.0",
@@ -182,14 +180,6 @@
"uuid": "^3.0.1"
},
"dependencies": {
- "minimatch": {
- "version": "3.0.5",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz",
- "integrity": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==",
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
"q": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
@@ -198,9 +188,9 @@
}
},
"azure-pipelines-tasks-azure-arm-rest": {
- "version": "3.223.5",
- "resolved": "https://registry.npmjs.org/azure-pipelines-tasks-azure-arm-rest/-/azure-pipelines-tasks-azure-arm-rest-3.223.5.tgz",
- "integrity": "sha512-qPc011yaOHq+g+/Flr78weU7Q58TwVQDIBjZNq1xC/zqyauc/tA3V0tJSlK2LeHZ9vZRWxDh1DWRPckr+fdcBQ==",
+ "version": "3.232.0",
+ "resolved": "https://registry.npmjs.org/azure-pipelines-tasks-azure-arm-rest/-/azure-pipelines-tasks-azure-arm-rest-3.232.0.tgz",
+ "integrity": "sha512-KC8zGMEwZSvEa7tghgEDiXKiiqTwWYIIXJsSQVN+tVoV5B77AhjDGnh4fQf8P03X3jxvWWb0LJUSxSoXlFZdVA==",
"requires": {
"@azure/msal-node": "1.14.5",
"@types/jsonwebtoken": "^8.5.8",
@@ -215,7 +205,7 @@
"node-fetch": "^2.6.7",
"q": "1.5.1",
"typed-rest-client": "1.8.4",
- "xml2js": "0.4.13"
+ "xml2js": "0.6.2"
},
"dependencies": {
"@types/node": {
@@ -228,18 +218,32 @@
"resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz",
"integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug=="
},
+ "azure-pipelines-task-lib": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/azure-pipelines-task-lib/-/azure-pipelines-task-lib-3.4.0.tgz",
+ "integrity": "sha512-3eC4OTFw+7xD7A2aUhxR/j+jRlTI+vVfS0CGxt1pCLs4c/KmY0tQWgbqjD3157kmiucWxELBvgZHaD2gCBe9fg==",
+ "requires": {
+ "minimatch": "3.0.5",
+ "mockery": "^2.1.0",
+ "q": "^1.5.1",
+ "semver": "^5.1.0",
+ "shelljs": "^0.8.5",
+ "sync-request": "6.1.0",
+ "uuid": "^3.0.1"
+ }
+ },
"q": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
"integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw=="
},
"xml2js": {
- "version": "0.4.13",
- "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.13.tgz",
- "integrity": "sha512-BoxD65qWA2p4znzbaati/Td19uFEc0X6ydj0bFphJO62RrNaGqOyW6ljLWPo3GKDbvW/6dnxAoRX01BsgEWsMA==",
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz",
+ "integrity": "sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==",
"requires": {
"sax": ">=0.6.0",
- "xmlbuilder": ">=2.4.6"
+ "xmlbuilder": "~11.0.0"
}
}
}
@@ -269,34 +273,6 @@
"resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz",
"integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw=="
},
- "azure-pipelines-task-lib": {
- "version": "4.6.1",
- "resolved": "https://registry.npmjs.org/azure-pipelines-task-lib/-/azure-pipelines-task-lib-4.6.1.tgz",
- "integrity": "sha512-3/LFgNNHY0Cw9vArQPxM6ZgPWt3/G2Yy6F75k2AJzKUCotp5X9gZcvF399tVo6T6lTOlp3Vm7VBXq+kzZ6hZmw==",
- "requires": {
- "adm-zip": "^0.5.10",
- "deasync": "^0.1.28",
- "minimatch": "3.0.5",
- "mockery": "^2.1.0",
- "nodejs-file-downloader": "^4.11.1",
- "q": "^1.5.1",
- "semver": "^5.1.0",
- "shelljs": "^0.8.5",
- "uuid": "^3.0.1"
- },
- "dependencies": {
- "q": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
- "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw=="
- },
- "semver": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
- "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g=="
- }
- }
- },
"semver": {
"version": "7.5.4",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
@@ -335,14 +311,6 @@
"chainsaw": "~0.1.0"
}
},
- "bindings": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
- "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
- "requires": {
- "file-uri-to-path": "1.0.0"
- }
- },
"bl": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz",
@@ -488,15 +456,6 @@
"readable-stream": "^2.0.0"
}
},
- "deasync": {
- "version": "0.1.29",
- "resolved": "https://registry.npmjs.org/deasync/-/deasync-0.1.29.tgz",
- "integrity": "sha512-EBtfUhVX23CE9GR6m+F8WPeImEE4hR/FW9RkK0PMl9V1t283s0elqsTD8EZjaKX28SY1BW2rYfCgNsAYdpamUw==",
- "requires": {
- "bindings": "^1.5.0",
- "node-addon-api": "^1.7.1"
- }
- },
"debug": {
"version": "4.3.4",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
@@ -570,16 +529,6 @@
"once": "^1.4.0"
}
},
- "file-uri-to-path": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
- "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw=="
- },
- "follow-redirects": {
- "version": "1.15.3",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz",
- "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q=="
- },
"form-data": {
"version": "2.5.1",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz",
@@ -694,6 +643,13 @@
"requires": {
"agent-base": "5",
"debug": "4"
+ },
+ "dependencies": {
+ "agent-base": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-5.1.1.tgz",
+ "integrity": "sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g=="
+ }
}
},
"ieee754": {
@@ -721,9 +677,9 @@
"integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA=="
},
"is-core-module": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz",
- "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==",
+ "version": "2.13.0",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz",
+ "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==",
"requires": {
"has": "^1.0.3"
}
@@ -874,15 +830,10 @@
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
},
- "node-addon-api": {
- "version": "1.7.2",
- "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz",
- "integrity": "sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg=="
- },
"node-fetch": {
- "version": "2.6.11",
- "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.11.tgz",
- "integrity": "sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w==",
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
+ "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
"requires": {
"whatwg-url": "^5.0.0"
}
@@ -892,36 +843,6 @@
"resolved": "https://registry.npmjs.org/node-stream-zip/-/node-stream-zip-1.15.0.tgz",
"integrity": "sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw=="
},
- "nodejs-file-downloader": {
- "version": "4.12.1",
- "resolved": "https://registry.npmjs.org/nodejs-file-downloader/-/nodejs-file-downloader-4.12.1.tgz",
- "integrity": "sha512-LpfCTNhh805AlLnJnzt1PuEj+RmbrccbAQZ6hBRw2e6QPVR0Qntuo6qqyvPHG5s77/0w0IEKgRAD4nbSnr/X4w==",
- "requires": {
- "follow-redirects": "^1.15.1",
- "https-proxy-agent": "^5.0.0",
- "mime-types": "^2.1.27",
- "sanitize-filename": "^1.6.3"
- },
- "dependencies": {
- "agent-base": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
- "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
- "requires": {
- "debug": "4"
- }
- },
- "https-proxy-agent": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
- "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
- "requires": {
- "agent-base": "6",
- "debug": "4"
- }
- }
- }
- },
"nopt": {
"version": "3.0.6",
"resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
@@ -1020,11 +941,11 @@
"integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw=="
},
"resolve": {
- "version": "1.22.1",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
- "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
+ "version": "1.22.8",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
+ "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
"requires": {
- "is-core-module": "^2.9.0",
+ "is-core-module": "^2.13.0",
"path-parse": "^1.0.7",
"supports-preserve-symlinks-flag": "^1.0.0"
}
@@ -1034,23 +955,15 @@
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
},
- "sanitize-filename": {
- "version": "1.6.3",
- "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz",
- "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==",
- "requires": {
- "truncate-utf8-bytes": "^1.0.0"
- }
- },
"sax": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
"integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
},
"semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g=="
},
"shelljs": {
"version": "0.8.5",
@@ -1175,18 +1088,10 @@
"resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz",
"integrity": "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ=="
},
- "truncate-utf8-bytes": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz",
- "integrity": "sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==",
- "requires": {
- "utf8-byte-length": "^1.0.1"
- }
- },
"tslib": {
- "version": "2.5.3",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.3.tgz",
- "integrity": "sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w=="
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
},
"tunnel": {
"version": "0.0.6",
@@ -1224,11 +1129,6 @@
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
"integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="
},
- "utf8-byte-length": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz",
- "integrity": "sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA=="
- },
"util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
diff --git a/Tasks/AzureRmWebAppDeploymentV4/_buildConfigs/Node20/package.json b/Tasks/AzureRmWebAppDeploymentV4/_buildConfigs/Node20/package.json
index 34cb2c37eefa..64667841dfb1 100644
--- a/Tasks/AzureRmWebAppDeploymentV4/_buildConfigs/Node20/package.json
+++ b/Tasks/AzureRmWebAppDeploymentV4/_buildConfigs/Node20/package.json
@@ -20,8 +20,9 @@
"@types/mocha": "^5.2.7",
"@types/node": "^20.3.1",
"@types/q": "1.0.7",
- "azure-pipelines-task-lib": "^3.4.0",
- "azure-pipelines-tasks-azure-arm-rest": "3.223.5",
+ "agent-base": "^6.0.2",
+ "azure-pipelines-task-lib": "4.4.0",
+ "azure-pipelines-tasks-azure-arm-rest": "^3.232.0",
"azure-pipelines-tasks-webdeployment-common": "4.230.6",
"moment": "^2.29.4",
"q": "1.4.1",
diff --git a/Tasks/AzureRmWebAppDeploymentV4/package-lock.json b/Tasks/AzureRmWebAppDeploymentV4/package-lock.json
index 250639435deb..e06f390a52c9 100644
--- a/Tasks/AzureRmWebAppDeploymentV4/package-lock.json
+++ b/Tasks/AzureRmWebAppDeploymentV4/package-lock.json
@@ -142,9 +142,9 @@
}
},
"async-mutex": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/async-mutex/-/async-mutex-0.4.0.tgz",
- "integrity": "sha512-eJFZ1YhRR8UN8eBLoNzcDPcy/jqjsg6I1AP+KvWQX80BqOSW1oJPJXDylPUEeMr2ZQvHgnQ//Lp6f3RQ1zI7HA==",
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/async-mutex/-/async-mutex-0.4.1.tgz",
+ "integrity": "sha512-WfoBo4E/TbCX1G95XTjbWTE3X2XLG0m1Xbv2cwOtuPdyH9CZvnaA5nCt1ucjaKEgW2A5IF71hxrRhr83Je5xjA==",
"requires": {
"tslib": "^2.4.0"
}
@@ -155,9 +155,9 @@
"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
},
"azure-devops-node-api": {
- "version": "12.1.0",
- "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-12.1.0.tgz",
- "integrity": "sha512-VY+G45eNKVJfMIO0uyZfbi4PzUR8JHEfsHQjEUAXUGRkYhhBbhGHjy8cpiyYFxLXc3a4PL5cqgqqV/YD1SaCXg==",
+ "version": "12.4.0",
+ "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-12.4.0.tgz",
+ "integrity": "sha512-ZrJlnoAOjliBYvO1wV9oa5Saa3h5tfRbvCSpwjqryag7bIeeY5Zl/zGiZBVD+75EumhtY5mOXNBzHvLf6JmdNQ==",
"requires": {
"tunnel": "0.0.6",
"typed-rest-client": "^1.8.4"
@@ -185,9 +185,9 @@
}
},
"azure-pipelines-tasks-azure-arm-rest": {
- "version": "3.223.5",
- "resolved": "https://registry.npmjs.org/azure-pipelines-tasks-azure-arm-rest/-/azure-pipelines-tasks-azure-arm-rest-3.223.5.tgz",
- "integrity": "sha512-qPc011yaOHq+g+/Flr78weU7Q58TwVQDIBjZNq1xC/zqyauc/tA3V0tJSlK2LeHZ9vZRWxDh1DWRPckr+fdcBQ==",
+ "version": "3.232.0",
+ "resolved": "https://registry.npmjs.org/azure-pipelines-tasks-azure-arm-rest/-/azure-pipelines-tasks-azure-arm-rest-3.232.0.tgz",
+ "integrity": "sha512-KC8zGMEwZSvEa7tghgEDiXKiiqTwWYIIXJsSQVN+tVoV5B77AhjDGnh4fQf8P03X3jxvWWb0LJUSxSoXlFZdVA==",
"requires": {
"@azure/msal-node": "1.14.5",
"@types/jsonwebtoken": "^8.5.8",
@@ -202,7 +202,7 @@
"node-fetch": "^2.6.7",
"q": "1.5.1",
"typed-rest-client": "1.8.4",
- "xml2js": "0.4.13"
+ "xml2js": "0.6.2"
},
"dependencies": {
"@types/node": {
@@ -235,12 +235,12 @@
"integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw=="
},
"xml2js": {
- "version": "0.4.13",
- "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.13.tgz",
- "integrity": "sha512-BoxD65qWA2p4znzbaati/Td19uFEc0X6ydj0bFphJO62RrNaGqOyW6ljLWPo3GKDbvW/6dnxAoRX01BsgEWsMA==",
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz",
+ "integrity": "sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==",
"requires": {
"sax": ">=0.6.0",
- "xmlbuilder": ">=2.4.6"
+ "xmlbuilder": "~11.0.0"
}
}
}
diff --git a/Tasks/AzureRmWebAppDeploymentV4/package.json b/Tasks/AzureRmWebAppDeploymentV4/package.json
index d92ef815313a..a5a77ff3b8a8 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.4.0",
- "azure-pipelines-tasks-azure-arm-rest": "3.223.5",
+ "azure-pipelines-tasks-azure-arm-rest": "^3.232.0",
"azure-pipelines-tasks-webdeployment-common": "4.230.6",
"moment": "^2.29.4",
"q": "1.4.1",
diff --git a/Tasks/AzureRmWebAppDeploymentV4/task.json b/Tasks/AzureRmWebAppDeploymentV4/task.json
index 3af67bc6cfce..06f6fb9069d1 100644
--- a/Tasks/AzureRmWebAppDeploymentV4/task.json
+++ b/Tasks/AzureRmWebAppDeploymentV4/task.json
@@ -17,8 +17,8 @@
"author": "Microsoft Corporation",
"version": {
"Major": 4,
- "Minor": 234,
- "Patch": 2
+ "Minor": 235,
+ "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.",
"minimumAgentVersion": "2.104.1",
diff --git a/Tasks/AzureRmWebAppDeploymentV4/task.loc.json b/Tasks/AzureRmWebAppDeploymentV4/task.loc.json
index 513cb8292f07..192c95e6383b 100644
--- a/Tasks/AzureRmWebAppDeploymentV4/task.loc.json
+++ b/Tasks/AzureRmWebAppDeploymentV4/task.loc.json
@@ -17,8 +17,8 @@
"author": "Microsoft Corporation",
"version": {
"Major": 4,
- "Minor": 234,
- "Patch": 2
+ "Minor": 235,
+ "Patch": 0
},
"releaseNotes": "ms-resource:loc.releaseNotes",
"minimumAgentVersion": "2.104.1",
diff --git a/Tasks/AzureTestPlanV0/_buildConfigs/Node20/package-lock.json b/Tasks/AzureTestPlanV0/_buildConfigs/Node20/package-lock.json
index df8150002c7a..34d6ad42afd8 100644
--- a/Tasks/AzureTestPlanV0/_buildConfigs/Node20/package-lock.json
+++ b/Tasks/AzureTestPlanV0/_buildConfigs/Node20/package-lock.json
@@ -26,9 +26,9 @@
"integrity": "sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw=="
},
"@types/node": {
- "version": "20.11.0",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.0.tgz",
- "integrity": "sha512-o9bjXmDNcF7GbM4CNQpmi+TutCgap/K3w1JyKgxAjqx41zp9qlIAVFi0IhCNsJcXolEqLWhbFbEeL0PvYm4pcQ==",
+ "version": "20.11.16",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.16.tgz",
+ "integrity": "sha512-gKb0enTmRCzXSSUJDq6/sPcqrfCv2mkkG6Jt/clpn5eiCbKTY+SgZUxo+p8ZKMof5dCp9vHQUAB7wOUTod22wQ==",
"requires": {
"undici-types": "~5.26.4"
}
@@ -124,6 +124,15 @@
}
}
},
+ "azure-devops-node-api": {
+ "version": "12.2.0",
+ "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-12.2.0.tgz",
+ "integrity": "sha512-htza/rAmMNdLWpoFh5kG7CQFaZ17ylDEGCcQCTIu39R33YFCB8LIJNzjIL9Uqudzc5VdU47sxcXxAJvcuwc3Tw==",
+ "requires": {
+ "tunnel": "0.0.6",
+ "typed-rest-client": "^1.8.4"
+ }
+ },
"azure-pipelines-task-lib": {
"version": "4.6.1",
"resolved": "https://registry.npmjs.org/azure-pipelines-task-lib/-/azure-pipelines-task-lib-4.6.1.tgz",
@@ -210,9 +219,9 @@
},
"dependencies": {
"@types/node": {
- "version": "16.18.70",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.70.tgz",
- "integrity": "sha512-8eIk20G5VVVQNZNouHjLA2b8utE2NvGybLjMaF4lyhA9uhGwnmXF8o+icdXKGSQSNANJewXva/sFUoZLwAaYAg=="
+ "version": "16.18.79",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.79.tgz",
+ "integrity": "sha512-Qd7jdLR5zmnIyMhfDrfPqN5tUCvreVpP3Qrf2oSM+F7SNzlb/MwHISGUkdFHtevfkPJ3iAGyeQI/jsbh9EStgQ=="
}
}
},
@@ -365,9 +374,9 @@
"integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw=="
},
"follow-redirects": {
- "version": "1.15.3",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz",
- "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q=="
+ "version": "1.15.5",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz",
+ "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw=="
},
"form-data": {
"version": "2.5.1",
diff --git a/Tasks/AzureTestPlanV0/_buildConfigs/Node20/package.json b/Tasks/AzureTestPlanV0/_buildConfigs/Node20/package.json
index a62592d1e683..25a34b0cd100 100644
--- a/Tasks/AzureTestPlanV0/_buildConfigs/Node20/package.json
+++ b/Tasks/AzureTestPlanV0/_buildConfigs/Node20/package.json
@@ -24,6 +24,7 @@
"azure-pipelines-task-lib": "^4.1.0",
"azure-pipelines-tasks-docker-common": "2.198.1",
"azure-pipelines-tasks-utility-common": "^3.212.0",
+ "azure-devops-node-api": "^12.2.0",
"azure-pipelines-tool-lib": "^2.0.0-preview",
"typed-rest-client": "^1.8.9",
"axios": "^1.6.2"
diff --git a/Tasks/AzureTestPlanV0/package-lock.json b/Tasks/AzureTestPlanV0/package-lock.json
index fc956cfb6ebe..0a9448fd0872 100644
--- a/Tasks/AzureTestPlanV0/package-lock.json
+++ b/Tasks/AzureTestPlanV0/package-lock.json
@@ -364,9 +364,9 @@
"integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw=="
},
"follow-redirects": {
- "version": "1.15.3",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz",
- "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q=="
+ "version": "1.15.5",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz",
+ "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw=="
},
"form-data": {
"version": "2.5.1",
diff --git a/Tasks/AzureTestPlanV0/task.json b/Tasks/AzureTestPlanV0/task.json
index 240fa1ddcb26..c84d9ad4ea21 100644
--- a/Tasks/AzureTestPlanV0/task.json
+++ b/Tasks/AzureTestPlanV0/task.json
@@ -13,7 +13,7 @@
"author": "Microsoft Corporation",
"version": {
"Major": 0,
- "Minor": 234,
+ "Minor": 235,
"Patch": 0
},
"preview": true,
diff --git a/Tasks/AzureTestPlanV0/task.loc.json b/Tasks/AzureTestPlanV0/task.loc.json
index 80994abc0f67..19a50974831f 100644
--- a/Tasks/AzureTestPlanV0/task.loc.json
+++ b/Tasks/AzureTestPlanV0/task.loc.json
@@ -13,7 +13,7 @@
"author": "Microsoft Corporation",
"version": {
"Major": 0,
- "Minor": 234,
+ "Minor": 235,
"Patch": 0
},
"preview": true,
diff --git a/Tasks/AzureWebAppV1/_buildConfigs/Node20/package-lock.json b/Tasks/AzureWebAppV1/_buildConfigs/Node20/package-lock.json
index c5964a519e73..04344345ab2b 100644
--- a/Tasks/AzureWebAppV1/_buildConfigs/Node20/package-lock.json
+++ b/Tasks/AzureWebAppV1/_buildConfigs/Node20/package-lock.json
@@ -35,9 +35,9 @@
}
},
"@types/events": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.3.tgz",
- "integrity": "sha512-trOc4AAUThEz9hapPtSd7wf5tiQKvTtu5b371UxXdTuqzIh0ArcRspRP0i0Viu+LXstIQ1z96t1nsPxT9ol01g=="
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.2.tgz",
+ "integrity": "sha512-v4Mr60wJuF069iZZCdY5DKhfj0l6eXNJtbSM/oMDNdRLoBEUsktmKnswkz0X3OAic5W8Qy/YU6owKE4A66Y46A=="
},
"@types/form-data": {
"version": "0.0.33",
@@ -69,9 +69,9 @@
"integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ=="
},
"@types/node": {
- "version": "20.8.9",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.9.tgz",
- "integrity": "sha512-UzykFsT3FhHb1h7yD4CA4YhBHq545JC0YnEz41xkipN88eKQtL6rSgocL5tbAP6Ola9Izm/Aw4Ora8He4x0BHg==",
+ "version": "20.11.16",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.16.tgz",
+ "integrity": "sha512-gKb0enTmRCzXSSUJDq6/sPcqrfCv2mkkG6Jt/clpn5eiCbKTY+SgZUxo+p8ZKMof5dCp9vHQUAB7wOUTod22wQ==",
"requires": {
"undici-types": "~5.26.4"
}
@@ -337,13 +337,14 @@
"integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw=="
},
"azure-pipelines-task-lib": {
- "version": "4.7.0",
- "resolved": "https://registry.npmjs.org/azure-pipelines-task-lib/-/azure-pipelines-task-lib-4.7.0.tgz",
- "integrity": "sha512-5MctDC1Bt7eFi9tQTXlikuWRDc2MenCNruMsEwcKuXqBj1ZY+fA/D+E1DbE0Qi2u8kl1p6szT0we8k6RHSOe/w==",
+ "version": "4.6.1",
+ "resolved": "https://registry.npmjs.org/azure-pipelines-task-lib/-/azure-pipelines-task-lib-4.6.1.tgz",
+ "integrity": "sha512-3/LFgNNHY0Cw9vArQPxM6ZgPWt3/G2Yy6F75k2AJzKUCotp5X9gZcvF399tVo6T6lTOlp3Vm7VBXq+kzZ6hZmw==",
"requires": {
"adm-zip": "^0.5.10",
"deasync": "^0.1.28",
"minimatch": "3.0.5",
+ "mockery": "^2.1.0",
"nodejs-file-downloader": "^4.11.1",
"q": "^1.5.1",
"semver": "^5.1.0",
@@ -687,9 +688,9 @@
"integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw=="
},
"follow-redirects": {
- "version": "1.15.3",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz",
- "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q=="
+ "version": "1.15.5",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz",
+ "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw=="
},
"form-data": {
"version": "2.5.1",
diff --git a/Tasks/AzureWebAppV1/package-lock.json b/Tasks/AzureWebAppV1/package-lock.json
index 3e49f668d549..6b34d01fde59 100644
--- a/Tasks/AzureWebAppV1/package-lock.json
+++ b/Tasks/AzureWebAppV1/package-lock.json
@@ -670,9 +670,9 @@
"integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw=="
},
"follow-redirects": {
- "version": "1.15.3",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz",
- "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q=="
+ "version": "1.15.5",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz",
+ "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw=="
},
"form-data": {
"version": "2.5.1",
diff --git a/Tasks/AzureWebAppV1/task.json b/Tasks/AzureWebAppV1/task.json
index 3a2dd7470d0c..a755be1fbbd3 100644
--- a/Tasks/AzureWebAppV1/task.json
+++ b/Tasks/AzureWebAppV1/task.json
@@ -17,7 +17,7 @@
"author": "Microsoft Corporation",
"version": {
"Major": 1,
- "Minor": 232,
+ "Minor": 235,
"Patch": 0
},
"minimumAgentVersion": "2.104.1",
diff --git a/Tasks/AzureWebAppV1/task.loc.json b/Tasks/AzureWebAppV1/task.loc.json
index 75b38367a1bf..60e87cc83f2d 100644
--- a/Tasks/AzureWebAppV1/task.loc.json
+++ b/Tasks/AzureWebAppV1/task.loc.json
@@ -17,7 +17,7 @@
"author": "Microsoft Corporation",
"version": {
"Major": 1,
- "Minor": 232,
+ "Minor": 235,
"Patch": 0
},
"minimumAgentVersion": "2.104.1",
diff --git a/Tasks/BashV3/_buildConfigs/Node20/package-lock.json b/Tasks/BashV3/_buildConfigs/Node20/package-lock.json
index 50de9671eb5e..9483b283085d 100644
--- a/Tasks/BashV3/_buildConfigs/Node20/package-lock.json
+++ b/Tasks/BashV3/_buildConfigs/Node20/package-lock.json
@@ -21,7 +21,7 @@
"@types/form-data": {
"version": "0.0.33",
"resolved": "https://registry.npmjs.org/@types/form-data/-/form-data-0.0.33.tgz",
- "integrity": "sha512-8BSvG1kGm83cyJITQMZSulnl6QV8jqAGreJsc5tPu1Jq0vTSOiY/k24Wx82JRpWwZSqrala6sd5rWi6aNXvqcw==",
+ "integrity": "sha1-yayFsqX9GENbjIXZ7LUObWyJP/g=",
"requires": {
"@types/node": "*"
}
@@ -32,9 +32,12 @@
"integrity": "sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw=="
},
"@types/node": {
- "version": "20.7.0",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.7.0.tgz",
- "integrity": "sha512-zI22/pJW2wUZOVyguFaUL1HABdmSVxpXrzIqkjsHmyUjNhPoWM1CKfvVuXfetHhIok4RY573cqS0mZ1SJEnoTg=="
+ "version": "20.11.16",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.16.tgz",
+ "integrity": "sha512-gKb0enTmRCzXSSUJDq6/sPcqrfCv2mkkG6Jt/clpn5eiCbKTY+SgZUxo+p8ZKMof5dCp9vHQUAB7wOUTod22wQ==",
+ "requires": {
+ "undici-types": "~5.26.4"
+ }
},
"@types/qs": {
"version": "6.9.8",
@@ -75,12 +78,12 @@
"asap": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
- "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA=="
+ "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY="
},
"asynckit": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
- "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
+ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
},
"azure-pipelines-task-lib": {
"version": "5.0.0-preview.0",
@@ -108,9 +111,9 @@
},
"dependencies": {
"@types/node": {
- "version": "16.18.59",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.59.tgz",
- "integrity": "sha512-PJ1w2cNeKUEdey4LiPra0ZuxZFOGvetswE8qHRriV/sUkL5Al4tTmPV9D2+Y/TPIxTHHgxTfRjZVKWhPw/ORhQ=="
+ "version": "16.18.79",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.79.tgz",
+ "integrity": "sha512-Qd7jdLR5zmnIyMhfDrfPqN5tUCvreVpP3Qrf2oSM+F7SNzlb/MwHISGUkdFHtevfkPJ3iAGyeQI/jsbh9EStgQ=="
},
"azure-pipelines-task-lib": {
"version": "4.6.1",
@@ -206,7 +209,7 @@
"caseless": {
"version": "0.12.0",
"resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
- "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw=="
+ "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
},
"combined-stream": {
"version": "1.0.8",
@@ -219,7 +222,7 @@
"concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
},
"concat-stream": {
"version": "1.6.2",
@@ -257,7 +260,7 @@
"delayed-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
- "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ=="
+ "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
},
"esprima": {
"version": "4.0.1",
@@ -270,9 +273,9 @@
"integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw=="
},
"follow-redirects": {
- "version": "1.15.3",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz",
- "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q=="
+ "version": "1.15.5",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz",
+ "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw=="
},
"form-data": {
"version": "2.5.1",
@@ -287,7 +290,7 @@
"fs.realpath": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
},
"function-bind": {
"version": "1.1.1",
@@ -307,7 +310,7 @@
"get-port": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz",
- "integrity": "sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg=="
+ "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw="
},
"glob": {
"version": "7.2.3",
@@ -383,7 +386,7 @@
"inflight": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
"requires": {
"once": "^1.3.0",
"wrappy": "1"
@@ -410,7 +413,7 @@
"isarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
},
"js-yaml": {
"version": "3.13.1",
@@ -476,7 +479,7 @@
"once": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
"requires": {
"wrappy": "1"
}
@@ -484,12 +487,12 @@
"parse-cache-control": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/parse-cache-control/-/parse-cache-control-1.0.1.tgz",
- "integrity": "sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg=="
+ "integrity": "sha1-juqz5U+laSD+Fro493+iGqzC104="
},
"path-is-absolute": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
- "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg=="
+ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
},
"path-parse": {
"version": "1.0.7",
@@ -512,7 +515,7 @@
"q": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
- "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw=="
+ "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc="
},
"qs": {
"version": "6.11.0",
@@ -539,7 +542,7 @@
"rechoir": {
"version": "0.6.2",
"resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
- "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==",
+ "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=",
"requires": {
"resolve": "^1.1.6"
}
@@ -568,9 +571,9 @@
}
},
"semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g=="
},
"semver-compare": {
"version": "1.0.0",
@@ -684,7 +687,7 @@
"typedarray": {
"version": "0.0.6",
"resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
- "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA=="
+ "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c="
},
"typescript": {
"version": "5.1.6",
@@ -697,6 +700,11 @@
"resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz",
"integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A=="
},
+ "undici-types": {
+ "version": "5.26.5",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
+ "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="
+ },
"utf8-byte-length": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz",
@@ -705,7 +713,7 @@
"util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
},
"uuid": {
"version": "3.2.1",
@@ -715,7 +723,7 @@
"wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
}
}
}
diff --git a/Tasks/BashV3/package-lock.json b/Tasks/BashV3/package-lock.json
index 06fb3ed761b5..bbefcd976eec 100644
--- a/Tasks/BashV3/package-lock.json
+++ b/Tasks/BashV3/package-lock.json
@@ -265,9 +265,9 @@
"integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw=="
},
"follow-redirects": {
- "version": "1.15.3",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz",
- "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q=="
+ "version": "1.15.5",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz",
+ "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw=="
},
"form-data": {
"version": "2.5.1",
@@ -563,9 +563,9 @@
}
},
"semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g=="
},
"semver-compare": {
"version": "1.0.0",
diff --git a/Tasks/BashV3/task.json b/Tasks/BashV3/task.json
index 88a550d0ba6a..8cf2f5db4bdb 100644
--- a/Tasks/BashV3/task.json
+++ b/Tasks/BashV3/task.json
@@ -17,8 +17,8 @@
"author": "Microsoft Corporation",
"version": {
"Major": 3,
- "Minor": 231,
- "Patch": 4
+ "Minor": 235,
+ "Patch": 0
},
"releaseNotes": "Script task consistency. Added support for multiple lines and added support for Windows.",
"minimumAgentVersion": "2.115.0",
diff --git a/Tasks/BashV3/task.loc.json b/Tasks/BashV3/task.loc.json
index 2f1e51bd09f0..066840258ba0 100644
--- a/Tasks/BashV3/task.loc.json
+++ b/Tasks/BashV3/task.loc.json
@@ -17,8 +17,8 @@
"author": "Microsoft Corporation",
"version": {
"Major": 3,
- "Minor": 231,
- "Patch": 4
+ "Minor": 235,
+ "Patch": 0
},
"releaseNotes": "ms-resource:loc.releaseNotes",
"minimumAgentVersion": "2.115.0",
diff --git a/Tasks/CondaEnvironmentV0/_buildConfigs/Node20/package-lock.json b/Tasks/CondaEnvironmentV0/_buildConfigs/Node20/package-lock.json
index 50a7558c071e..a840afe0556f 100644
--- a/Tasks/CondaEnvironmentV0/_buildConfigs/Node20/package-lock.json
+++ b/Tasks/CondaEnvironmentV0/_buildConfigs/Node20/package-lock.json
@@ -26,11 +26,11 @@
"integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ=="
},
"@types/node": {
- "version": "20.8.6",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.6.tgz",
- "integrity": "sha512-eWO4K2Ji70QzKUqRy6oyJWUeB7+g2cRagT3T/nxYibYcT4y2BDL8lqolRXjTHmkZCdJfIPaY73KbJAZmcryxTQ==",
+ "version": "20.11.16",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.16.tgz",
+ "integrity": "sha512-gKb0enTmRCzXSSUJDq6/sPcqrfCv2mkkG6Jt/clpn5eiCbKTY+SgZUxo+p8ZKMof5dCp9vHQUAB7wOUTod22wQ==",
"requires": {
- "undici-types": "~5.25.1"
+ "undici-types": "~5.26.4"
}
},
"@types/q": {
@@ -224,9 +224,9 @@
"integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw=="
},
"follow-redirects": {
- "version": "1.15.3",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz",
- "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q=="
+ "version": "1.15.5",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz",
+ "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw=="
},
"form-data": {
"version": "2.5.1",
@@ -513,14 +513,14 @@
}
},
"semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g=="
},
"semver-compare": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz",
- "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow=="
+ "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w="
},
"shelljs": {
"version": "0.8.5",
@@ -638,9 +638,9 @@
"integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A=="
},
"undici-types": {
- "version": "5.25.3",
- "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.25.3.tgz",
- "integrity": "sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA=="
+ "version": "5.26.5",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
+ "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="
},
"utf8-byte-length": {
"version": "1.0.4",
diff --git a/Tasks/CondaEnvironmentV0/package-lock.json b/Tasks/CondaEnvironmentV0/package-lock.json
index 86161706c266..a6638b556d33 100644
--- a/Tasks/CondaEnvironmentV0/package-lock.json
+++ b/Tasks/CondaEnvironmentV0/package-lock.json
@@ -221,9 +221,9 @@
"integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw=="
},
"follow-redirects": {
- "version": "1.15.3",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz",
- "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q=="
+ "version": "1.15.5",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz",
+ "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw=="
},
"form-data": {
"version": "2.5.1",
@@ -510,9 +510,9 @@
}
},
"semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g=="
},
"semver-compare": {
"version": "1.0.0",
diff --git a/Tasks/CondaEnvironmentV0/task.json b/Tasks/CondaEnvironmentV0/task.json
index eefc80174267..9d401ec85841 100644
--- a/Tasks/CondaEnvironmentV0/task.json
+++ b/Tasks/CondaEnvironmentV0/task.json
@@ -13,8 +13,8 @@
"author": "Microsoft Corporation",
"version": {
"Major": 0,
- "Minor": 231,
- "Patch": 4
+ "Minor": 235,
+ "Patch": 0
},
"demands": [],
"instanceNameFormat": "Conda Environment $(environmentName)",
diff --git a/Tasks/CondaEnvironmentV0/task.loc.json b/Tasks/CondaEnvironmentV0/task.loc.json
index 5420810d5567..65546006b63e 100644
--- a/Tasks/CondaEnvironmentV0/task.loc.json
+++ b/Tasks/CondaEnvironmentV0/task.loc.json
@@ -13,8 +13,8 @@
"author": "Microsoft Corporation",
"version": {
"Major": 0,
- "Minor": 231,
- "Patch": 4
+ "Minor": 235,
+ "Patch": 0
},
"demands": [],
"instanceNameFormat": "ms-resource:loc.instanceNameFormat",
diff --git a/Tasks/FileTransformV1/_buildConfigs/Node20/package-lock.json b/Tasks/FileTransformV1/_buildConfigs/Node20/package-lock.json
index 144865d4b9fe..0b97f25782ac 100644
--- a/Tasks/FileTransformV1/_buildConfigs/Node20/package-lock.json
+++ b/Tasks/FileTransformV1/_buildConfigs/Node20/package-lock.json
@@ -4,20 +4,17 @@
"lockfileVersion": 1,
"requires": true,
"dependencies": {
- "@types/concat-stream": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/@types/concat-stream/-/concat-stream-1.6.1.tgz",
- "integrity": "sha512-eHE4cQPoj6ngxBZMvVf6Hw7Mh4jMW4U9lpGmS5GBPB9RYxlFg+CHaVN7ErNY4W9XfLIEn20b4VDYaIrbq0q4uA==",
- "requires": {
- "@types/node": "*"
- }
+ "@types/events": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.3.tgz",
+ "integrity": "sha512-trOc4AAUThEz9hapPtSd7wf5tiQKvTtu5b371UxXdTuqzIh0ArcRspRP0i0Viu+LXstIQ1z96t1nsPxT9ol01g=="
},
- "@types/form-data": {
- "version": "0.0.33",
- "resolved": "https://registry.npmjs.org/@types/form-data/-/form-data-0.0.33.tgz",
- "integrity": "sha512-8BSvG1kGm83cyJITQMZSulnl6QV8jqAGreJsc5tPu1Jq0vTSOiY/k24Wx82JRpWwZSqrala6sd5rWi6aNXvqcw==",
+ "@types/ltx": {
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/@types/ltx/-/ltx-3.0.6.tgz",
+ "integrity": "sha512-ZdHUgFEaBVUHI0si050pQkuGzHQC5UU46JsljUUJkGWbsjKeV3RUspJvvdV80Inrnhx8d3JqXw4qCDRX4A/BdA==",
"requires": {
- "@types/node": "*"
+ "@types/events": "*"
}
},
"@types/mocha": {
@@ -26,9 +23,9 @@
"integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ=="
},
"@types/node": {
- "version": "20.8.9",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.9.tgz",
- "integrity": "sha512-UzykFsT3FhHb1h7yD4CA4YhBHq545JC0YnEz41xkipN88eKQtL6rSgocL5tbAP6Ola9Izm/Aw4Ora8He4x0BHg==",
+ "version": "20.11.16",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.16.tgz",
+ "integrity": "sha512-gKb0enTmRCzXSSUJDq6/sPcqrfCv2mkkG6Jt/clpn5eiCbKTY+SgZUxo+p8ZKMof5dCp9vHQUAB7wOUTod22wQ==",
"requires": {
"undici-types": "~5.26.4"
}
@@ -38,11 +35,6 @@
"resolved": "https://registry.npmjs.org/@types/q/-/q-1.0.7.tgz",
"integrity": "sha512-0WS7XU7sXzQ7J1nbnMKKYdjrrFoO3YtZYgUzeV8JFXffPnHfvSJQleR70I8BOAsOm14i4dyaAZ3YzqIl1YhkXQ=="
},
- "@types/qs": {
- "version": "6.9.7",
- "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz",
- "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw=="
- },
"@xmldom/xmldom": {
"version": "git+https://github.com/xmldom/xmldom.git#238b1ea8431fae8817812c68d55b4933248af07e",
"from": "git+https://github.com/xmldom/xmldom.git#0.8.6"
@@ -52,6 +44,19 @@
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
"integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
},
+ "adm-zip": {
+ "version": "0.5.10",
+ "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.10.tgz",
+ "integrity": "sha512-x0HvcHqVJNTPk/Bw8JbLWlWoo6Wwnsug0fnYYro1HBrjxZ3G7/AZk7Ahv8JwDe1uIcz8eBqvu86FuF1POiG7vQ=="
+ },
+ "agent-base": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
+ "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
+ "requires": {
+ "debug": "4"
+ }
+ },
"archiver": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/archiver/-/archiver-1.2.0.tgz",
@@ -80,11 +85,6 @@
"readable-stream": "^2.0.0"
}
},
- "asap": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
- "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA=="
- },
"async": {
"version": "2.6.4",
"resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz",
@@ -93,22 +93,18 @@
"lodash": "^4.17.14"
}
},
- "asynckit": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
- "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
- },
"azure-pipelines-task-lib": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/azure-pipelines-task-lib/-/azure-pipelines-task-lib-4.3.0.tgz",
- "integrity": "sha512-kmOyGE1kuRaWwXYZ5MfA8Q8Awt7aAUExG6w40aos6Y3G0/RlTCeB+5H4oYpoiNB0g8MPYhWG7SM5i6PLycWs1A==",
+ "version": "4.7.0",
+ "resolved": "https://registry.npmjs.org/azure-pipelines-task-lib/-/azure-pipelines-task-lib-4.7.0.tgz",
+ "integrity": "sha512-5MctDC1Bt7eFi9tQTXlikuWRDc2MenCNruMsEwcKuXqBj1ZY+fA/D+E1DbE0Qi2u8kl1p6szT0we8k6RHSOe/w==",
"requires": {
+ "adm-zip": "^0.5.10",
+ "deasync": "^0.1.28",
"minimatch": "3.0.5",
- "mockery": "^2.1.0",
+ "nodejs-file-downloader": "^4.11.1",
"q": "^1.5.1",
"semver": "^5.1.0",
"shelljs": "^0.8.5",
- "sync-request": "6.1.0",
"uuid": "^3.0.1"
},
"dependencies": {
@@ -124,14 +120,20 @@
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
"integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw=="
+ },
+ "semver": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g=="
}
}
},
"azure-pipelines-tasks-webdeployment-common": {
- "version": "4.219.1",
- "resolved": "https://registry.npmjs.org/azure-pipelines-tasks-webdeployment-common/-/azure-pipelines-tasks-webdeployment-common-4.219.1.tgz",
- "integrity": "sha512-Uf9b0u33Wwff2EBBxFcvPaL8LetSBT2q8l28SVTOVcDgnQVMKJPR7pMK+DBzLiDlLe164MOcGrlOK+Oi/0+5LA==",
+ "version": "4.230.6",
+ "resolved": "https://registry.npmjs.org/azure-pipelines-tasks-webdeployment-common/-/azure-pipelines-tasks-webdeployment-common-4.230.6.tgz",
+ "integrity": "sha512-lEk6mDpEMIwZ1JZEBH6nQnio7R12gNGECXUYhbyLpL6n/OT+eWd3hWkc4f0F4GfKRSSjpsGEmX56qdAwfpFdeA==",
"requires": {
+ "@types/ltx": "3.0.6",
"@types/mocha": "^5.2.7",
"@types/node": "^10.17.0",
"@xmldom/xmldom": "git+https://github.com/xmldom/xmldom.git#0.8.6",
@@ -139,9 +141,11 @@
"azure-pipelines-task-lib": "^4.2.0",
"decompress-zip": "^0.3.3",
"ltx": "2.8.0",
+ "node-stream-zip": "^1.15.0",
"q": "1.4.1",
+ "semver": "^7.5.4",
"winreg": "1.2.2",
- "xml2js": "0.4.13"
+ "xml2js": "0.6.2"
},
"dependencies": {
"@types/node": {
@@ -170,6 +174,14 @@
"chainsaw": "~0.1.0"
}
},
+ "bindings": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
+ "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
+ "requires": {
+ "file-uri-to-path": "1.0.0"
+ }
+ },
"bl": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz",
@@ -221,30 +233,11 @@
"resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz",
"integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ=="
},
- "buffer-from": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
- "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="
- },
"buffers": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz",
"integrity": "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ=="
},
- "call-bind": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
- "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
- "requires": {
- "function-bind": "^1.1.1",
- "get-intrinsic": "^1.0.2"
- }
- },
- "caseless": {
- "version": "0.12.0",
- "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
- "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw=="
- },
"chainsaw": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz",
@@ -253,14 +246,6 @@
"traverse": ">=0.3.0 <0.4"
}
},
- "combined-stream": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
- "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
- "requires": {
- "delayed-stream": "~1.0.0"
- }
- },
"compress-commons": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-1.2.2.tgz",
@@ -277,17 +262,6 @@
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
},
- "concat-stream": {
- "version": "1.6.2",
- "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
- "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
- "requires": {
- "buffer-from": "^1.0.0",
- "inherits": "^2.0.3",
- "readable-stream": "^2.2.2",
- "typedarray": "^0.0.6"
- }
- },
"core-util-is": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
@@ -310,6 +284,23 @@
"readable-stream": "^2.0.0"
}
},
+ "deasync": {
+ "version": "0.1.29",
+ "resolved": "https://registry.npmjs.org/deasync/-/deasync-0.1.29.tgz",
+ "integrity": "sha512-EBtfUhVX23CE9GR6m+F8WPeImEE4hR/FW9RkK0PMl9V1t283s0elqsTD8EZjaKX28SY1BW2rYfCgNsAYdpamUw==",
+ "requires": {
+ "bindings": "^1.5.0",
+ "node-addon-api": "^1.7.1"
+ }
+ },
+ "debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "requires": {
+ "ms": "2.1.2"
+ }
+ },
"decompress-zip": {
"version": "0.3.3",
"resolved": "https://registry.npmjs.org/decompress-zip/-/decompress-zip-0.3.3.tgz",
@@ -347,11 +338,6 @@
}
}
},
- "delayed-stream": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
- "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ=="
- },
"end-of-stream": {
"version": "1.4.4",
"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
@@ -360,15 +346,15 @@
"once": "^1.4.0"
}
},
- "form-data": {
- "version": "2.5.1",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz",
- "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==",
- "requires": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.6",
- "mime-types": "^2.1.12"
- }
+ "file-uri-to-path": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
+ "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw=="
+ },
+ "follow-redirects": {
+ "version": "1.15.5",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz",
+ "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw=="
},
"fs-constants": {
"version": "1.0.0",
@@ -381,24 +367,9 @@
"integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
},
"function-bind": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
- },
- "get-intrinsic": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz",
- "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==",
- "requires": {
- "function-bind": "^1.1.1",
- "has": "^1.0.3",
- "has-symbols": "^1.0.3"
- }
- },
- "get-port": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz",
- "integrity": "sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg=="
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="
},
"glob": {
"version": "7.2.3",
@@ -414,47 +385,25 @@
}
},
"graceful-fs": {
- "version": "4.2.10",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
- "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA=="
+ "version": "4.2.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="
},
- "has": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
- "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
- "requires": {
- "function-bind": "^1.1.1"
- }
- },
- "has-symbols": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
- "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A=="
- },
- "http-basic": {
- "version": "8.1.3",
- "resolved": "https://registry.npmjs.org/http-basic/-/http-basic-8.1.3.tgz",
- "integrity": "sha512-/EcDMwJZh3mABI2NhGfHOGOeOZITqfkEO4p/xK+l3NpyncIHUQBoMvCSF/b5GqvKtySC2srL/GGG3+EtlqlmCw==",
+ "hasown": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz",
+ "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==",
"requires": {
- "caseless": "^0.12.0",
- "concat-stream": "^1.6.2",
- "http-response-object": "^3.0.1",
- "parse-cache-control": "^1.0.1"
+ "function-bind": "^1.1.2"
}
},
- "http-response-object": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/http-response-object/-/http-response-object-3.0.2.tgz",
- "integrity": "sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA==",
+ "https-proxy-agent": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
+ "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
"requires": {
- "@types/node": "^10.0.3"
- },
- "dependencies": {
- "@types/node": {
- "version": "10.17.60",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz",
- "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw=="
- }
+ "agent-base": "6",
+ "debug": "4"
}
},
"ieee754": {
@@ -482,11 +431,11 @@
"integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA=="
},
"is-core-module": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz",
- "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==",
+ "version": "2.13.1",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz",
+ "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==",
"requires": {
- "has": "^1.0.3"
+ "hasown": "^2.0.0"
}
},
"isarray": {
@@ -507,6 +456,14 @@
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
},
+ "lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "requires": {
+ "yallist": "^4.0.0"
+ }
+ },
"ltx": {
"version": "2.8.0",
"resolved": "https://registry.npmjs.org/ltx/-/ltx-2.8.0.tgz",
@@ -541,10 +498,31 @@
"resolved": "https://registry.npmjs.org/mkpath/-/mkpath-0.1.0.tgz",
"integrity": "sha512-bauHShmaxVQiEvlrAPWxSPn8spSL8gDVRl11r8vLT4r/KdnknLqtqwQbToZ2Oa8sJkExYY1z6/d+X7pNiqo4yg=="
},
- "mockery": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/mockery/-/mockery-2.1.0.tgz",
- "integrity": "sha512-9VkOmxKlWXoDO/h1jDZaS4lH33aWfRiJiNT/tKj+8OGzrcFDLo8d0syGdbsc3Bc4GvRXPb+NMMvojotmuGJTvA=="
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ },
+ "node-addon-api": {
+ "version": "1.7.2",
+ "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz",
+ "integrity": "sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg=="
+ },
+ "node-stream-zip": {
+ "version": "1.15.0",
+ "resolved": "https://registry.npmjs.org/node-stream-zip/-/node-stream-zip-1.15.0.tgz",
+ "integrity": "sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw=="
+ },
+ "nodejs-file-downloader": {
+ "version": "4.12.1",
+ "resolved": "https://registry.npmjs.org/nodejs-file-downloader/-/nodejs-file-downloader-4.12.1.tgz",
+ "integrity": "sha512-LpfCTNhh805AlLnJnzt1PuEj+RmbrccbAQZ6hBRw2e6QPVR0Qntuo6qqyvPHG5s77/0w0IEKgRAD4nbSnr/X4w==",
+ "requires": {
+ "follow-redirects": "^1.15.1",
+ "https-proxy-agent": "^5.0.0",
+ "mime-types": "^2.1.27",
+ "sanitize-filename": "^1.6.3"
+ }
},
"nopt": {
"version": "3.0.6",
@@ -562,11 +540,6 @@
"remove-trailing-separator": "^1.0.1"
}
},
- "object-inspect": {
- "version": "1.12.3",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz",
- "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g=="
- },
"once": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
@@ -575,11 +548,6 @@
"wrappy": "1"
}
},
- "parse-cache-control": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/parse-cache-control/-/parse-cache-control-1.0.1.tgz",
- "integrity": "sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg=="
- },
"path-is-absolute": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
@@ -595,27 +563,11 @@
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
"integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
},
- "promise": {
- "version": "8.3.0",
- "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz",
- "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==",
- "requires": {
- "asap": "~2.0.6"
- }
- },
"q": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz",
"integrity": "sha1-VXBbzZPF82c1MMLCy8DCs63cKG4="
},
- "qs": {
- "version": "6.11.1",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.1.tgz",
- "integrity": "sha512-0wsrzgTz/kAVIeuxSjnpGC56rzYtr6JT/2BwEvMaPhFIoYa1aGO8LbzuU1R0uUYQkLpWBTOj0l/CLAJB64J6nQ==",
- "requires": {
- "side-channel": "^1.0.4"
- }
- },
"readable-stream": {
"version": "2.3.8",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
@@ -644,11 +596,11 @@
"integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw=="
},
"resolve": {
- "version": "1.22.1",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
- "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
+ "version": "1.22.8",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
+ "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
"requires": {
- "is-core-module": "^2.9.0",
+ "is-core-module": "^2.13.0",
"path-parse": "^1.0.7",
"supports-preserve-symlinks-flag": "^1.0.0"
}
@@ -658,15 +610,26 @@
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
},
+ "sanitize-filename": {
+ "version": "1.6.3",
+ "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz",
+ "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==",
+ "requires": {
+ "truncate-utf8-bytes": "^1.0.0"
+ }
+ },
"sax": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
- "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz",
+ "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA=="
},
"semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
+ "requires": {
+ "lru-cache": "^6.0.0"
+ }
},
"shelljs": {
"version": "0.8.5",
@@ -678,16 +641,6 @@
"rechoir": "^0.6.2"
}
},
- "side-channel": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
- "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
- "requires": {
- "call-bind": "^1.0.0",
- "get-intrinsic": "^1.0.2",
- "object-inspect": "^1.9.0"
- }
- },
"string_decoder": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
@@ -701,24 +654,6 @@
"resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
"integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w=="
},
- "sync-request": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/sync-request/-/sync-request-6.1.0.tgz",
- "integrity": "sha512-8fjNkrNlNCrVc/av+Jn+xxqfCjYaBoHqCsDz6mt030UMxJGr+GSfCV1dQt2gRtlL63+VPidwDVLr7V2OcTSdRw==",
- "requires": {
- "http-response-object": "^3.0.1",
- "sync-rpc": "^1.2.1",
- "then-request": "^6.0.0"
- }
- },
- "sync-rpc": {
- "version": "1.3.6",
- "resolved": "https://registry.npmjs.org/sync-rpc/-/sync-rpc-1.3.6.tgz",
- "integrity": "sha512-J8jTXuZzRlvU7HemDgHi3pGnh/rkoqR/OZSjhTyyZrEkkYQbk7Z33AXp37mkPfPpfdOuj7Ex3H/TJM1z48uPQw==",
- "requires": {
- "get-port": "^3.1.0"
- }
- },
"tar-stream": {
"version": "1.6.2",
"resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz",
@@ -733,31 +668,6 @@
"xtend": "^4.0.0"
}
},
- "then-request": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/then-request/-/then-request-6.0.2.tgz",
- "integrity": "sha512-3ZBiG7JvP3wbDzA9iNY5zJQcHL4jn/0BWtXIkagfz7QgOL/LqjCEOBQuJNZfu0XYnv5JhKh+cDxCPM4ILrqruA==",
- "requires": {
- "@types/concat-stream": "^1.6.0",
- "@types/form-data": "0.0.33",
- "@types/node": "^8.0.0",
- "@types/qs": "^6.2.31",
- "caseless": "~0.12.0",
- "concat-stream": "^1.6.0",
- "form-data": "^2.2.0",
- "http-basic": "^8.1.1",
- "http-response-object": "^3.0.1",
- "promise": "^8.0.0",
- "qs": "^6.4.0"
- },
- "dependencies": {
- "@types/node": {
- "version": "8.10.66",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.66.tgz",
- "integrity": "sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw=="
- }
- }
- },
"to-buffer": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz",
@@ -786,10 +696,13 @@
"resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz",
"integrity": "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ=="
},
- "typedarray": {
- "version": "0.0.6",
- "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
- "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA=="
+ "truncate-utf8-bytes": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz",
+ "integrity": "sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==",
+ "requires": {
+ "utf8-byte-length": "^1.0.1"
+ }
},
"typescript": {
"version": "5.1.6",
@@ -802,6 +715,11 @@
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
"integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="
},
+ "utf8-byte-length": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz",
+ "integrity": "sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA=="
+ },
"util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
@@ -823,24 +741,29 @@
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
},
"xml2js": {
- "version": "0.4.13",
- "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.13.tgz",
- "integrity": "sha512-BoxD65qWA2p4znzbaati/Td19uFEc0X6ydj0bFphJO62RrNaGqOyW6ljLWPo3GKDbvW/6dnxAoRX01BsgEWsMA==",
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz",
+ "integrity": "sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==",
"requires": {
"sax": ">=0.6.0",
- "xmlbuilder": ">=2.4.6"
+ "xmlbuilder": "~11.0.0"
}
},
"xmlbuilder": {
- "version": "15.1.1",
- "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz",
- "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg=="
+ "version": "11.0.1",
+ "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz",
+ "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA=="
},
"xtend": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
"integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="
},
+ "yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
+ },
"zip-stream": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-1.2.0.tgz",
diff --git a/Tasks/FileTransformV1/_buildConfigs/Node20/package.json b/Tasks/FileTransformV1/_buildConfigs/Node20/package.json
index ecfe8517f577..adbf0696b431 100644
--- a/Tasks/FileTransformV1/_buildConfigs/Node20/package.json
+++ b/Tasks/FileTransformV1/_buildConfigs/Node20/package.json
@@ -20,7 +20,7 @@
"@types/mocha": "^5.2.7",
"@types/node": "^20.3.1",
"@types/q": "1.0.7",
- "azure-pipelines-tasks-webdeployment-common": "^4.219.1",
+ "azure-pipelines-tasks-webdeployment-common": "^4.230.6",
"q": "1.4.1"
},
"devDependencies": {
diff --git a/Tasks/FileTransformV1/package-lock.json b/Tasks/FileTransformV1/package-lock.json
index a9008ca4118c..9f368f5272f5 100644
--- a/Tasks/FileTransformV1/package-lock.json
+++ b/Tasks/FileTransformV1/package-lock.json
@@ -349,9 +349,9 @@
"integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw=="
},
"follow-redirects": {
- "version": "1.15.3",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz",
- "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q=="
+ "version": "1.15.5",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz",
+ "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw=="
},
"fs-constants": {
"version": "1.0.0",
diff --git a/Tasks/FileTransformV1/task.json b/Tasks/FileTransformV1/task.json
index b4908378c203..22a3ee46be09 100644
--- a/Tasks/FileTransformV1/task.json
+++ b/Tasks/FileTransformV1/task.json
@@ -17,7 +17,7 @@
],
"version": {
"Major": 1,
- "Minor": 233,
+ "Minor": 235,
"Patch": 0
},
"instanceNameFormat": "File Transform: $(Package)",
diff --git a/Tasks/FileTransformV1/task.loc.json b/Tasks/FileTransformV1/task.loc.json
index 120c2b2466e6..935d5733c530 100644
--- a/Tasks/FileTransformV1/task.loc.json
+++ b/Tasks/FileTransformV1/task.loc.json
@@ -17,7 +17,7 @@
],
"version": {
"Major": 1,
- "Minor": 233,
+ "Minor": 235,
"Patch": 0
},
"instanceNameFormat": "ms-resource:loc.instanceNameFormat",
diff --git a/Tasks/IISWebAppDeploymentOnMachineGroupV0/_buildConfigs/Node20/package-lock.json b/Tasks/IISWebAppDeploymentOnMachineGroupV0/_buildConfigs/Node20/package-lock.json
index 87d641575f52..53cf94110177 100644
--- a/Tasks/IISWebAppDeploymentOnMachineGroupV0/_buildConfigs/Node20/package-lock.json
+++ b/Tasks/IISWebAppDeploymentOnMachineGroupV0/_buildConfigs/Node20/package-lock.json
@@ -23,9 +23,9 @@
"integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ=="
},
"@types/node": {
- "version": "20.10.4",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.4.tgz",
- "integrity": "sha512-D08YG6rr8X90YB56tSIuBaddy/UXAA9RKJoFvrsnogAum/0pmjkgi4+2nx96A330FmioegBWmEYQ+syqCFaveg==",
+ "version": "20.11.16",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.16.tgz",
+ "integrity": "sha512-gKb0enTmRCzXSSUJDq6/sPcqrfCv2mkkG6Jt/clpn5eiCbKTY+SgZUxo+p8ZKMof5dCp9vHQUAB7wOUTod22wQ==",
"requires": {
"undici-types": "~5.26.4"
}
@@ -129,9 +129,9 @@
}
},
"azure-pipelines-tasks-webdeployment-common": {
- "version": "4.233.0",
- "resolved": "https://registry.npmjs.org/azure-pipelines-tasks-webdeployment-common/-/azure-pipelines-tasks-webdeployment-common-4.233.0.tgz",
- "integrity": "sha512-KjWLNfR8A61q0Ds+xe2MwlCDtxY75mMxMM3nwTSg9MOap/F5dpGWzIDV4uXFTWGiiENS4++XgFoOYvB4RO7LFA==",
+ "version": "4.230.6",
+ "resolved": "https://registry.npmjs.org/azure-pipelines-tasks-webdeployment-common/-/azure-pipelines-tasks-webdeployment-common-4.230.6.tgz",
+ "integrity": "sha512-lEk6mDpEMIwZ1JZEBH6nQnio7R12gNGECXUYhbyLpL6n/OT+eWd3hWkc4f0F4GfKRSSjpsGEmX56qdAwfpFdeA==",
"requires": {
"@types/ltx": "3.0.6",
"@types/mocha": "^5.2.7",
diff --git a/Tasks/IISWebAppDeploymentOnMachineGroupV0/package-lock.json b/Tasks/IISWebAppDeploymentOnMachineGroupV0/package-lock.json
index bd9d341838ad..8a311a4d4961 100644
--- a/Tasks/IISWebAppDeploymentOnMachineGroupV0/package-lock.json
+++ b/Tasks/IISWebAppDeploymentOnMachineGroupV0/package-lock.json
@@ -349,9 +349,9 @@
"integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw=="
},
"follow-redirects": {
- "version": "1.15.3",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz",
- "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q=="
+ "version": "1.15.5",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz",
+ "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw=="
},
"fs-constants": {
"version": "1.0.0",
diff --git a/Tasks/IISWebAppDeploymentOnMachineGroupV0/task.json b/Tasks/IISWebAppDeploymentOnMachineGroupV0/task.json
index 377731567190..b0fe97606952 100644
--- a/Tasks/IISWebAppDeploymentOnMachineGroupV0/task.json
+++ b/Tasks/IISWebAppDeploymentOnMachineGroupV0/task.json
@@ -16,7 +16,7 @@
"author": "Microsoft Corporation",
"version": {
"Major": 0,
- "Minor": 234,
+ "Minor": 235,
"Patch": 0
},
"demands": [],
diff --git a/Tasks/IISWebAppDeploymentOnMachineGroupV0/task.loc.json b/Tasks/IISWebAppDeploymentOnMachineGroupV0/task.loc.json
index f1b1af78e796..39fb4e13185a 100644
--- a/Tasks/IISWebAppDeploymentOnMachineGroupV0/task.loc.json
+++ b/Tasks/IISWebAppDeploymentOnMachineGroupV0/task.loc.json
@@ -16,7 +16,7 @@
"author": "Microsoft Corporation",
"version": {
"Major": 0,
- "Minor": 234,
+ "Minor": 235,
"Patch": 0
},
"demands": [],
diff --git a/Tasks/MavenV2/_buildConfigs/Node20/package-lock.json b/Tasks/MavenV2/_buildConfigs/Node20/package-lock.json
index 561d0e740e30..8c66c16e1e08 100644
--- a/Tasks/MavenV2/_buildConfigs/Node20/package-lock.json
+++ b/Tasks/MavenV2/_buildConfigs/Node20/package-lock.json
@@ -4,6 +4,11 @@
"lockfileVersion": 1,
"requires": true,
"dependencies": {
+ "@aashutoshrathi/word-wrap": {
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz",
+ "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA=="
+ },
"@babel/code-frame": {
"version": "7.12.11",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz",
@@ -13,17 +18,17 @@
}
},
"@babel/helper-validator-identifier": {
- "version": "7.19.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz",
- "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w=="
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
+ "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A=="
},
"@babel/highlight": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
- "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz",
+ "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==",
"requires": {
- "@babel/helper-validator-identifier": "^7.18.6",
- "chalk": "^2.0.0",
+ "@babel/helper-validator-identifier": "^7.22.20",
+ "chalk": "^2.4.2",
"js-tokens": "^4.0.0"
},
"dependencies": {
@@ -219,9 +224,9 @@
"integrity": "sha1-m6It838H43gP/4Ux0aOOYz+UV6U="
},
"@types/node": {
- "version": "20.11.0",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.0.tgz",
- "integrity": "sha512-o9bjXmDNcF7GbM4CNQpmi+TutCgap/K3w1JyKgxAjqx41zp9qlIAVFi0IhCNsJcXolEqLWhbFbEeL0PvYm4pcQ==",
+ "version": "20.11.16",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.16.tgz",
+ "integrity": "sha512-gKb0enTmRCzXSSUJDq6/sPcqrfCv2mkkG6Jt/clpn5eiCbKTY+SgZUxo+p8ZKMof5dCp9vHQUAB7wOUTod22wQ==",
"requires": {
"undici-types": "~5.26.4"
}
@@ -365,21 +370,17 @@
}
},
"azure-pipelines-tasks-codeanalysis-common": {
- "version": "2.223.0",
- "resolved": "https://registry.npmjs.org/azure-pipelines-tasks-codeanalysis-common/-/azure-pipelines-tasks-codeanalysis-common-2.223.0.tgz",
- "integrity": "sha512-KiLlnTWvS9otMCHxT7OgCCOmlIjP51HpcCLjFtJFChRwb0VDcX/UFFB/KBskAUiOSSjAYNTZDVvkMnDrMPiM5Q==",
+ "version": "2.226.0",
+ "resolved": "https://registry.npmjs.org/azure-pipelines-tasks-codeanalysis-common/-/azure-pipelines-tasks-codeanalysis-common-2.226.0.tgz",
+ "integrity": "sha512-WzwnRX61IPkgigA+4kmiOIMMueX+aUOu7OYKWjpi297gVe8M067bMwUMo5u+UWgVobudblKdCWt8uqgyxeyR2Q==",
"requires": {
"@types/node": "^10.17.0",
"azure-pipelines-task-lib": "^3.1.0",
- "cheerio": "1.0.0-rc.10",
- "fs-extra": "^0.30.0",
"glob": "7.1.0",
"mocha": "^8.4.0",
- "os": "^0.1.1",
"rewire": "^6.0.0",
"sinon": "^14.0.0",
- "strip-bom": "^3.0.0",
- "xml2js": "^0.4.17"
+ "xml2js": "^0.6.2"
},
"dependencies": {
"@types/node": {
@@ -484,6 +485,15 @@
"requires": {
"brace-expansion": "^1.1.7"
}
+ },
+ "xml2js": {
+ "version": "0.4.23",
+ "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz",
+ "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==",
+ "requires": {
+ "sax": ">=0.6.0",
+ "xmlbuilder": "~11.0.0"
+ }
}
}
},
@@ -533,9 +543,9 @@
}
},
"semver": {
- "version": "7.3.4",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz",
- "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==",
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
"requires": {
"lru-cache": "^6.0.0"
}
@@ -571,9 +581,9 @@
"integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ=="
},
"@types/node": {
- "version": "16.18.59",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.59.tgz",
- "integrity": "sha512-PJ1w2cNeKUEdey4LiPra0ZuxZFOGvetswE8qHRriV/sUkL5Al4tTmPV9D2+Y/TPIxTHHgxTfRjZVKWhPw/ORhQ=="
+ "version": "16.18.79",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.79.tgz",
+ "integrity": "sha512-Qd7jdLR5zmnIyMhfDrfPqN5tUCvreVpP3Qrf2oSM+F7SNzlb/MwHISGUkdFHtevfkPJ3iAGyeQI/jsbh9EStgQ=="
},
"@types/q": {
"version": "1.5.2",
@@ -781,20 +791,6 @@
}
}
},
- "cheerio": {
- "version": "1.0.0-rc.10",
- "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.10.tgz",
- "integrity": "sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==",
- "requires": {
- "cheerio-select": "^1.5.0",
- "dom-serializer": "^1.3.2",
- "domhandler": "^4.2.0",
- "htmlparser2": "^6.1.0",
- "parse5": "^6.0.1",
- "parse5-htmlparser2-tree-adapter": "^6.0.1",
- "tslib": "^2.2.0"
- }
- },
"cheerio-select": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-1.6.0.tgz",
@@ -1022,11 +1018,27 @@
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
},
"enquirer": {
- "version": "2.3.6",
- "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz",
- "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==",
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz",
+ "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==",
"requires": {
- "ansi-colors": "^4.1.1"
+ "ansi-colors": "^4.1.1",
+ "strip-ansi": "^6.0.1"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="
+ },
+ "strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "requires": {
+ "ansi-regex": "^5.0.1"
+ }
+ }
}
},
"entities": {
@@ -1114,9 +1126,9 @@
}
},
"semver": {
- "version": "7.5.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz",
- "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==",
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
"requires": {
"lru-cache": "^6.0.0"
}
@@ -1278,11 +1290,12 @@
"integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ=="
},
"flat-cache": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
- "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz",
+ "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==",
"requires": {
- "flatted": "^3.1.0",
+ "flatted": "^3.2.9",
+ "keyv": "^4.5.3",
"rimraf": "^3.0.2"
},
"dependencies": {
@@ -1297,14 +1310,14 @@
}
},
"flatted": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz",
- "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ=="
+ "version": "3.2.9",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz",
+ "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ=="
},
"follow-redirects": {
- "version": "1.15.3",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz",
- "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q=="
+ "version": "1.15.5",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz",
+ "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw=="
},
"form-data": {
"version": "2.5.1",
@@ -1334,9 +1347,9 @@
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
},
"fsevents": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
- "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
"optional": true
},
"function-bind": {
@@ -1391,9 +1404,9 @@
}
},
"globals": {
- "version": "13.20.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz",
- "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==",
+ "version": "13.24.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
+ "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
"requires": {
"type-fest": "^0.20.2"
}
@@ -1602,6 +1615,11 @@
"resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz",
"integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A=="
},
+ "json-buffer": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
+ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ=="
+ },
"json-schema-traverse": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
@@ -1621,9 +1639,17 @@
}
},
"just-extend": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz",
- "integrity": "sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg=="
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-6.2.0.tgz",
+ "integrity": "sha512-cYofQu2Xpom82S6qD778jBDpwvvy39s1l/hrYij2u9AMdQcGRpaBu6kY4mVhuno5kJVi1DAz4aiphA2WI1/OAw=="
+ },
+ "keyv": {
+ "version": "4.5.4",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
+ "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
+ "requires": {
+ "json-buffer": "3.0.1"
+ }
},
"klaw": {
"version": "1.3.1",
@@ -1778,33 +1804,31 @@
"integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw=="
},
"nise": {
- "version": "5.1.4",
- "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.4.tgz",
- "integrity": "sha512-8+Ib8rRJ4L0o3kfmyVCL7gzrohyDe0cMFTBa2d364yIrEGMEoetznKJx899YxjybU6bL9SQkYPSBBs1gyYs8Xg==",
- "requires": {
- "@sinonjs/commons": "^2.0.0",
- "@sinonjs/fake-timers": "^10.0.2",
- "@sinonjs/text-encoding": "^0.7.1",
- "just-extend": "^4.0.2",
- "path-to-regexp": "^1.7.0"
+ "version": "5.1.9",
+ "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.9.tgz",
+ "integrity": "sha512-qOnoujW4SV6e40dYxJOb3uvuoPHtmLzIk4TFo+j0jPJoC+5Z9xja5qH5JZobEPsa8+YYphMrOSwnrshEhG2qww==",
+ "requires": {
+ "@sinonjs/commons": "^3.0.0",
+ "@sinonjs/fake-timers": "^11.2.2",
+ "@sinonjs/text-encoding": "^0.7.2",
+ "just-extend": "^6.2.0",
+ "path-to-regexp": "^6.2.1"
},
"dependencies": {
+ "@sinonjs/commons": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz",
+ "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==",
+ "requires": {
+ "type-detect": "4.0.8"
+ }
+ },
"@sinonjs/fake-timers": {
- "version": "10.2.0",
- "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.2.0.tgz",
- "integrity": "sha512-OPwQlEdg40HAj5KNF8WW6q2KG4Z+cBCZb3m4ninfTZKaBmbIJodviQsDBoYMPHkOyJJMHnOJo5j2+LKDOhOACg==",
+ "version": "11.2.2",
+ "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-11.2.2.tgz",
+ "integrity": "sha512-G2piCSxQ7oWOxwGSAyFHfPIsyeJGXYtc6mFbnFA+kRXkiEnTl8c/8jul2S329iFBnDI9HGoeWWAZvuvOkZccgw==",
"requires": {
"@sinonjs/commons": "^3.0.0"
- },
- "dependencies": {
- "@sinonjs/commons": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz",
- "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==",
- "requires": {
- "type-detect": "4.0.8"
- }
- }
}
}
}
@@ -1852,16 +1876,16 @@
}
},
"optionator": {
- "version": "0.9.1",
- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
- "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==",
+ "version": "0.9.3",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz",
+ "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==",
"requires": {
+ "@aashutoshrathi/word-wrap": "^1.2.3",
"deep-is": "^0.1.3",
"fast-levenshtein": "^2.0.6",
"levn": "^0.4.1",
"prelude-ls": "^1.2.1",
- "type-check": "^0.4.0",
- "word-wrap": "^1.2.3"
+ "type-check": "^0.4.0"
}
},
"os": {
@@ -1932,19 +1956,9 @@
"integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
},
"path-to-regexp": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz",
- "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==",
- "requires": {
- "isarray": "0.0.1"
- },
- "dependencies": {
- "isarray": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
- "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ=="
- }
- }
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz",
+ "integrity": "sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw=="
},
"picomatch": {
"version": "2.3.1",
@@ -1975,9 +1989,9 @@
}
},
"punycode": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz",
- "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA=="
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg=="
},
"q": {
"version": "1.5.1",
@@ -2090,9 +2104,9 @@
}
},
"sax": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
- "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz",
+ "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA=="
},
"semver": {
"version": "5.7.1",
@@ -2360,11 +2374,6 @@
"utf8-byte-length": "^1.0.1"
}
},
- "tslib": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.2.tgz",
- "integrity": "sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA=="
- },
"tunnel": {
"version": "0.0.6",
"resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
@@ -2448,9 +2457,9 @@
"integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A=="
},
"v8-compile-cache": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz",
- "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA=="
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz",
+ "integrity": "sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw=="
},
"which": {
"version": "2.0.2",
@@ -2468,11 +2477,6 @@
"string-width": "^1.0.2 || 2"
}
},
- "word-wrap": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
- "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ=="
- },
"workerpool": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.1.0.tgz",
@@ -2524,9 +2528,9 @@
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
},
"xml2js": {
- "version": "0.4.23",
- "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz",
- "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==",
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz",
+ "integrity": "sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==",
"requires": {
"sax": ">=0.6.0",
"xmlbuilder": "~11.0.0"
diff --git a/Tasks/MavenV2/_buildConfigs/Node20/package.json b/Tasks/MavenV2/_buildConfigs/Node20/package.json
index e81e172e1198..6fe91eec46fe 100644
--- a/Tasks/MavenV2/_buildConfigs/Node20/package.json
+++ b/Tasks/MavenV2/_buildConfigs/Node20/package.json
@@ -8,21 +8,21 @@
"url": "https://github.com/Microsoft/vso-agent-tasks/issues"
},
"dependencies": {
- "@types/node": "^20.11.0",
"@types/mocha": "^9.1.1",
+ "@types/node": "^20.11.0",
"@types/q": "^1.5.4",
"azure-pipelines-task-lib": "^5.0.0-preview.0",
- "azure-pipelines-tool-lib": "^2.0.7",
- "azure-pipelines-tasks-codeanalysis-common": "2.223.0",
+ "azure-pipelines-tasks-codeanalysis-common": "^2.226.0",
"azure-pipelines-tasks-codecoverage-tools": "2.201.0",
"azure-pipelines-tasks-java-common": "^2.0.0-preview.0",
"azure-pipelines-tasks-packaging-common": "^3.230.0",
+ "azure-pipelines-tool-lib": "^2.0.7",
"base-64": "^0.1.0",
"fs-extra": "^0.30.0",
"strip-bom": "^3.0.0",
"utf8": "^2.1.0",
"uuid": "^3.0.1",
- "xml2js": "^0.4.16"
+ "xml2js": "^0.6.2"
},
"devDependencies": {
"typescript": "5.1.6"
diff --git a/Tasks/MavenV2/package-lock.json b/Tasks/MavenV2/package-lock.json
index d14d61574b1f..18b800f6baaf 100644
--- a/Tasks/MavenV2/package-lock.json
+++ b/Tasks/MavenV2/package-lock.json
@@ -4,6 +4,11 @@
"lockfileVersion": 1,
"requires": true,
"dependencies": {
+ "@aashutoshrathi/word-wrap": {
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz",
+ "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA=="
+ },
"@babel/code-frame": {
"version": "7.12.11",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz",
@@ -13,17 +18,17 @@
}
},
"@babel/helper-validator-identifier": {
- "version": "7.19.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz",
- "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w=="
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
+ "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A=="
},
"@babel/highlight": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
- "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz",
+ "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==",
"requires": {
- "@babel/helper-validator-identifier": "^7.18.6",
- "chalk": "^2.0.0",
+ "@babel/helper-validator-identifier": "^7.22.20",
+ "chalk": "^2.4.2",
"js-tokens": "^4.0.0"
},
"dependencies": {
@@ -362,21 +367,17 @@
}
},
"azure-pipelines-tasks-codeanalysis-common": {
- "version": "2.223.0",
- "resolved": "https://registry.npmjs.org/azure-pipelines-tasks-codeanalysis-common/-/azure-pipelines-tasks-codeanalysis-common-2.223.0.tgz",
- "integrity": "sha512-KiLlnTWvS9otMCHxT7OgCCOmlIjP51HpcCLjFtJFChRwb0VDcX/UFFB/KBskAUiOSSjAYNTZDVvkMnDrMPiM5Q==",
+ "version": "2.226.0",
+ "resolved": "https://registry.npmjs.org/azure-pipelines-tasks-codeanalysis-common/-/azure-pipelines-tasks-codeanalysis-common-2.226.0.tgz",
+ "integrity": "sha512-WzwnRX61IPkgigA+4kmiOIMMueX+aUOu7OYKWjpi297gVe8M067bMwUMo5u+UWgVobudblKdCWt8uqgyxeyR2Q==",
"requires": {
"@types/node": "^10.17.0",
"azure-pipelines-task-lib": "^3.1.0",
- "cheerio": "1.0.0-rc.10",
- "fs-extra": "^0.30.0",
"glob": "7.1.0",
"mocha": "^8.4.0",
- "os": "^0.1.1",
"rewire": "^6.0.0",
"sinon": "^14.0.0",
- "strip-bom": "^3.0.0",
- "xml2js": "^0.4.17"
+ "xml2js": "^0.6.2"
},
"dependencies": {
"@types/node": {
@@ -481,6 +482,15 @@
"requires": {
"brace-expansion": "^1.1.7"
}
+ },
+ "xml2js": {
+ "version": "0.4.23",
+ "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz",
+ "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==",
+ "requires": {
+ "sax": ">=0.6.0",
+ "xmlbuilder": "~11.0.0"
+ }
}
}
},
@@ -530,9 +540,9 @@
}
},
"semver": {
- "version": "7.3.4",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz",
- "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==",
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
"requires": {
"lru-cache": "^6.0.0"
}
@@ -773,20 +783,6 @@
}
}
},
- "cheerio": {
- "version": "1.0.0-rc.10",
- "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.10.tgz",
- "integrity": "sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==",
- "requires": {
- "cheerio-select": "^1.5.0",
- "dom-serializer": "^1.3.2",
- "domhandler": "^4.2.0",
- "htmlparser2": "^6.1.0",
- "parse5": "^6.0.1",
- "parse5-htmlparser2-tree-adapter": "^6.0.1",
- "tslib": "^2.2.0"
- }
- },
"cheerio-select": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-1.6.0.tgz",
@@ -1014,11 +1010,27 @@
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
},
"enquirer": {
- "version": "2.3.6",
- "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz",
- "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==",
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz",
+ "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==",
"requires": {
- "ansi-colors": "^4.1.1"
+ "ansi-colors": "^4.1.1",
+ "strip-ansi": "^6.0.1"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="
+ },
+ "strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "requires": {
+ "ansi-regex": "^5.0.1"
+ }
+ }
}
},
"entities": {
@@ -1106,9 +1118,9 @@
}
},
"semver": {
- "version": "7.5.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz",
- "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==",
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
"requires": {
"lru-cache": "^6.0.0"
}
@@ -1270,11 +1282,12 @@
"integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ=="
},
"flat-cache": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
- "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz",
+ "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==",
"requires": {
- "flatted": "^3.1.0",
+ "flatted": "^3.2.9",
+ "keyv": "^4.5.3",
"rimraf": "^3.0.2"
},
"dependencies": {
@@ -1289,14 +1302,14 @@
}
},
"flatted": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz",
- "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ=="
+ "version": "3.2.9",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz",
+ "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ=="
},
"follow-redirects": {
- "version": "1.15.3",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz",
- "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q=="
+ "version": "1.15.5",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz",
+ "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw=="
},
"form-data": {
"version": "2.5.1",
@@ -1326,9 +1339,9 @@
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
},
"fsevents": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
- "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
"optional": true
},
"function-bind": {
@@ -1383,9 +1396,9 @@
}
},
"globals": {
- "version": "13.20.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz",
- "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==",
+ "version": "13.24.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
+ "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
"requires": {
"type-fest": "^0.20.2"
}
@@ -1594,6 +1607,11 @@
"resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz",
"integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A=="
},
+ "json-buffer": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
+ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ=="
+ },
"json-schema-traverse": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
@@ -1613,9 +1631,17 @@
}
},
"just-extend": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz",
- "integrity": "sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg=="
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-6.2.0.tgz",
+ "integrity": "sha512-cYofQu2Xpom82S6qD778jBDpwvvy39s1l/hrYij2u9AMdQcGRpaBu6kY4mVhuno5kJVi1DAz4aiphA2WI1/OAw=="
+ },
+ "keyv": {
+ "version": "4.5.4",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
+ "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
+ "requires": {
+ "json-buffer": "3.0.1"
+ }
},
"klaw": {
"version": "1.3.1",
@@ -1770,33 +1796,31 @@
"integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw=="
},
"nise": {
- "version": "5.1.4",
- "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.4.tgz",
- "integrity": "sha512-8+Ib8rRJ4L0o3kfmyVCL7gzrohyDe0cMFTBa2d364yIrEGMEoetznKJx899YxjybU6bL9SQkYPSBBs1gyYs8Xg==",
- "requires": {
- "@sinonjs/commons": "^2.0.0",
- "@sinonjs/fake-timers": "^10.0.2",
- "@sinonjs/text-encoding": "^0.7.1",
- "just-extend": "^4.0.2",
- "path-to-regexp": "^1.7.0"
+ "version": "5.1.9",
+ "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.9.tgz",
+ "integrity": "sha512-qOnoujW4SV6e40dYxJOb3uvuoPHtmLzIk4TFo+j0jPJoC+5Z9xja5qH5JZobEPsa8+YYphMrOSwnrshEhG2qww==",
+ "requires": {
+ "@sinonjs/commons": "^3.0.0",
+ "@sinonjs/fake-timers": "^11.2.2",
+ "@sinonjs/text-encoding": "^0.7.2",
+ "just-extend": "^6.2.0",
+ "path-to-regexp": "^6.2.1"
},
"dependencies": {
+ "@sinonjs/commons": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz",
+ "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==",
+ "requires": {
+ "type-detect": "4.0.8"
+ }
+ },
"@sinonjs/fake-timers": {
- "version": "10.2.0",
- "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.2.0.tgz",
- "integrity": "sha512-OPwQlEdg40HAj5KNF8WW6q2KG4Z+cBCZb3m4ninfTZKaBmbIJodviQsDBoYMPHkOyJJMHnOJo5j2+LKDOhOACg==",
+ "version": "11.2.2",
+ "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-11.2.2.tgz",
+ "integrity": "sha512-G2piCSxQ7oWOxwGSAyFHfPIsyeJGXYtc6mFbnFA+kRXkiEnTl8c/8jul2S329iFBnDI9HGoeWWAZvuvOkZccgw==",
"requires": {
"@sinonjs/commons": "^3.0.0"
- },
- "dependencies": {
- "@sinonjs/commons": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz",
- "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==",
- "requires": {
- "type-detect": "4.0.8"
- }
- }
}
}
}
@@ -1844,16 +1868,16 @@
}
},
"optionator": {
- "version": "0.9.1",
- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
- "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==",
+ "version": "0.9.3",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz",
+ "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==",
"requires": {
+ "@aashutoshrathi/word-wrap": "^1.2.3",
"deep-is": "^0.1.3",
"fast-levenshtein": "^2.0.6",
"levn": "^0.4.1",
"prelude-ls": "^1.2.1",
- "type-check": "^0.4.0",
- "word-wrap": "^1.2.3"
+ "type-check": "^0.4.0"
}
},
"os": {
@@ -1924,19 +1948,9 @@
"integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
},
"path-to-regexp": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz",
- "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==",
- "requires": {
- "isarray": "0.0.1"
- },
- "dependencies": {
- "isarray": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
- "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ=="
- }
- }
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz",
+ "integrity": "sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw=="
},
"picomatch": {
"version": "2.3.1",
@@ -1967,9 +1981,9 @@
}
},
"punycode": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz",
- "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA=="
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg=="
},
"q": {
"version": "1.5.1",
@@ -2082,9 +2096,9 @@
}
},
"sax": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
- "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz",
+ "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA=="
},
"semver": {
"version": "5.7.1",
@@ -2352,11 +2366,6 @@
"utf8-byte-length": "^1.0.1"
}
},
- "tslib": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.2.tgz",
- "integrity": "sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA=="
- },
"tunnel": {
"version": "0.0.6",
"resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
@@ -2435,9 +2444,9 @@
"integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A=="
},
"v8-compile-cache": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz",
- "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA=="
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz",
+ "integrity": "sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw=="
},
"which": {
"version": "2.0.2",
@@ -2455,11 +2464,6 @@
"string-width": "^1.0.2 || 2"
}
},
- "word-wrap": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
- "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ=="
- },
"workerpool": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.1.0.tgz",
@@ -2511,9 +2515,9 @@
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
},
"xml2js": {
- "version": "0.4.23",
- "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz",
- "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==",
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz",
+ "integrity": "sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==",
"requires": {
"sax": ">=0.6.0",
"xmlbuilder": "~11.0.0"
diff --git a/Tasks/MavenV2/package.json b/Tasks/MavenV2/package.json
index 0f777a7d799c..5767f39b3ca3 100644
--- a/Tasks/MavenV2/package.json
+++ b/Tasks/MavenV2/package.json
@@ -8,21 +8,21 @@
"url": "https://github.com/Microsoft/vso-agent-tasks/issues"
},
"dependencies": {
- "@types/node": "^16.11.39",
"@types/mocha": "^9.1.1",
+ "@types/node": "^16.11.39",
"@types/q": "^1.5.4",
"azure-pipelines-task-lib": "^5.0.0-preview.0",
- "azure-pipelines-tool-lib": "^2.0.7",
- "azure-pipelines-tasks-codeanalysis-common": "2.223.0",
+ "azure-pipelines-tasks-codeanalysis-common": "^2.226.0",
"azure-pipelines-tasks-codecoverage-tools": "2.201.0",
"azure-pipelines-tasks-java-common": "^2.0.0-preview.0",
"azure-pipelines-tasks-packaging-common": "^3.230.0",
+ "azure-pipelines-tool-lib": "^2.0.7",
"base-64": "^0.1.0",
"fs-extra": "^0.30.0",
"strip-bom": "^3.0.0",
"utf8": "^2.1.0",
"uuid": "^3.0.1",
- "xml2js": "^0.4.16"
+ "xml2js": "^0.6.2"
},
"devDependencies": {
"typescript": "4.0.2"
diff --git a/Tasks/MavenV2/task.json b/Tasks/MavenV2/task.json
index 31a04d55233c..7af081046f90 100644
--- a/Tasks/MavenV2/task.json
+++ b/Tasks/MavenV2/task.json
@@ -17,8 +17,8 @@
"author": "Microsoft Corporation",
"version": {
"Major": 2,
- "Minor": 231,
- "Patch": 5
+ "Minor": 235,
+ "Patch": 0
},
"releaseNotes": "Configuration of the SonarQube analysis was moved to the [SonarQube](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarqube) or [SonarCloud](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarcloud) extensions, in task `Prepare Analysis Configuration`",
"demands": [
diff --git a/Tasks/MavenV2/task.loc.json b/Tasks/MavenV2/task.loc.json
index e3acd09df270..5dc4db48a0fe 100644
--- a/Tasks/MavenV2/task.loc.json
+++ b/Tasks/MavenV2/task.loc.json
@@ -17,8 +17,8 @@
"author": "Microsoft Corporation",
"version": {
"Major": 2,
- "Minor": 231,
- "Patch": 5
+ "Minor": 235,
+ "Patch": 0
},
"releaseNotes": "ms-resource:loc.releaseNotes",
"demands": [
diff --git a/Tasks/MavenV3/_buildConfigs/Node20/package-lock.json b/Tasks/MavenV3/_buildConfigs/Node20/package-lock.json
index 4081c586b3ac..26aeb212696a 100644
--- a/Tasks/MavenV3/_buildConfigs/Node20/package-lock.json
+++ b/Tasks/MavenV3/_buildConfigs/Node20/package-lock.json
@@ -4,6 +4,11 @@
"lockfileVersion": 1,
"requires": true,
"dependencies": {
+ "@aashutoshrathi/word-wrap": {
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz",
+ "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA=="
+ },
"@babel/code-frame": {
"version": "7.12.11",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz",
@@ -13,17 +18,17 @@
}
},
"@babel/helper-validator-identifier": {
- "version": "7.19.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz",
- "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w=="
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
+ "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A=="
},
"@babel/highlight": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
- "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz",
+ "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==",
"requires": {
- "@babel/helper-validator-identifier": "^7.18.6",
- "chalk": "^2.0.0",
+ "@babel/helper-validator-identifier": "^7.22.20",
+ "chalk": "^2.4.2",
"js-tokens": "^4.0.0"
},
"dependencies": {
@@ -234,11 +239,11 @@
"integrity": "sha512-SwFMxO68Z6ERGFpPYBdmgfS5LloELzY16h/PMAhnxMog91JcHI5AJjW0HN56cGUPhV0nDb8xNWsJkhuDzr4lAQ=="
},
"@types/node": {
- "version": "20.8.4",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.4.tgz",
- "integrity": "sha512-ZVPnqU58giiCjSxjVUESDtdPk4QR5WQhhINbc9UBrKLU68MX5BF6kbQzTrkwbolyr0X8ChBpXfavr5mZFKZQ5A==",
+ "version": "20.11.16",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.16.tgz",
+ "integrity": "sha512-gKb0enTmRCzXSSUJDq6/sPcqrfCv2mkkG6Jt/clpn5eiCbKTY+SgZUxo+p8ZKMof5dCp9vHQUAB7wOUTod22wQ==",
"requires": {
- "undici-types": "~5.25.1"
+ "undici-types": "~5.26.4"
}
},
"@types/parse5": {
@@ -416,21 +421,17 @@
}
},
"azure-pipelines-tasks-codeanalysis-common": {
- "version": "2.223.0",
- "resolved": "https://registry.npmjs.org/azure-pipelines-tasks-codeanalysis-common/-/azure-pipelines-tasks-codeanalysis-common-2.223.0.tgz",
- "integrity": "sha512-KiLlnTWvS9otMCHxT7OgCCOmlIjP51HpcCLjFtJFChRwb0VDcX/UFFB/KBskAUiOSSjAYNTZDVvkMnDrMPiM5Q==",
+ "version": "2.226.0",
+ "resolved": "https://registry.npmjs.org/azure-pipelines-tasks-codeanalysis-common/-/azure-pipelines-tasks-codeanalysis-common-2.226.0.tgz",
+ "integrity": "sha512-WzwnRX61IPkgigA+4kmiOIMMueX+aUOu7OYKWjpi297gVe8M067bMwUMo5u+UWgVobudblKdCWt8uqgyxeyR2Q==",
"requires": {
"@types/node": "^10.17.0",
"azure-pipelines-task-lib": "^3.1.0",
- "cheerio": "1.0.0-rc.10",
- "fs-extra": "^0.30.0",
"glob": "7.1.0",
"mocha": "^8.4.0",
- "os": "^0.1.1",
"rewire": "^6.0.0",
"sinon": "^14.0.0",
- "strip-bom": "^3.0.0",
- "xml2js": "^0.4.17"
+ "xml2js": "^0.6.2"
},
"dependencies": {
"@types/node": {
@@ -535,6 +536,15 @@
"requires": {
"brace-expansion": "^1.1.7"
}
+ },
+ "xml2js": {
+ "version": "0.4.23",
+ "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz",
+ "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==",
+ "requires": {
+ "sax": ">=0.6.0",
+ "xmlbuilder": "~11.0.0"
+ }
}
}
},
@@ -584,9 +594,9 @@
}
},
"semver": {
- "version": "7.3.5",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
- "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
"requires": {
"lru-cache": "^6.0.0"
}
@@ -622,9 +632,9 @@
"integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ=="
},
"@types/node": {
- "version": "16.18.59",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.59.tgz",
- "integrity": "sha512-PJ1w2cNeKUEdey4LiPra0ZuxZFOGvetswE8qHRriV/sUkL5Al4tTmPV9D2+Y/TPIxTHHgxTfRjZVKWhPw/ORhQ=="
+ "version": "16.18.79",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.79.tgz",
+ "integrity": "sha512-Qd7jdLR5zmnIyMhfDrfPqN5tUCvreVpP3Qrf2oSM+F7SNzlb/MwHISGUkdFHtevfkPJ3iAGyeQI/jsbh9EStgQ=="
},
"@types/q": {
"version": "1.5.2",
@@ -837,20 +847,6 @@
}
}
},
- "cheerio": {
- "version": "1.0.0-rc.10",
- "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.10.tgz",
- "integrity": "sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==",
- "requires": {
- "cheerio-select": "^1.5.0",
- "dom-serializer": "^1.3.2",
- "domhandler": "^4.2.0",
- "htmlparser2": "^6.1.0",
- "parse5": "^6.0.1",
- "parse5-htmlparser2-tree-adapter": "^6.0.1",
- "tslib": "^2.2.0"
- }
- },
"cheerio-select": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-1.6.0.tgz",
@@ -1121,11 +1117,27 @@
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
},
"enquirer": {
- "version": "2.3.6",
- "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz",
- "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==",
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz",
+ "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==",
"requires": {
- "ansi-colors": "^4.1.1"
+ "ansi-colors": "^4.1.1",
+ "strip-ansi": "^6.0.1"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="
+ },
+ "strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "requires": {
+ "ansi-regex": "^5.0.1"
+ }
+ }
}
},
"entities": {
@@ -1234,16 +1246,16 @@
}
},
"optionator": {
- "version": "0.9.1",
- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
- "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==",
+ "version": "0.9.3",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz",
+ "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==",
"requires": {
+ "@aashutoshrathi/word-wrap": "^1.2.3",
"deep-is": "^0.1.3",
"fast-levenshtein": "^2.0.6",
"levn": "^0.4.1",
"prelude-ls": "^1.2.1",
- "type-check": "^0.4.0",
- "word-wrap": "^1.2.3"
+ "type-check": "^0.4.0"
}
},
"prelude-ls": {
@@ -1252,9 +1264,9 @@
"integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g=="
},
"semver": {
- "version": "7.5.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz",
- "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==",
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
"requires": {
"lru-cache": "^6.0.0"
}
@@ -1422,11 +1434,12 @@
"integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ=="
},
"flat-cache": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
- "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz",
+ "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==",
"requires": {
- "flatted": "^3.1.0",
+ "flatted": "^3.2.9",
+ "keyv": "^4.5.3",
"rimraf": "^3.0.2"
},
"dependencies": {
@@ -1441,14 +1454,14 @@
}
},
"flatted": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz",
- "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ=="
+ "version": "3.2.9",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz",
+ "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ=="
},
"follow-redirects": {
- "version": "1.15.3",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz",
- "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q=="
+ "version": "1.15.5",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz",
+ "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw=="
},
"form-data": {
"version": "2.5.1",
@@ -1478,9 +1491,9 @@
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
},
"fsevents": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
- "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
"optional": true
},
"function-bind": {
@@ -1535,9 +1548,9 @@
}
},
"globals": {
- "version": "13.20.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz",
- "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==",
+ "version": "13.24.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
+ "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
"requires": {
"type-fest": "^0.20.2"
}
@@ -1828,29 +1841,14 @@
"combined-stream": "^1.0.8",
"mime-types": "^2.1.12"
}
- },
- "psl": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz",
- "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ=="
- },
- "punycode": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
- "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
- },
- "tough-cookie": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz",
- "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==",
- "requires": {
- "psl": "^1.1.33",
- "punycode": "^2.1.1",
- "universalify": "^0.1.2"
- }
}
}
},
+ "json-buffer": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
+ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ=="
+ },
"json-schema-traverse": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
@@ -1870,9 +1868,17 @@
}
},
"just-extend": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz",
- "integrity": "sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg=="
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-6.2.0.tgz",
+ "integrity": "sha512-cYofQu2Xpom82S6qD778jBDpwvvy39s1l/hrYij2u9AMdQcGRpaBu6kY4mVhuno5kJVi1DAz4aiphA2WI1/OAw=="
+ },
+ "keyv": {
+ "version": "4.5.4",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
+ "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
+ "requires": {
+ "json-buffer": "3.0.1"
+ }
},
"klaw": {
"version": "1.3.1",
@@ -1957,9 +1963,9 @@
}
},
"minimatch": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
- "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"requires": {
"brace-expansion": "^1.1.7"
}
@@ -2024,6 +2030,14 @@
"path-is-absolute": "^1.0.0"
}
},
+ "minimatch": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ },
"ms": {
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
@@ -2052,33 +2066,31 @@
"integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw=="
},
"nise": {
- "version": "5.1.4",
- "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.4.tgz",
- "integrity": "sha512-8+Ib8rRJ4L0o3kfmyVCL7gzrohyDe0cMFTBa2d364yIrEGMEoetznKJx899YxjybU6bL9SQkYPSBBs1gyYs8Xg==",
- "requires": {
- "@sinonjs/commons": "^2.0.0",
- "@sinonjs/fake-timers": "^10.0.2",
- "@sinonjs/text-encoding": "^0.7.1",
- "just-extend": "^4.0.2",
- "path-to-regexp": "^1.7.0"
+ "version": "5.1.9",
+ "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.9.tgz",
+ "integrity": "sha512-qOnoujW4SV6e40dYxJOb3uvuoPHtmLzIk4TFo+j0jPJoC+5Z9xja5qH5JZobEPsa8+YYphMrOSwnrshEhG2qww==",
+ "requires": {
+ "@sinonjs/commons": "^3.0.0",
+ "@sinonjs/fake-timers": "^11.2.2",
+ "@sinonjs/text-encoding": "^0.7.2",
+ "just-extend": "^6.2.0",
+ "path-to-regexp": "^6.2.1"
},
"dependencies": {
+ "@sinonjs/commons": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz",
+ "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==",
+ "requires": {
+ "type-detect": "4.0.8"
+ }
+ },
"@sinonjs/fake-timers": {
- "version": "10.2.0",
- "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.2.0.tgz",
- "integrity": "sha512-OPwQlEdg40HAj5KNF8WW6q2KG4Z+cBCZb3m4ninfTZKaBmbIJodviQsDBoYMPHkOyJJMHnOJo5j2+LKDOhOACg==",
+ "version": "11.2.2",
+ "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-11.2.2.tgz",
+ "integrity": "sha512-G2piCSxQ7oWOxwGSAyFHfPIsyeJGXYtc6mFbnFA+kRXkiEnTl8c/8jul2S329iFBnDI9HGoeWWAZvuvOkZccgw==",
"requires": {
"@sinonjs/commons": "^3.0.0"
- },
- "dependencies": {
- "@sinonjs/commons": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz",
- "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==",
- "requires": {
- "type-detect": "4.0.8"
- }
- }
}
}
}
@@ -2211,19 +2223,9 @@
"integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
},
"path-to-regexp": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz",
- "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==",
- "requires": {
- "isarray": "0.0.1"
- },
- "dependencies": {
- "isarray": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
- "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ=="
- }
- }
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz",
+ "integrity": "sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw=="
},
"picomatch": {
"version": "2.3.1",
@@ -2253,10 +2255,15 @@
"asap": "~2.0.6"
}
},
+ "psl": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz",
+ "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag=="
+ },
"punycode": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz",
- "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA=="
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg=="
},
"q": {
"version": "1.5.1",
@@ -2271,6 +2278,11 @@
"side-channel": "^1.0.4"
}
},
+ "querystringify": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
+ "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ=="
+ },
"randombytes": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
@@ -2324,6 +2336,11 @@
"resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
"integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw=="
},
+ "requires-port": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
+ "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ=="
+ },
"resolve": {
"version": "1.22.0",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz",
@@ -2374,9 +2391,9 @@
}
},
"sax": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
- "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz",
+ "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA=="
},
"saxes": {
"version": "5.0.1",
@@ -2655,6 +2672,24 @@
"is-number": "^7.0.0"
}
},
+ "tough-cookie": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz",
+ "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==",
+ "requires": {
+ "psl": "^1.1.33",
+ "punycode": "^2.1.1",
+ "universalify": "^0.2.0",
+ "url-parse": "^1.5.3"
+ },
+ "dependencies": {
+ "universalify": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz",
+ "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg=="
+ }
+ }
+ },
"tr46": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz",
@@ -2678,11 +2713,6 @@
"utf8-byte-length": "^1.0.1"
}
},
- "tslib": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.2.tgz",
- "integrity": "sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA=="
- },
"tunnel": {
"version": "0.0.6",
"resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
@@ -2733,14 +2763,9 @@
"integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A=="
},
"undici-types": {
- "version": "5.25.3",
- "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.25.3.tgz",
- "integrity": "sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA=="
- },
- "universalify": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
- "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg=="
+ "version": "5.26.5",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
+ "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="
},
"uri-js": {
"version": "4.4.1",
@@ -2750,6 +2775,15 @@
"punycode": "^2.1.0"
}
},
+ "url-parse": {
+ "version": "1.5.10",
+ "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz",
+ "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==",
+ "requires": {
+ "querystringify": "^2.1.1",
+ "requires-port": "^1.0.0"
+ }
+ },
"utf8": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/utf8/-/utf8-2.1.2.tgz",
@@ -2771,9 +2805,9 @@
"integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A=="
},
"v8-compile-cache": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz",
- "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA=="
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz",
+ "integrity": "sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw=="
},
"w3c-hr-time": {
"version": "1.0.2",
@@ -2836,9 +2870,9 @@
}
},
"word-wrap": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
- "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ=="
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
+ "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA=="
},
"workerpool": {
"version": "6.1.0",
@@ -2901,9 +2935,9 @@
"integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw=="
},
"xml2js": {
- "version": "0.4.23",
- "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz",
- "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==",
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz",
+ "integrity": "sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==",
"requires": {
"sax": ">=0.6.0",
"xmlbuilder": "~11.0.0"
diff --git a/Tasks/MavenV3/_buildConfigs/Node20/package.json b/Tasks/MavenV3/_buildConfigs/Node20/package.json
index da488db89fcc..bf0a16854d94 100644
--- a/Tasks/MavenV3/_buildConfigs/Node20/package.json
+++ b/Tasks/MavenV3/_buildConfigs/Node20/package.json
@@ -9,14 +9,14 @@
},
"dependencies": {
"@types/jsdom": "^16.2.14",
- "@types/node": "^20.3.1",
"@types/mocha": "^9.1.1",
+ "@types/node": "^20.3.1",
"azure-pipelines-task-lib": "^5.0.0-preview.0",
- "azure-pipelines-tool-lib": "^2.0.7",
- "azure-pipelines-tasks-codeanalysis-common": "2.223.0",
+ "azure-pipelines-tasks-codeanalysis-common": "^2.226.0",
"azure-pipelines-tasks-codecoverage-tools": "2.201.0",
"azure-pipelines-tasks-java-common": "2.198.1",
"azure-pipelines-tasks-packaging-common": "^3.230.0",
+ "azure-pipelines-tool-lib": "^2.0.7",
"base-64": "^0.1.0",
"fs-extra": "^0.30.0",
"jsdom": "^16.7.0",
@@ -24,7 +24,7 @@
"strip-bom": "^3.0.0",
"utf8": "^2.1.0",
"uuid": "^3.0.1",
- "xml2js": "^0.4.16"
+ "xml2js": "^0.6.2"
},
"devDependencies": {
"typescript": "5.1.6"
diff --git a/Tasks/MavenV3/package-lock.json b/Tasks/MavenV3/package-lock.json
index fdaff5508b2e..39cb2e24766a 100644
--- a/Tasks/MavenV3/package-lock.json
+++ b/Tasks/MavenV3/package-lock.json
@@ -4,6 +4,11 @@
"lockfileVersion": 1,
"requires": true,
"dependencies": {
+ "@aashutoshrathi/word-wrap": {
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz",
+ "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA=="
+ },
"@babel/code-frame": {
"version": "7.12.11",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz",
@@ -13,17 +18,17 @@
}
},
"@babel/helper-validator-identifier": {
- "version": "7.19.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz",
- "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w=="
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
+ "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A=="
},
"@babel/highlight": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
- "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz",
+ "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==",
"requires": {
- "@babel/helper-validator-identifier": "^7.18.6",
- "chalk": "^2.0.0",
+ "@babel/helper-validator-identifier": "^7.22.20",
+ "chalk": "^2.4.2",
"js-tokens": "^4.0.0"
},
"dependencies": {
@@ -413,21 +418,17 @@
}
},
"azure-pipelines-tasks-codeanalysis-common": {
- "version": "2.223.0",
- "resolved": "https://registry.npmjs.org/azure-pipelines-tasks-codeanalysis-common/-/azure-pipelines-tasks-codeanalysis-common-2.223.0.tgz",
- "integrity": "sha512-KiLlnTWvS9otMCHxT7OgCCOmlIjP51HpcCLjFtJFChRwb0VDcX/UFFB/KBskAUiOSSjAYNTZDVvkMnDrMPiM5Q==",
+ "version": "2.226.0",
+ "resolved": "https://registry.npmjs.org/azure-pipelines-tasks-codeanalysis-common/-/azure-pipelines-tasks-codeanalysis-common-2.226.0.tgz",
+ "integrity": "sha512-WzwnRX61IPkgigA+4kmiOIMMueX+aUOu7OYKWjpi297gVe8M067bMwUMo5u+UWgVobudblKdCWt8uqgyxeyR2Q==",
"requires": {
"@types/node": "^10.17.0",
"azure-pipelines-task-lib": "^3.1.0",
- "cheerio": "1.0.0-rc.10",
- "fs-extra": "^0.30.0",
"glob": "7.1.0",
"mocha": "^8.4.0",
- "os": "^0.1.1",
"rewire": "^6.0.0",
"sinon": "^14.0.0",
- "strip-bom": "^3.0.0",
- "xml2js": "^0.4.17"
+ "xml2js": "^0.6.2"
},
"dependencies": {
"@types/node": {
@@ -532,6 +533,15 @@
"requires": {
"brace-expansion": "^1.1.7"
}
+ },
+ "xml2js": {
+ "version": "0.4.23",
+ "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz",
+ "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==",
+ "requires": {
+ "sax": ">=0.6.0",
+ "xmlbuilder": "~11.0.0"
+ }
}
}
},
@@ -581,9 +591,9 @@
}
},
"semver": {
- "version": "7.3.5",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
- "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
"requires": {
"lru-cache": "^6.0.0"
}
@@ -829,20 +839,6 @@
}
}
},
- "cheerio": {
- "version": "1.0.0-rc.10",
- "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.10.tgz",
- "integrity": "sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==",
- "requires": {
- "cheerio-select": "^1.5.0",
- "dom-serializer": "^1.3.2",
- "domhandler": "^4.2.0",
- "htmlparser2": "^6.1.0",
- "parse5": "^6.0.1",
- "parse5-htmlparser2-tree-adapter": "^6.0.1",
- "tslib": "^2.2.0"
- }
- },
"cheerio-select": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-1.6.0.tgz",
@@ -1113,11 +1109,27 @@
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
},
"enquirer": {
- "version": "2.3.6",
- "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz",
- "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==",
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz",
+ "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==",
"requires": {
- "ansi-colors": "^4.1.1"
+ "ansi-colors": "^4.1.1",
+ "strip-ansi": "^6.0.1"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="
+ },
+ "strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "requires": {
+ "ansi-regex": "^5.0.1"
+ }
+ }
}
},
"entities": {
@@ -1226,16 +1238,16 @@
}
},
"optionator": {
- "version": "0.9.1",
- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
- "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==",
+ "version": "0.9.3",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz",
+ "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==",
"requires": {
+ "@aashutoshrathi/word-wrap": "^1.2.3",
"deep-is": "^0.1.3",
"fast-levenshtein": "^2.0.6",
"levn": "^0.4.1",
"prelude-ls": "^1.2.1",
- "type-check": "^0.4.0",
- "word-wrap": "^1.2.3"
+ "type-check": "^0.4.0"
}
},
"prelude-ls": {
@@ -1244,9 +1256,9 @@
"integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g=="
},
"semver": {
- "version": "7.5.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz",
- "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==",
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
"requires": {
"lru-cache": "^6.0.0"
}
@@ -1414,11 +1426,12 @@
"integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ=="
},
"flat-cache": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
- "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz",
+ "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==",
"requires": {
- "flatted": "^3.1.0",
+ "flatted": "^3.2.9",
+ "keyv": "^4.5.3",
"rimraf": "^3.0.2"
},
"dependencies": {
@@ -1433,14 +1446,14 @@
}
},
"flatted": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz",
- "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ=="
+ "version": "3.2.9",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz",
+ "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ=="
},
"follow-redirects": {
- "version": "1.15.3",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz",
- "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q=="
+ "version": "1.15.5",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz",
+ "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw=="
},
"form-data": {
"version": "2.5.1",
@@ -1470,9 +1483,9 @@
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
},
"fsevents": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
- "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
"optional": true
},
"function-bind": {
@@ -1527,9 +1540,9 @@
}
},
"globals": {
- "version": "13.20.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz",
- "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==",
+ "version": "13.24.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
+ "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
"requires": {
"type-fest": "^0.20.2"
}
@@ -1820,29 +1833,14 @@
"combined-stream": "^1.0.8",
"mime-types": "^2.1.12"
}
- },
- "psl": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz",
- "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ=="
- },
- "punycode": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
- "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
- },
- "tough-cookie": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz",
- "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==",
- "requires": {
- "psl": "^1.1.33",
- "punycode": "^2.1.1",
- "universalify": "^0.1.2"
- }
}
}
},
+ "json-buffer": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
+ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ=="
+ },
"json-schema-traverse": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
@@ -1862,9 +1860,17 @@
}
},
"just-extend": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz",
- "integrity": "sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg=="
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-6.2.0.tgz",
+ "integrity": "sha512-cYofQu2Xpom82S6qD778jBDpwvvy39s1l/hrYij2u9AMdQcGRpaBu6kY4mVhuno5kJVi1DAz4aiphA2WI1/OAw=="
+ },
+ "keyv": {
+ "version": "4.5.4",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
+ "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
+ "requires": {
+ "json-buffer": "3.0.1"
+ }
},
"klaw": {
"version": "1.3.1",
@@ -1949,9 +1955,9 @@
}
},
"minimatch": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
- "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"requires": {
"brace-expansion": "^1.1.7"
}
@@ -2016,6 +2022,14 @@
"path-is-absolute": "^1.0.0"
}
},
+ "minimatch": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ },
"ms": {
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
@@ -2044,33 +2058,31 @@
"integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw=="
},
"nise": {
- "version": "5.1.4",
- "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.4.tgz",
- "integrity": "sha512-8+Ib8rRJ4L0o3kfmyVCL7gzrohyDe0cMFTBa2d364yIrEGMEoetznKJx899YxjybU6bL9SQkYPSBBs1gyYs8Xg==",
- "requires": {
- "@sinonjs/commons": "^2.0.0",
- "@sinonjs/fake-timers": "^10.0.2",
- "@sinonjs/text-encoding": "^0.7.1",
- "just-extend": "^4.0.2",
- "path-to-regexp": "^1.7.0"
+ "version": "5.1.9",
+ "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.9.tgz",
+ "integrity": "sha512-qOnoujW4SV6e40dYxJOb3uvuoPHtmLzIk4TFo+j0jPJoC+5Z9xja5qH5JZobEPsa8+YYphMrOSwnrshEhG2qww==",
+ "requires": {
+ "@sinonjs/commons": "^3.0.0",
+ "@sinonjs/fake-timers": "^11.2.2",
+ "@sinonjs/text-encoding": "^0.7.2",
+ "just-extend": "^6.2.0",
+ "path-to-regexp": "^6.2.1"
},
"dependencies": {
+ "@sinonjs/commons": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz",
+ "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==",
+ "requires": {
+ "type-detect": "4.0.8"
+ }
+ },
"@sinonjs/fake-timers": {
- "version": "10.2.0",
- "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.2.0.tgz",
- "integrity": "sha512-OPwQlEdg40HAj5KNF8WW6q2KG4Z+cBCZb3m4ninfTZKaBmbIJodviQsDBoYMPHkOyJJMHnOJo5j2+LKDOhOACg==",
+ "version": "11.2.2",
+ "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-11.2.2.tgz",
+ "integrity": "sha512-G2piCSxQ7oWOxwGSAyFHfPIsyeJGXYtc6mFbnFA+kRXkiEnTl8c/8jul2S329iFBnDI9HGoeWWAZvuvOkZccgw==",
"requires": {
"@sinonjs/commons": "^3.0.0"
- },
- "dependencies": {
- "@sinonjs/commons": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz",
- "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==",
- "requires": {
- "type-detect": "4.0.8"
- }
- }
}
}
}
@@ -2203,19 +2215,9 @@
"integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
},
"path-to-regexp": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz",
- "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==",
- "requires": {
- "isarray": "0.0.1"
- },
- "dependencies": {
- "isarray": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
- "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ=="
- }
- }
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz",
+ "integrity": "sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw=="
},
"picomatch": {
"version": "2.3.1",
@@ -2245,10 +2247,15 @@
"asap": "~2.0.6"
}
},
+ "psl": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz",
+ "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag=="
+ },
"punycode": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz",
- "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA=="
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg=="
},
"q": {
"version": "1.5.1",
@@ -2263,6 +2270,11 @@
"side-channel": "^1.0.4"
}
},
+ "querystringify": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
+ "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ=="
+ },
"randombytes": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
@@ -2316,6 +2328,11 @@
"resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
"integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw=="
},
+ "requires-port": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
+ "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ=="
+ },
"resolve": {
"version": "1.22.0",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz",
@@ -2366,9 +2383,9 @@
}
},
"sax": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
- "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz",
+ "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA=="
},
"saxes": {
"version": "5.0.1",
@@ -2647,6 +2664,24 @@
"is-number": "^7.0.0"
}
},
+ "tough-cookie": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz",
+ "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==",
+ "requires": {
+ "psl": "^1.1.33",
+ "punycode": "^2.1.1",
+ "universalify": "^0.2.0",
+ "url-parse": "^1.5.3"
+ },
+ "dependencies": {
+ "universalify": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz",
+ "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg=="
+ }
+ }
+ },
"tr46": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz",
@@ -2670,11 +2705,6 @@
"utf8-byte-length": "^1.0.1"
}
},
- "tslib": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.2.tgz",
- "integrity": "sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA=="
- },
"tunnel": {
"version": "0.0.6",
"resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
@@ -2724,11 +2754,6 @@
"resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz",
"integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A=="
},
- "universalify": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
- "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg=="
- },
"uri-js": {
"version": "4.4.1",
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
@@ -2737,6 +2762,15 @@
"punycode": "^2.1.0"
}
},
+ "url-parse": {
+ "version": "1.5.10",
+ "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz",
+ "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==",
+ "requires": {
+ "querystringify": "^2.1.1",
+ "requires-port": "^1.0.0"
+ }
+ },
"utf8": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/utf8/-/utf8-2.1.2.tgz",
@@ -2758,9 +2792,9 @@
"integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A=="
},
"v8-compile-cache": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz",
- "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA=="
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz",
+ "integrity": "sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw=="
},
"w3c-hr-time": {
"version": "1.0.2",
@@ -2823,9 +2857,9 @@
}
},
"word-wrap": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
- "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ=="
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
+ "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA=="
},
"workerpool": {
"version": "6.1.0",
@@ -2888,9 +2922,9 @@
"integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw=="
},
"xml2js": {
- "version": "0.4.23",
- "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz",
- "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==",
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz",
+ "integrity": "sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==",
"requires": {
"sax": ">=0.6.0",
"xmlbuilder": "~11.0.0"
diff --git a/Tasks/MavenV3/package.json b/Tasks/MavenV3/package.json
index 97ffc6003920..cc7239d497fa 100644
--- a/Tasks/MavenV3/package.json
+++ b/Tasks/MavenV3/package.json
@@ -9,14 +9,14 @@
},
"dependencies": {
"@types/jsdom": "^16.2.14",
- "@types/node": "^16.11.39",
"@types/mocha": "^9.1.1",
+ "@types/node": "^16.11.39",
"azure-pipelines-task-lib": "^5.0.0-preview.0",
- "azure-pipelines-tool-lib": "^2.0.7",
- "azure-pipelines-tasks-codeanalysis-common": "2.223.0",
+ "azure-pipelines-tasks-codeanalysis-common": "^2.226.0",
"azure-pipelines-tasks-codecoverage-tools": "2.201.0",
"azure-pipelines-tasks-java-common": "2.198.1",
"azure-pipelines-tasks-packaging-common": "^3.230.0",
+ "azure-pipelines-tool-lib": "^2.0.7",
"base-64": "^0.1.0",
"fs-extra": "^0.30.0",
"jsdom": "^16.7.0",
@@ -24,7 +24,7 @@
"strip-bom": "^3.0.0",
"utf8": "^2.1.0",
"uuid": "^3.0.1",
- "xml2js": "^0.4.16"
+ "xml2js": "^0.6.2"
},
"devDependencies": {
"typescript": "4.0.2"
diff --git a/Tasks/MavenV3/task.json b/Tasks/MavenV3/task.json
index 23fbdcf11f21..574484d06360 100644
--- a/Tasks/MavenV3/task.json
+++ b/Tasks/MavenV3/task.json
@@ -17,8 +17,8 @@
"author": "Microsoft Corporation",
"version": {
"Major": 3,
- "Minor": 231,
- "Patch": 4
+ "Minor": 235,
+ "Patch": 0
},
"releaseNotes": "Configuration of the SonarQube analysis was moved to the [SonarQube](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarqube) or [SonarCloud](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarcloud) extensions, in task `Prepare Analysis Configuration`",
"demands": [
diff --git a/Tasks/MavenV3/task.loc.json b/Tasks/MavenV3/task.loc.json
index 271acac83717..3cfc2fdebdcd 100644
--- a/Tasks/MavenV3/task.loc.json
+++ b/Tasks/MavenV3/task.loc.json
@@ -17,8 +17,8 @@
"author": "Microsoft Corporation",
"version": {
"Major": 3,
- "Minor": 231,
- "Patch": 4
+ "Minor": 235,
+ "Patch": 0
},
"releaseNotes": "ms-resource:loc.releaseNotes",
"demands": [
diff --git a/Tasks/MavenV4/_buildConfigs/Node20/package-lock.json b/Tasks/MavenV4/_buildConfigs/Node20/package-lock.json
index 252aaa027242..5674ecddae18 100644
--- a/Tasks/MavenV4/_buildConfigs/Node20/package-lock.json
+++ b/Tasks/MavenV4/_buildConfigs/Node20/package-lock.json
@@ -234,11 +234,11 @@
"integrity": "sha512-SwFMxO68Z6ERGFpPYBdmgfS5LloELzY16h/PMAhnxMog91JcHI5AJjW0HN56cGUPhV0nDb8xNWsJkhuDzr4lAQ=="
},
"@types/node": {
- "version": "20.8.6",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.6.tgz",
- "integrity": "sha512-eWO4K2Ji70QzKUqRy6oyJWUeB7+g2cRagT3T/nxYibYcT4y2BDL8lqolRXjTHmkZCdJfIPaY73KbJAZmcryxTQ==",
+ "version": "20.11.15",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.15.tgz",
+ "integrity": "sha512-gscmuADZfvNULx1eyirVbr3kVOVZtpQtzKMCZpeSZcN6MfbkRXAR4s9/gsQ4CzxLHw6EStDtKLNtSDL3vbq05A==",
"requires": {
- "undici-types": "~5.25.1"
+ "undici-types": "~5.26.4"
}
},
"@types/parse5": {
@@ -247,9 +247,9 @@
"integrity": "sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g=="
},
"@types/q": {
- "version": "1.5.5",
- "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz",
- "integrity": "sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ=="
+ "version": "1.5.8",
+ "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.8.tgz",
+ "integrity": "sha512-hroOstUScF6zhIi+5+x0dzqrHA1EJi+Irri6b1fxolMTqqHIV/Cg77EtnQcZqZCu8hR3mX2BzIxN4/GzI68Kfw=="
},
"@types/qs": {
"version": "6.9.7",
@@ -406,21 +406,17 @@
}
},
"azure-pipelines-tasks-codeanalysis-common": {
- "version": "2.223.0",
- "resolved": "https://registry.npmjs.org/azure-pipelines-tasks-codeanalysis-common/-/azure-pipelines-tasks-codeanalysis-common-2.223.0.tgz",
- "integrity": "sha512-KiLlnTWvS9otMCHxT7OgCCOmlIjP51HpcCLjFtJFChRwb0VDcX/UFFB/KBskAUiOSSjAYNTZDVvkMnDrMPiM5Q==",
+ "version": "2.226.0",
+ "resolved": "https://registry.npmjs.org/azure-pipelines-tasks-codeanalysis-common/-/azure-pipelines-tasks-codeanalysis-common-2.226.0.tgz",
+ "integrity": "sha512-WzwnRX61IPkgigA+4kmiOIMMueX+aUOu7OYKWjpi297gVe8M067bMwUMo5u+UWgVobudblKdCWt8uqgyxeyR2Q==",
"requires": {
"@types/node": "^10.17.0",
"azure-pipelines-task-lib": "^3.1.0",
- "cheerio": "1.0.0-rc.10",
- "fs-extra": "^0.30.0",
"glob": "7.1.0",
"mocha": "^8.4.0",
- "os": "^0.1.1",
"rewire": "^6.0.0",
"sinon": "^14.0.0",
- "strip-bom": "^3.0.0",
- "xml2js": "^0.4.17"
+ "xml2js": "^0.6.2"
},
"dependencies": {
"@types/node": {
@@ -458,9 +454,9 @@
}
},
"azure-pipelines-tasks-codecoverage-tools": {
- "version": "3.214.0",
- "resolved": "https://registry.npmjs.org/azure-pipelines-tasks-codecoverage-tools/-/azure-pipelines-tasks-codecoverage-tools-3.214.0.tgz",
- "integrity": "sha512-Zeyl77C6sFhF9B2DCMJETJidq7gX6kf6aJ6bFHPsTNyYYex0TZI36JEkkDIFnvbviKay6GNp4k/9j52UW9baOg==",
+ "version": "3.234.0",
+ "resolved": "https://registry.npmjs.org/azure-pipelines-tasks-codecoverage-tools/-/azure-pipelines-tasks-codecoverage-tools-3.234.0.tgz",
+ "integrity": "sha512-SsOucUuLcxwOeHlA+TGL5kgYp9ej/H6fql57V7MndxhrmI0zxZKl2C0nlVhNPFJpjaKPhKXbex9vcxecfi14PQ==",
"requires": {
"@types/cheerio": "0.22.0",
"@types/node": "^10.17.0",
@@ -468,9 +464,12 @@
"azure-pipelines-task-lib": "^3.1.0",
"cheerio": "1.0.0-rc.6",
"fs-extra": "^0.30.0",
+ "mocha": "^8.4.0",
"os": "^0.1.1",
+ "rewire": "^6.0.0",
+ "sinon": "^14.0.0",
"strip-bom": "^3.0.0",
- "xml2js": "^0.4.17"
+ "xml2js": "^0.6.2"
},
"dependencies": {
"@types/node": {
@@ -479,12 +478,12 @@
"integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw=="
},
"azure-pipelines-task-lib": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/azure-pipelines-task-lib/-/azure-pipelines-task-lib-3.3.1.tgz",
- "integrity": "sha512-56ZAr4MHIoa24VNVuwPL4iUQ5MKaigPoYXkBG8E8fiVmh8yZdatUo25meNoQwg77vDY22F63Q44UzXoMWmy7ag==",
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/azure-pipelines-task-lib/-/azure-pipelines-task-lib-3.4.0.tgz",
+ "integrity": "sha512-3eC4OTFw+7xD7A2aUhxR/j+jRlTI+vVfS0CGxt1pCLs4c/KmY0tQWgbqjD3157kmiucWxELBvgZHaD2gCBe9fg==",
"requires": {
"minimatch": "3.0.5",
- "mockery": "^1.7.0",
+ "mockery": "^2.1.0",
"q": "^1.5.1",
"semver": "^5.1.0",
"shelljs": "^0.8.5",
@@ -505,10 +504,14 @@
"parse5-htmlparser2-tree-adapter": "^6.0.1"
}
},
- "mockery": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/mockery/-/mockery-1.7.0.tgz",
- "integrity": "sha512-gUQA33ayi0tuAhr/rJNZPr7Q7uvlBt4gyJPbi0CDcAfIzIrDu1YgGMFgmAu3stJqBpK57m7+RxUbcS+pt59fKQ=="
+ "xml2js": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz",
+ "integrity": "sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==",
+ "requires": {
+ "sax": ">=0.6.0",
+ "xmlbuilder": "~11.0.0"
+ }
}
}
},
@@ -555,9 +558,9 @@
"integrity": "sha512-gUQA33ayi0tuAhr/rJNZPr7Q7uvlBt4gyJPbi0CDcAfIzIrDu1YgGMFgmAu3stJqBpK57m7+RxUbcS+pt59fKQ=="
},
"semver": {
- "version": "7.3.8",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
- "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
"requires": {
"lru-cache": "^6.0.0"
}
@@ -588,9 +591,9 @@
},
"dependencies": {
"@types/node": {
- "version": "16.18.59",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.59.tgz",
- "integrity": "sha512-PJ1w2cNeKUEdey4LiPra0ZuxZFOGvetswE8qHRriV/sUkL5Al4tTmPV9D2+Y/TPIxTHHgxTfRjZVKWhPw/ORhQ=="
+ "version": "16.18.78",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.78.tgz",
+ "integrity": "sha512-2poPMDdsGfvhcLmgJZ85QrIfN6z3PijYRMiV0FWIEUiQW/t/lzH7BEm4vN+HMhjZXbtIKssMcAxTcgu4Rm83YA=="
},
"@types/q": {
"version": "1.5.2",
@@ -777,20 +780,6 @@
}
}
},
- "cheerio": {
- "version": "1.0.0-rc.10",
- "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.10.tgz",
- "integrity": "sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==",
- "requires": {
- "cheerio-select": "^1.5.0",
- "dom-serializer": "^1.3.2",
- "domhandler": "^4.2.0",
- "htmlparser2": "^6.1.0",
- "parse5": "^6.0.1",
- "parse5-htmlparser2-tree-adapter": "^6.0.1",
- "tslib": "^2.2.0"
- }
- },
"cheerio-select": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-1.6.0.tgz",
@@ -1184,6 +1173,13 @@
"prelude-ls": "^1.2.1",
"type-check": "^0.4.0",
"word-wrap": "^1.2.3"
+ },
+ "dependencies": {
+ "word-wrap": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
+ "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA=="
+ }
}
},
"prelude-ls": {
@@ -1192,9 +1188,9 @@
"integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g=="
},
"semver": {
- "version": "7.5.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz",
- "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==",
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
"requires": {
"lru-cache": "^6.0.0"
}
@@ -1386,9 +1382,9 @@
"integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ=="
},
"follow-redirects": {
- "version": "1.15.3",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz",
- "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q=="
+ "version": "1.15.5",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz",
+ "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw=="
},
"form-data": {
"version": "2.5.1",
@@ -1770,17 +1766,6 @@
"combined-stream": "^1.0.8",
"mime-types": "^2.1.12"
}
- },
- "tough-cookie": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz",
- "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==",
- "requires": {
- "psl": "^1.1.33",
- "punycode": "^2.1.1",
- "universalify": "^0.2.0",
- "url-parse": "^1.5.3"
- }
}
}
},
@@ -2611,6 +2596,17 @@
"is-number": "^7.0.0"
}
},
+ "tough-cookie": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz",
+ "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==",
+ "requires": {
+ "psl": "^1.1.33",
+ "punycode": "^2.1.1",
+ "universalify": "^0.2.0",
+ "url-parse": "^1.5.3"
+ }
+ },
"tr46": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz",
@@ -2627,11 +2623,6 @@
"utf8-byte-length": "^1.0.1"
}
},
- "tslib": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.2.tgz",
- "integrity": "sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA=="
- },
"tunnel": {
"version": "0.0.6",
"resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
@@ -2682,9 +2673,9 @@
"integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A=="
},
"undici-types": {
- "version": "5.25.3",
- "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.25.3.tgz",
- "integrity": "sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA=="
+ "version": "5.26.5",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
+ "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="
},
"universalify": {
"version": "0.2.0",
@@ -2794,9 +2785,9 @@
}
},
"word-wrap": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
- "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ=="
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
+ "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA=="
},
"workerpool": {
"version": "6.1.0",
@@ -2859,9 +2850,9 @@
"integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw=="
},
"xml2js": {
- "version": "0.4.23",
- "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz",
- "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==",
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz",
+ "integrity": "sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==",
"requires": {
"sax": ">=0.6.0",
"xmlbuilder": "~11.0.0"
diff --git a/Tasks/MavenV4/_buildConfigs/Node20/package.json b/Tasks/MavenV4/_buildConfigs/Node20/package.json
index 7bab98fb2349..fca7c179fdb7 100644
--- a/Tasks/MavenV4/_buildConfigs/Node20/package.json
+++ b/Tasks/MavenV4/_buildConfigs/Node20/package.json
@@ -12,8 +12,8 @@
"@types/mocha": "^5.2.7",
"@types/node": "^20.3.1",
"azure-pipelines-task-lib": "^5.0.0-preview.0",
- "azure-pipelines-tasks-codeanalysis-common": "2.223.0",
- "azure-pipelines-tasks-codecoverage-tools": "3.214.0",
+ "azure-pipelines-tasks-codeanalysis-common": "^2.226.0",
+ "azure-pipelines-tasks-codecoverage-tools": "3.234.0",
"azure-pipelines-tasks-java-common": "2.198.1",
"azure-pipelines-tasks-packaging-common": "^3.230.0",
"base-64": "^0.1.0",
@@ -23,7 +23,7 @@
"strip-bom": "^3.0.0",
"utf8": "^2.1.0",
"uuid": "^3.0.1",
- "xml2js": "^0.4.16"
+ "xml2js": "^0.6.2"
},
"devDependencies": {
"typescript": "5.1.6"
diff --git a/Tasks/MavenV4/package-lock.json b/Tasks/MavenV4/package-lock.json
index 516be8704789..4b133609398c 100644
--- a/Tasks/MavenV4/package-lock.json
+++ b/Tasks/MavenV4/package-lock.json
@@ -403,21 +403,17 @@
}
},
"azure-pipelines-tasks-codeanalysis-common": {
- "version": "2.223.0",
- "resolved": "https://registry.npmjs.org/azure-pipelines-tasks-codeanalysis-common/-/azure-pipelines-tasks-codeanalysis-common-2.223.0.tgz",
- "integrity": "sha512-KiLlnTWvS9otMCHxT7OgCCOmlIjP51HpcCLjFtJFChRwb0VDcX/UFFB/KBskAUiOSSjAYNTZDVvkMnDrMPiM5Q==",
+ "version": "2.226.0",
+ "resolved": "https://registry.npmjs.org/azure-pipelines-tasks-codeanalysis-common/-/azure-pipelines-tasks-codeanalysis-common-2.226.0.tgz",
+ "integrity": "sha512-WzwnRX61IPkgigA+4kmiOIMMueX+aUOu7OYKWjpi297gVe8M067bMwUMo5u+UWgVobudblKdCWt8uqgyxeyR2Q==",
"requires": {
"@types/node": "^10.17.0",
"azure-pipelines-task-lib": "^3.1.0",
- "cheerio": "1.0.0-rc.10",
- "fs-extra": "^0.30.0",
"glob": "7.1.0",
"mocha": "^8.4.0",
- "os": "^0.1.1",
"rewire": "^6.0.0",
"sinon": "^14.0.0",
- "strip-bom": "^3.0.0",
- "xml2js": "^0.4.17"
+ "xml2js": "^0.6.2"
},
"dependencies": {
"@types/node": {
@@ -559,9 +555,9 @@
"integrity": "sha512-gUQA33ayi0tuAhr/rJNZPr7Q7uvlBt4gyJPbi0CDcAfIzIrDu1YgGMFgmAu3stJqBpK57m7+RxUbcS+pt59fKQ=="
},
"semver": {
- "version": "7.3.8",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
- "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
"requires": {
"lru-cache": "^6.0.0"
}
@@ -776,20 +772,6 @@
}
}
},
- "cheerio": {
- "version": "1.0.0-rc.10",
- "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.10.tgz",
- "integrity": "sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==",
- "requires": {
- "cheerio-select": "^1.5.0",
- "dom-serializer": "^1.3.2",
- "domhandler": "^4.2.0",
- "htmlparser2": "^6.1.0",
- "parse5": "^6.0.1",
- "parse5-htmlparser2-tree-adapter": "^6.0.1",
- "tslib": "^2.2.0"
- }
- },
"cheerio-select": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-1.6.0.tgz",
@@ -1183,6 +1165,13 @@
"prelude-ls": "^1.2.1",
"type-check": "^0.4.0",
"word-wrap": "^1.2.3"
+ },
+ "dependencies": {
+ "word-wrap": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
+ "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA=="
+ }
}
},
"prelude-ls": {
@@ -1191,9 +1180,9 @@
"integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g=="
},
"semver": {
- "version": "7.5.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz",
- "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==",
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
"requires": {
"lru-cache": "^6.0.0"
}
@@ -1385,9 +1374,9 @@
"integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ=="
},
"follow-redirects": {
- "version": "1.15.3",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz",
- "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q=="
+ "version": "1.15.5",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz",
+ "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw=="
},
"form-data": {
"version": "2.5.1",
@@ -1769,17 +1758,6 @@
"combined-stream": "^1.0.8",
"mime-types": "^2.1.12"
}
- },
- "tough-cookie": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz",
- "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==",
- "requires": {
- "psl": "^1.1.33",
- "punycode": "^2.1.1",
- "universalify": "^0.2.0",
- "url-parse": "^1.5.3"
- }
}
}
},
@@ -2610,6 +2588,17 @@
"is-number": "^7.0.0"
}
},
+ "tough-cookie": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz",
+ "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==",
+ "requires": {
+ "psl": "^1.1.33",
+ "punycode": "^2.1.1",
+ "universalify": "^0.2.0",
+ "url-parse": "^1.5.3"
+ }
+ },
"tr46": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz",
@@ -2626,11 +2615,6 @@
"utf8-byte-length": "^1.0.1"
}
},
- "tslib": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.2.tgz",
- "integrity": "sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA=="
- },
"tunnel": {
"version": "0.0.6",
"resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
@@ -2788,9 +2772,9 @@
}
},
"word-wrap": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
- "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ=="
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
+ "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA=="
},
"workerpool": {
"version": "6.1.0",
@@ -2853,9 +2837,9 @@
"integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw=="
},
"xml2js": {
- "version": "0.4.23",
- "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz",
- "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==",
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz",
+ "integrity": "sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==",
"requires": {
"sax": ">=0.6.0",
"xmlbuilder": "~11.0.0"
diff --git a/Tasks/MavenV4/package.json b/Tasks/MavenV4/package.json
index 939ab6c62b9e..6109b10160f4 100644
--- a/Tasks/MavenV4/package.json
+++ b/Tasks/MavenV4/package.json
@@ -12,7 +12,7 @@
"@types/mocha": "^5.2.7",
"@types/node": "^16.11.39",
"azure-pipelines-task-lib": "^5.0.0-preview.0",
- "azure-pipelines-tasks-codeanalysis-common": "2.223.0",
+ "azure-pipelines-tasks-codeanalysis-common": "^2.226.0",
"azure-pipelines-tasks-codecoverage-tools": "3.234.0",
"azure-pipelines-tasks-java-common": "2.198.1",
"azure-pipelines-tasks-packaging-common": "^3.230.0",
@@ -23,7 +23,7 @@
"strip-bom": "^3.0.0",
"utf8": "^2.1.0",
"uuid": "^3.0.1",
- "xml2js": "^0.4.16"
+ "xml2js": "^0.6.2"
},
"devDependencies": {
"typescript": "4.0.2"
diff --git a/Tasks/MavenV4/task.json b/Tasks/MavenV4/task.json
index 0706e5f07d98..8aff1880d40d 100644
--- a/Tasks/MavenV4/task.json
+++ b/Tasks/MavenV4/task.json
@@ -17,7 +17,7 @@
"author": "Microsoft Corporation",
"version": {
"Major": 4,
- "Minor": 234,
+ "Minor": 235,
"Patch": 0
},
"releaseNotes": "Configuration of the SonarQube analysis was moved to the [SonarQube](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarqube) or [SonarCloud](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarcloud) extensions, in task `Prepare Analysis Configuration`",
diff --git a/Tasks/MavenV4/task.loc.json b/Tasks/MavenV4/task.loc.json
index f85af45f9af9..bf7d4104ffee 100644
--- a/Tasks/MavenV4/task.loc.json
+++ b/Tasks/MavenV4/task.loc.json
@@ -17,7 +17,7 @@
"author": "Microsoft Corporation",
"version": {
"Major": 4,
- "Minor": 234,
+ "Minor": 235,
"Patch": 0
},
"releaseNotes": "ms-resource:loc.releaseNotes",
diff --git a/Tasks/NotationV0/package-lock.json b/Tasks/NotationV0/package-lock.json
index 8675ba90dd9e..4d83f6e8d06a 100644
--- a/Tasks/NotationV0/package-lock.json
+++ b/Tasks/NotationV0/package-lock.json
@@ -149,9 +149,9 @@
"integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw=="
},
"follow-redirects": {
- "version": "1.15.3",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz",
- "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q=="
+ "version": "1.15.5",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz",
+ "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw=="
},
"fs.realpath": {
"version": "1.0.0",
diff --git a/Tasks/NotationV0/task.json b/Tasks/NotationV0/task.json
index a3fe34bf027e..ada18bafbde8 100644
--- a/Tasks/NotationV0/task.json
+++ b/Tasks/NotationV0/task.json
@@ -11,7 +11,7 @@
"version": {
"Major": 0,
"Minor": 235,
- "Patch": 0
+ "Patch": 1
},
"groups": [
{
diff --git a/Tasks/NotationV0/task.loc.json b/Tasks/NotationV0/task.loc.json
index db33f64bb7de..8cc9cd54877f 100644
--- a/Tasks/NotationV0/task.loc.json
+++ b/Tasks/NotationV0/task.loc.json
@@ -11,7 +11,7 @@
"version": {
"Major": 0,
"Minor": 235,
- "Patch": 0
+ "Patch": 1
},
"groups": [
{
diff --git a/Tasks/PowerShellV2/_buildConfigs/Node20/package-lock.json b/Tasks/PowerShellV2/_buildConfigs/Node20/package-lock.json
index 7f603a8b5356..68717339a949 100644
--- a/Tasks/PowerShellV2/_buildConfigs/Node20/package-lock.json
+++ b/Tasks/PowerShellV2/_buildConfigs/Node20/package-lock.json
@@ -26,14 +26,17 @@
"integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ=="
},
"@types/node": {
- "version": "20.5.7",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.5.7.tgz",
- "integrity": "sha512-dP7f3LdZIysZnmvP3ANJYTSwg+wLLl8p7RqniVlV7j+oXSXAbt9h0WIBFmJy5inWZoX9wZN6eXx+YXd9Rh3RBA=="
+ "version": "20.11.14",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.14.tgz",
+ "integrity": "sha512-w3yWCcwULefjP9DmDDsgUskrMoOy5Z8MiwKHr1FvqGPtx7CvJzQvxD7eKpxNtklQxLruxSXWddyeRtyud0RcXQ==",
+ "requires": {
+ "undici-types": "~5.26.4"
+ }
},
"@types/qs": {
- "version": "6.9.9",
- "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.9.tgz",
- "integrity": "sha512-wYLxw35euwqGvTDx6zfY1vokBFnsK0HNrzc6xNHchxfO2hpuRg74GbkEW7e3sSmPvj0TjCDT1VCa6OtHXnubsg=="
+ "version": "6.9.8",
+ "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.8.tgz",
+ "integrity": "sha512-u95svzDlTysU5xecFNTgfFG5RUWu1A9P0VzgpcIiGZA9iraHOdSzcxMxQ55DyeRaGCSxQi7LxXDI4rzq/MYfdg=="
},
"@types/semver": {
"version": "5.5.0",
@@ -102,9 +105,9 @@
},
"dependencies": {
"@types/node": {
- "version": "16.18.59",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.59.tgz",
- "integrity": "sha512-PJ1w2cNeKUEdey4LiPra0ZuxZFOGvetswE8qHRriV/sUkL5Al4tTmPV9D2+Y/TPIxTHHgxTfRjZVKWhPw/ORhQ=="
+ "version": "16.18.78",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.78.tgz",
+ "integrity": "sha512-2poPMDdsGfvhcLmgJZ85QrIfN6z3PijYRMiV0FWIEUiQW/t/lzH7BEm4vN+HMhjZXbtIKssMcAxTcgu4Rm83YA=="
},
"azure-pipelines-task-lib": {
"version": "4.6.1",
@@ -184,13 +187,12 @@
"integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="
},
"call-bind": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz",
- "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
+ "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
"requires": {
- "function-bind": "^1.1.2",
- "get-intrinsic": "^1.2.1",
- "set-function-length": "^1.1.1"
+ "function-bind": "^1.1.1",
+ "get-intrinsic": "^1.0.2"
}
},
"caseless": {
@@ -244,16 +246,6 @@
"ms": "2.1.2"
}
},
- "define-data-property": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz",
- "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==",
- "requires": {
- "get-intrinsic": "^1.2.1",
- "gopd": "^1.0.1",
- "has-property-descriptors": "^1.0.0"
- }
- },
"delayed-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
@@ -270,9 +262,9 @@
"integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw=="
},
"follow-redirects": {
- "version": "1.15.3",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz",
- "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q=="
+ "version": "1.15.5",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz",
+ "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw=="
},
"form-data": {
"version": "2.5.1",
@@ -290,19 +282,19 @@
"integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
},
"function-bind": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
- "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
},
"get-intrinsic": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz",
- "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==",
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz",
+ "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==",
"requires": {
- "function-bind": "^1.1.2",
+ "function-bind": "^1.1.1",
+ "has": "^1.0.3",
"has-proto": "^1.0.1",
- "has-symbols": "^1.0.3",
- "hasown": "^2.0.0"
+ "has-symbols": "^1.0.3"
}
},
"get-port": {
@@ -333,20 +325,12 @@
}
}
},
- "gopd": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
- "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
- "requires": {
- "get-intrinsic": "^1.1.3"
- }
- },
- "has-property-descriptors": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz",
- "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==",
+ "has": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
"requires": {
- "get-intrinsic": "^1.2.2"
+ "function-bind": "^1.1.1"
}
},
"has-proto": {
@@ -359,14 +343,6 @@
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
"integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A=="
},
- "hasown": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz",
- "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==",
- "requires": {
- "function-bind": "^1.1.2"
- }
- },
"http-basic": {
"version": "8.1.3",
"resolved": "https://registry.npmjs.org/http-basic/-/http-basic-8.1.3.tgz",
@@ -422,11 +398,11 @@
"integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA=="
},
"is-core-module": {
- "version": "2.13.1",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz",
- "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==",
+ "version": "2.13.0",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz",
+ "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==",
"requires": {
- "hasown": "^2.0.0"
+ "has": "^1.0.3"
}
},
"isarray": {
@@ -491,9 +467,9 @@
}
},
"object-inspect": {
- "version": "1.13.1",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz",
- "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ=="
+ "version": "1.12.3",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz",
+ "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g=="
},
"once": {
"version": "1.4.0",
@@ -567,9 +543,9 @@
}
},
"resolve": {
- "version": "1.22.8",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
- "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
+ "version": "1.22.6",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.6.tgz",
+ "integrity": "sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==",
"requires": {
"is-core-module": "^2.13.0",
"path-parse": "^1.0.7",
@@ -599,17 +575,6 @@
"resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz",
"integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow=="
},
- "set-function-length": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz",
- "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==",
- "requires": {
- "define-data-property": "^1.1.1",
- "get-intrinsic": "^1.2.1",
- "gopd": "^1.0.1",
- "has-property-descriptors": "^1.0.0"
- }
- },
"shelljs": {
"version": "0.8.5",
"resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz",
@@ -730,6 +695,11 @@
"resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz",
"integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A=="
},
+ "undici-types": {
+ "version": "5.26.5",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
+ "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="
+ },
"utf8-byte-length": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz",
diff --git a/Tasks/PowerShellV2/package-lock.json b/Tasks/PowerShellV2/package-lock.json
index ea0ec2dc0d35..7ad6d10a85f4 100644
--- a/Tasks/PowerShellV2/package-lock.json
+++ b/Tasks/PowerShellV2/package-lock.json
@@ -254,9 +254,9 @@
"integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw=="
},
"follow-redirects": {
- "version": "1.15.3",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz",
- "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q=="
+ "version": "1.15.5",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz",
+ "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw=="
},
"form-data": {
"version": "2.5.1",
diff --git a/Tasks/PowerShellV2/task.json b/Tasks/PowerShellV2/task.json
index d4a77c336ed4..75670482bd33 100644
--- a/Tasks/PowerShellV2/task.json
+++ b/Tasks/PowerShellV2/task.json
@@ -17,7 +17,7 @@
"author": "Microsoft Corporation",
"version": {
"Major": 2,
- "Minor": 232,
+ "Minor": 235,
"Patch": 0
},
"releaseNotes": "Script task consistency. Added support for macOS and Linux.",
diff --git a/Tasks/PowerShellV2/task.loc.json b/Tasks/PowerShellV2/task.loc.json
index 8be0b8b435a0..411d5bec692e 100644
--- a/Tasks/PowerShellV2/task.loc.json
+++ b/Tasks/PowerShellV2/task.loc.json
@@ -17,7 +17,7 @@
"author": "Microsoft Corporation",
"version": {
"Major": 2,
- "Minor": 232,
+ "Minor": 235,
"Patch": 0
},
"releaseNotes": "ms-resource:loc.releaseNotes",
diff --git a/_generated/AzureRmWebAppDeploymentV4.versionmap.txt b/_generated/AzureRmWebAppDeploymentV4.versionmap.txt
index 1a69707ecce0..a0b5c62e5e08 100644
--- a/_generated/AzureRmWebAppDeploymentV4.versionmap.txt
+++ b/_generated/AzureRmWebAppDeploymentV4.versionmap.txt
@@ -1,2 +1,2 @@
-Default|4.234.2
-Node20_229_2|4.234.3
+Default|4.235.0
+Node20_229_2|4.235.1
diff --git a/_generated/AzureRmWebAppDeploymentV4/README.md b/_generated/AzureRmWebAppDeploymentV4/README.md
new file mode 100644
index 000000000000..aae6da3440d0
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/README.md
@@ -0,0 +1,213 @@
+# Azure App Service Deployment: ARM
+
+## Overview
+
+The Azure App Service Deployment task is used to update different Azure App Service to deploy [Web Apps](https://azure.microsoft.com/en-in/documentation/articles/app-service-web-overview/), [Functions](https://docs.microsoft.com/en-us/azure/azure-functions/) and [WebJobs](https://azure.microsoft.com/en-us/blog/webjobs-goes-into-full-production/) to Azure. The task works on cross platform Azure Pipelines agents running Windows, Linux or Mac and uses the underlying deployment technologies of [Web Deploy](https://www.iis.net/downloads/microsoft/web-deploy), RunFromPackage, Zip Deploy, Containers and [Kudu REST APIs](https://github.com/projectkudu/kudu/wiki/REST-API).
+
+The task works for [ASP.NET](https://www.visualstudio.com/en-us/docs/release/examples/azure/azure-web-apps-from-build-and-release-hubs), [ASP.NET Core](https://www.visualstudio.com/en-us/docs/release/examples/azure/aspnet-core10-azure-web-apps), PHP, Java, Python, Go and [Node.js](https://www.visualstudio.com/en-us/docs/release/examples/nodejs/node-to-azure-webapps) based web applications.
+
+The task can be used to deploy different Azure App Services like Function App (Windows/Linux/Containers), Web App on Windows, Web App on Linux, Web App for Containers and apps configured under Azure App Service Environments.
+
+The task is **under development and is available to a limited set of Azure DevOps organizations**. The [video](https://www.youtube.com/watch?v=uQ2qCmaZ_Ag&feature=youtu.be) describes the features that are available in the task currently.
+
+## Contact Information
+
+Please report a problem at [Developer Community Forum](https://developercommunity.visualstudio.com/spaces/21/index.html) if you are facing problems in making this task work. You can also share feedback about the task like, what more functionality should be added to the task, what other tasks you would like to have, at the same place.
+
+## Pre-requisites for the task
+
+The following pre-requisites need to be setup in the target machine(s) for the task to work properly.
+
+##### Azure Web App or Azure Function
+
+The task is used to deploy a Web project to an existing Azure Web App. The Web App should exist prior to running the task. The Web App can be created from the [Azure portal](https://azure.microsoft.com/en-in/documentation/videos/azure-app-service-web-apps-with-yochay-kiriaty/) and [configured](https://azure.microsoft.com/en-us/documentation/articles/web-sites-configure/) there. Alternatively, the [Azure PowerShell task](https://github.com/Microsoft/azure-pipelines-tasks/tree/master/Tasks/AzurePowerShellV3) can be used to run [AzureRM PowerShell scripts](https://msdn.microsoft.com/en-us/library/mt619237.aspx) to provision and configure the Web App.
+
+The task can also be used to deploy [Azure Functions](https://azure.microsoft.com/en-in/services/functions/) (Windows/Linux/Containers).
+
+##### Azure Subscription
+
+To deploy to Azure, an Azure subscription has to be linked to Team Foundation Server or to Azure Pipelines using the Services tab in the Account Administration section. Add the Azure subscription to use in the Build or Release Management definition by opening the Account Administration screen (gear icon on the top-right of the screen) and then click on the Services Tab.
+
+Create the [ARM](https://azure.microsoft.com/en-in/documentation/articles/resource-group-overview/) service endpoint, use **'Azure Resource Manager'** endpoint type, for more details follow the steps listed in the link [here](https://go.microsoft.com/fwlink/?LinkID=623000&clcid=0x409).
+
+The task does not work with the Azure Classic service endpoint and it will not list these connections in the parameters in the task.
+
+## Deployment
+
+Several deployment methods are available in this task. Web Deploy (msdeploy.exe) is the default option. To change the deployment option, expand Additional Deployment Options and enable Select deployment method to choose from additional package-based deployment options.
+
+Based on the type of Azure App Service and Azure Pipelines agent, the task chooses a suitable deployment technology. The different deployment technologies used by the task are:
+* *Web Deploy*
+
+* *Kudu REST APIs*
+
+* *Container Registry*
+
+* *Zip Deploy*
+
+* *RunFromPackage*
+
+By default the task tries to select the appropriate deployment technology given the input package, app service type and agent OS.
+
+* For msdeploy (MSBuild generated package) package, use Web Deploy
+* When post deployment script is provided, use Zip Deploy
+* When the App Service type is Web App on Linux App, use Zip Deploy
+* If War file is provided, use War Deploy
+* If Jar file is provided, use Run From Zip
+* For all others, use Run From Zip (via Zip Deploy)
+
+On non-Windows agent (for any App service type), the task relies on [Kudu REST APIs](https://github.com/projectkudu/kudu/wiki/REST-API) to deploy the Web App.
+
+### Web Deploy
+
+Web Deploy (msdeploy.exe) is used to deploy the web application to the Azure Web App. Web Deploy Works on a Windows automation agent when the target is a Web App on Windows or Function App. Install it on the agent using the [Microsoft Web Platform Installer](https://www.microsoft.com/web/gallery/install.aspx?appid=wdeploynosmo). The Web Deploy 3.5 needs to be installed without the bundled SQL support. There is no need to choose any custom settings while installing Web Deploy. After installing the Web Deploy is available at C:\\Program Files (x86)\\IIS\\Microsoft Web Deploy V3.
+
+Web Deploy is feature rich and offers options like:
+* **Rename locked files\*:** Rename file which are still in use by the web server by enabling msdeploy flag MSDEPLOY_RENAME_LOCKED_FILES=1 in Azure App Service application settings. The option if set enables msdeploy to rename locked files that are locked during app deployment
+
+* **Remove additional files at destination\*:** Deletes files on the Azure App Service that have no matching files in the App Service artifact package or folder getting deployed.
+
+* **Exclude files from the App_Data folder\*:** Prevent files in the App_Data folder (in the artifact package/folder getting deployed) from being deployed to the Azure App Service
+
+* **Additional Web Deploy arguments\*:** Arguments that will be applied when deploying the Azure App Service. Example: -disableLink:AppPoolExtension -disableLink:ContentExtension.For more examples of Web Deploy operation settings, refer [Web Deploy Operation Settings](https://go.microsoft.com/fwlink/?linkid=838471)
+
+
+### [Kudu REST APIs](https://github.com/projectkudu/kudu/wiki/REST-API)
+Works on a Windows as well as Linux automation agent when the target is a Web App on Windows or Web App on Linux (built-in source) or Function App. The task uses Kudu to copy over files to the Azure App service.
+
+### Container Registry
+Works on a Windows as well as Linux automation agent when the target is a Web App for Containers. The task updates the Azure Web App for Containers by setting the right Container registry, repository, image name and tag information. You can also use the task to pass a startup command for the container image.
+
+### Zip Deploy
+Creates a .zip deployment package of the chosen Package or folder and deploys the file contents to the wwwroot folder of the App Service name function app in Azure. This option overwrites all existing contents in the wwwroot folder. For more information, see [Zip deployment for Azure Functions](https://docs.microsoft.com/azure/azure-functions/deployment-zip-push).
+
+### RunFromPackage
+Creates the same deployment package as Zip Deploy. However, instead of deploying files to the wwwroot folder, the entire package is mounted by the Functions runtime. With this option, files in the wwwroot folder become read-only. For more information, see [Run your Azure Functions from a package file](https://docs.microsoft.com/azure/azure-functions/run-functions-from-deployment-package).
+
+### Parameters of the task
+The task is used to deploy a Web project to an existing Azure Web App or Function. The mandatory fields are highlighted with a *.
+
+* **Azure Subscription\*:** Select the AzureRM Subscription. If none exists, then click on the **Manage** link, to navigate to the Services tab in the Administrators panel. In the tab click on **New Service Endpoint** and select **Azure Resource Manager** from the dropdown.
+
+* **App Service type\*:** Select the Azure App Service type. The different app types supported are Function App, Web App on Windows, Web App on Linux, Web App for Containers and Azure App Service Environments
+
+* **App Service Name\*:** Select the name of an existing Azure App Service. Enter the name of the Web App if it was provisioned dynamically using the [Azure PowerShell task](https://github.com/Microsoft/azure-pipelines-tasks/tree/master/Tasks/AzurePowerShellV3) and [AzureRM PowerShell scripts](https://msdn.microsoft.com/en-us/library/mt619237.aspx).
+
+* **Deploy to Slot:** Select the option to deploy to an existing slot other than the Production slot. Do not select this option if the Web project is being deployed to the Production slot. The Web App itself is the Production slot.
+
+* **Resource Group:** Select the Azure Resource Group that contains the Azure App Service specified above. Enter the name of the Azure Resource Group if has been dynamically provisioned using [Azure Resource Group Deployment task](https://github.com/Microsoft/azure-pipelines-tasks/tree/master/Tasks/AzureResourceGroupDeploymentV2) or [Azure PowerShell task](https://github.com/Microsoft/azure-pipelines-tasks/tree/master/Tasks/AzurePowerShellV3). This is a required parameter if the option to Deploy to Slot has been selected.
+
+* **Slot:** Select the Slot to deploy the Web project to. Enter the name of the Slot if has been dynamically provisioned using [Azure Resource Group Deployment task](https://github.com/Microsoft/azure-pipelines-tasks/tree/master/Tasks/AzureResourceGroupDeploymentV2) or [Azure PowerShell task](https://github.com/Microsoft/azure-pipelines-tasks/tree/master/Tasks/AzurePowerShellV3). This is a required parameter if the option to Deploy to Slot has been selected.
+
+* **Virtual Application:** Specify the name of the Virtual Application that has been configured in the Azure portal. The option is not required for deployments to the website root. The Virtual Application should have been [configured](https://azure.microsoft.com/en-us/documentation/articles/web-sites-configure/) prior to deploying the Web project to it using the task.
+
+* **Package or Folder\*:** Location of the Web App zip package or folder on the automation agent or on a UNC path accessible to the automation agent like, \\\\BudgetIT\\Web\\Deploy\\Fabrikam.zip. Predefined system variables and wild cards like, $(System.DefaultWorkingDirectory)\\\***.zip can be also used here.
+
+* **Select deployment method:** Select the option to to choose from Web Deploy, Container, Zip Deploy, RunFromPackage, Kudu REST apis
+
+By default (when 'Select deployment method' is not checked) the task tries to select the appropriate deployment technology given the input package, app service type and agent OS.
+
+* **Parameters File:** (Optional) The parameter file is used to override the default settings in the web deploy zip package file like, the IIS Web application name or the database connection string. This helps in having a single package that can be deployed across dev, test, staging, and production, with a specific parameter file for each environment.
+
+* **Remove Additional Files at Destination:** Select the option to delete the files in the Azure App Service that have no matching files in the Web App zip package. This will ensure that during the Web project deployment any additional files in the Azure App Service are deleted, and the only files in the Azure App Service are the ones in the Web App zip package.
+This will also remove all files related to any extension (for example Application Insights) installed on this Azure App Service. To prevent this, enable 'Exclude files from App_Data folder' as well.
+
+* **Exclude Files from the App_Data Folder:** Select the option to prevent files in the App_Data folder from being deployed to the Azure App Service. This is a useful option to select, if a local database or a WebJob has been deployed earlier to the Azure App Service, and they should not be deleted in the subsequent deployments of the Web project.
+
+* **Take Application Offline:** Select the option to take the Azure App Service offline by placing an app_offline.htm file in the root directory of the Web App before the sync operation begins. The file will be removed after the sync operation completes successfully.
+
+* **Additional Arguments:** Additional Web Deploy arguments that will be appended to the MSDeploy command while deploying the Azure Web App like,-disableLink:AppPoolExtension -disableLink:ContentExtension. A useful parameter for enabling and disabling rules and for skipping syncing of certain folders.
+
+* **Generate Web.config:** A standard Web.config will be generated and deployed to Azure App Service if the application does not have one. For example, for [Nodejs application, web.config](https://github.com/projectkudu/kudu/wiki/Using-a-custom-web.config-for-Node-apps) will have startup file and iis_node module values. Similarly for Python (Bottle, Django, Flask) the web.config will have details of WSGI handler, Python path etc. The task will generate a new web.config only when the artifact package/folder does not contain an existing web.config. The default values populated by the task can be overriden in the task by using the Web.config parameters field.
+
+* **Web.config parameters:** Edit values like startup file in the task generated web.config file. The default values populated by the task can be overridden in the task by passing the web.config parameters. This edit feature is **only for the generated web.config**. Feature is useful when [Azure App Service Manage task](https://github.com/Microsoft/azure-pipelines-tasks/tree/master/Tasks/AzureAppServiceManageV0) is used to install specific Python version by using extensions or when you want to provide a different startup file for Node.js.
+In case of Python, the path can be set as an output variable of the [Azure App Service Manage task](https://github.com/Microsoft/azure-pipelines-tasks/tree/master/Tasks/AzureAppServiceManageV0) and then set as the Python path in the web.config generated by this deploy task. You can try out this feature by selecting any Python, Nodejs, PHP release definition template.
+
+* **File transformation and variable substitution:** Refer to following links:
+ * [XML transformation](https://docs.microsoft.com/en-us/vsts/build-release/tasks/transforms-variable-substitution?view=vsts#xml-transformation)
+ * [XML variable substitution](https://docs.microsoft.com/en-us/vsts/build-release/tasks/transforms-variable-substitution?view=vsts#xml-variable-substitution)
+ * [JSON variable substitution](https://docs.microsoft.com/en-us/vsts/build-release/tasks/transforms-variable-substitution?view=vsts#json-variable-substitution)
+* **Deployment script:**
+The task provides an option to customize the deployment by providing a script that will run on the Azure App Service once the application artifacts have been copied successfully to the App Service. You can choose to either provide an inline deployment script or point to a script file in your atifact folder. This is very useful when you want to restore your application dependencies on the App service directly. Restoring packages of Node, PHP, Python applications helps in avoiding timeouts when the application dependency results in a large artifact getting copied over from Azure Pipelines Agent to Azure app service. An example of this script is:
+```
+@echo off
+if NOT exist requirements.txt (
+ echo No Requirements.txt found.
+ EXIT /b 0
+)
+if NOT exist "$(PYTHON_EXT)/python.exe" (
+ echo Python extension not available >&2
+ EXIT /b 1
+)
+echo Installing dependencies
+call "$(PYTHON_EXT)/python.exe" -m pip install -U setuptools
+if %errorlevel% NEQ 0 (
+ echo Failed to install setuptools >&2
+ EXIT /b 1
+)
+call "$(PYTHON_EXT)/python.exe" -m pip install -r requirements.txt
+if %errorlevel% NEQ 0 (
+ echo Failed to install dependencies>&2
+ EXIT /b 1
+)
+```
+
+* **Runtime Stack:**
+Web App on Linux offers two different options to publish your application, one is Custom image deployment (Web App for Containers) and the other is App deployment with a built-in platform image (Web App on Linux). You will see this parameter only when you selected 'Linux Web App' in the App type selection option in the task.
+
+For Web **Web App for Containers** you need to provide the following details:
+* *Registry or Namespace:*
+A globally unique top-level domain name for your specific registry or namespace. A fully qualified image name will be of the format: '/:'. For example, 'myregistry.azurecr.io/nginx:latest'.
+
+* *Image:*
+Image Name of the repository where the container images are stored. A fully qualified image name will be of the format: '/:'. For example, 'myregistry.azurecr.io/nginx:latest'.
+
+* *Tag:*
+Tags are optional, it is the mechanism that registries use to give Docker images a version. A fully qualified image name will be of the format: '/:'. For example, 'myregistry.azurecr.io/nginx:latest'.
+
+* *Startup command:*
+Start up command for the container.
+
+For Web **Web App on Linux** you need to provide the following details:
+* *Runtime stack:* Select the framework and version your web app will run on.
+
+* *Startup command:*
+Start up command for the app. For example if you are using PM2 process manager for Nodejs then you can specify the PM2 file here.
+
+* *Application and Configuration Settings*
+
+**App settings**: [App settings](https://docs.microsoft.com/en-us/azure/app-service/web-sites-configure#app-settings) contains name/value pairs that your web app will load on start up. Edit web app application settings by following the syntax '-key value'. Value containing spaces should be enclosed in double quotes.
+>Example : -Port 5000 -RequestTimeout 5000
+>-WEBSITE_TIME_ZONE "Eastern Standard Time"
+
+**Configuration settings**:
+Edit web app [configuration settings](https://docs.microsoft.com/en-us/azure/app-service/web-sites-configure) following the syntax -key value. Value containing spaces should be enclosed in double quotes.
+>Example : -phpVersion 5.6 -linuxFxVersion: node|6.11
+
+### Output Variables
+
+* **Web App Hosted URL:** Provide a name, like FabrikamWebAppURL for the variable for the Azure App Service Hosted URL. The variable can be used as $(variableName), like $(FabrikamWebAppURL) to refer to the Hosted URL of the Azure App Service in subsequent tasks like in the [Run Functional Tests task](https://github.com/Microsoft/azure-pipelines-tasks/tree/master/Tasks/RunDistributedTestsV1) or the [Visual Studio Test task](https://github.com/Microsoft/azure-pipelines-tasks/tree/master/Tasks/VsTestV2).
+
+
+### Troubleshooting :
+
+- **Could not fetch access token for Azure. Verify if the Service Principal used is valid and not expired.**
+
+ Service connection used by the task would have been expired or the service principal use must have been removed from the app registrations. [Troubleshoot the affected Azure Resource Manager service connection.](https://docs.microsoft.com/en-us/azure/devops/pipelines/release/azure-rm-endpoint?view=azure-devops)
+
+- **SSL error**
+ To use a certificate in App Service, the certificate must be signed by a trusted certificate authority. If your web app gives you certificate validation errors, you're probably using a self-signed certificate and to resolve them you need to set a variable named VSTS_ARM_REST_IGNORE_SSL_ERRORS to the value true in the build or release pipeline",
+
+- **Managed Service Identity (MSI)**
+ configure Managed Service Identity (MSI) for virtual machine https://aka.ms/azure-msi-docs
+
+
+- **Publish using zip deploy option is not supported for msBuild package type**
+ Follow the steps provided in the link https://github.com/microsoft/azure-pipelines-tasks/wiki/Migrating-from-Web-Deploy-to-Run-From-Package-deployment-mechanism
+
+- **ERROR_FILE_IN_USE**
+ * For avoiding deployment failure with error code ERROR_FILE_IN_USE, in case of .NET apps targeting Web App on Windows, ensure that 'Rename locked files' and 'Take App Offline' are enabled. For zero downtime deployment use slot swap.
+ * You can also use `Run From Package` deployment method to avoid resource locking.
+
+- **Web Job deployment**
+When deploying to an App Service with App Insights configured, if you have enabled “Remove additional files at destination” then you also need to enable “Exclude files from the App_Data folder” in order to keep App insights extension in safe state. This is required because App Insights continuous web job gets installed into the App_Data folder.
diff --git a/_generated/AzureRmWebAppDeploymentV4/Strings/resources.resjson/de-DE/resources.resjson b/_generated/AzureRmWebAppDeploymentV4/Strings/resources.resjson/de-DE/resources.resjson
new file mode 100644
index 000000000000..61fdf60095b0
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/Strings/resources.resjson/de-DE/resources.resjson
@@ -0,0 +1,229 @@
+{
+ "loc.friendlyName": "Azure App Service-Bereitstellung",
+ "loc.helpMarkDown": "[Weitere Informationen zu dieser Aufgabe](https://aka.ms/azurermwebdeployreadme)",
+ "loc.description": "Hiermit wird eine Web-, Mobil- oder API-App mithilfe von Docker, Java, .NET, .NET Core, Node.js, PHP, Python oder Ruby für Azure App Service bereitgestellt.",
+ "loc.instanceNameFormat": "Azure App Service bereitstellen: $(WebAppName)",
+ "loc.releaseNotes": "Neuigkeiten in Version 4.* Unterstützung für ZIP Deploy, die Ausführung über Pakete und WAR Deploy [Details](https://aka.ms/appServiceDeploymentMethods) Unterstützung für App Service-Umgebungen Verbesserte Benutzeroberfläche zum Ermitteln der von der Aufgabe unterstützten App Service-Typen \"Aus Paket ausführen\" ist die bevorzugte Bereitstellungsmethode und markiert Dateien im Ordner \"wwwroot\" als schreibgeschützt Klicken Sie [hier](https://aka.ms/azurermwebdeployreadme), um weitere Informationen zu erhalten.",
+ "loc.group.displayName.FileTransformsAndVariableSubstitution": "Optionen für Dateitransformationen und Variablenersetzungen",
+ "loc.group.displayName.AdditionalDeploymentOptions": "Zusätzliche Bereitstellungsoptionen",
+ "loc.group.displayName.PostDeploymentAction": "Aktion nach der Bereitstellung",
+ "loc.group.displayName.ApplicationAndConfigurationSettings": "Anwendungs- und Konfigurationseinstellungen",
+ "loc.input.label.ConnectionType": "Verbindungstyp",
+ "loc.input.help.ConnectionType": "Wählen Sie den Dienstverbindungstyp aus, der zum Bereitstellen der Web-App verwendet werden soll. Wählen Sie \"Veröffentlichungsprofil\" aus, um das von Visual Studio erstellte Veröffentlichungsprofil zu verwenden. [Weitere Informationen](https://aka.ms/vsPublishProfile).",
+ "loc.input.label.ConnectedServiceName": "Azure-Abonnement",
+ "loc.input.help.ConnectedServiceName": "Wählen Sie das Azure Resource Manager-Abonnement für die Bereitstellung aus.",
+ "loc.input.label.PublishProfilePath": "Pfad für Veröffentlichungsprofil",
+ "loc.input.help.PublishProfilePath": "Pfad des von Visual Studio erstellten Veröffentlichungsprofils",
+ "loc.input.label.PublishProfilePassword": "Kennwort für Veröffentlichungsprofil",
+ "loc.input.help.PublishProfilePassword": "Es wird empfohlen, das Kennwort in einer geheimen Variablen zu speichern und diese Variable hier zu verwenden, z. B. $(Password).",
+ "loc.input.label.WebAppKind": "App Service-Typ",
+ "loc.input.help.WebAppKind": "Wählen Sie aus zwischen Web-App unter Windows, Web-App unter Linux, Web-App für Container, Funktions-App, Funktions-App unter Linux, Funktions-App für Container und mobile App.",
+ "loc.input.label.WebAppName": "App Service-Name",
+ "loc.input.help.WebAppName": "Geben Sie den Namen eines vorhandenen Azure App Service ein, oder wählen Sie ihn aus. Es werden nur App-Dienste für den ausgewählten App-Typ angezeigt.",
+ "loc.input.label.DeployToSlotOrASEFlag": "In Slot oder App Service-Umgebung bereitstellen",
+ "loc.input.help.DeployToSlotOrASEFlag": "Wählen Sie die Option für die Bereitstellung in einem vorhandenen Bereitstellungsslot oder in der Azure App Service-Umgebung. Für beide Ziele benötigt die Aufgabe den Ressourcengruppennamen. Falls als Bereitstellungsziel ein Slot verwendet wird, erfolgt die Bereitstellung standardmäßig im Produktionsslot. Auch jeder andere vorhandene Slotname kann angegeben werden. Falls als Bereitstellungsziel eine Azure App Service-Umgebung verwendet wird, behalten Sie den Slotnamen \"production\" bei, und geben Sie nur den Namen der Ressourcengruppe an.",
+ "loc.input.label.ResourceGroupName": "Ressourcengruppe",
+ "loc.input.help.ResourceGroupName": "Der Ressourcengruppenname ist erforderlich, wenn als Bereitstellungsziel ein Bereitstellungsslot oder eine App Service-Umgebung verwendet wird. Geben Sie die Azure-Ressourcengruppe mit der oben angegebenen Azure App Service-Instanz ein, oder wählen Sie sie aus.",
+ "loc.input.label.SlotName": "Slot",
+ "loc.input.help.SlotName": "Geben Sie einen anderen vorhandenen Slot als den Produktionsslot ein, oder wählen Sie ihn aus.",
+ "loc.input.label.DockerNamespace": "Registrierung oder Namespace",
+ "loc.input.help.DockerNamespace": "Eine global eindeutiger Name einer Domäne der obersten Ebene für Ihre spezifische Registrierung oder den Namespace. Hinweis: Vollqualifizierte Imagenamen haben das folgende Format: \"`/`:`\". Beispiel: \"myregistry.azurecr.io/nginx:latest\".",
+ "loc.input.label.DockerRepository": "Image",
+ "loc.input.help.DockerRepository": "Name des Repositorys, in dem Containerimages gespeichert werden. Hinweis: Vollqualifizierte Imagenamen haben das folgende Format: \"'/`:`\". Beispiel: \"myregistry.azurecr.io/nginx:latest\".",
+ "loc.input.label.DockerImageTag": "Tag",
+ "loc.input.help.DockerImageTag": "Tags sind optional. Sie werden von den Registrierungen genutzt, um eine Version für die Docker-Images zu vergeben. Hinweis: Vollqualifizierte Imagenamen haben das folgende Format: \"'`/`:`\". Beispiel: \"myregistry.azurecr.io/nginx:latest\".",
+ "loc.input.label.VirtualApplication": "Virtuelle Anwendung",
+ "loc.input.help.VirtualApplication": "Geben Sie den Namen der virtuellen Anwendung ein, die im Azure-Portal konfiguriert wurde. Die Option ist für Bereitstellungen im App Service-Stamm nicht erforderlich.",
+ "loc.input.label.Package": "Paket oder Ordner",
+ "loc.input.help.Package": "Dateipfad zum Paket oder zu einem Ordner mit den durch MSBuild generierten App Service-Inhalten oder zu einer komprimierten ZIP-oder WAR-Datei. Variablen ([Build](https://docs.microsoft.com/vsts/pipelines/build/variables) | [Release](https://docs.microsoft.com/vsts/pipelines/release/variables#default-variables)), Platzhalter werden unterstützt. Beispiel: \"$(System.DefaultWorkingDirectory)/\\*\\*/\\*.zip\" oder \"$(System.DefaultWorkingDirectory)/\\*\\*/\\*.war\".",
+ "loc.input.label.RuntimeStack": "Runtimestapel",
+ "loc.input.help.RuntimeStack": "Wählen Sie Framework und Version aus.",
+ "loc.input.label.RuntimeStackFunction": "Runtimestapel",
+ "loc.input.help.RuntimeStackFunction": "Wählen Sie das Framework und die Version aus. In [diesem Dokument](https://docs.microsoft.com/azure/azure-functions/functions-versions#languages) finden Sie die unterstützten Runtimeversionen. Verwenden Sie anstelle alter Werte wie \"DOCKER|microsoft/azure-functions-*\" die neuen Werte aus der Dropdownliste.",
+ "loc.input.label.StartupCommand": "Startbefehl ",
+ "loc.input.help.StartupCommand": "Geben Sie den Startbefehl ein. Beispiel: dotnet exec Dateiname.dll dotnet Dateiname.dll",
+ "loc.input.label.ScriptType": "Bereitstellungsskripttyp",
+ "loc.input.help.ScriptType": "Passen Sie die Bereitstellung durch das Angeben eines Skripts an, das im Azure App Service ausgeführt wird, nachdem die Aufgabe die Bereitstellung erfolgreich abgeschlossen hat. Stellen Sie beispielsweise Pakete für Node-, PHP- oder Python-Anwendungen wieder her. [Weitere Informationen](https://go.microsoft.com/fwlink/?linkid=843471).",
+ "loc.input.label.InlineScript": "Inlineskript",
+ "loc.input.label.ScriptPath": "Bereitstellungsskriptpfad",
+ "loc.input.label.WebConfigParameters": "Parameter der Datei \"web.config\" für Python-, Node.js-, Go- und Java-Apps generieren",
+ "loc.input.help.WebConfigParameters": "Ein Standarddatei \"web.config\" wird generiert und in Azure App Service bereitgestellt, wenn diese Datei nicht in der Anwendung vorhanden ist. Die Werte in \"web.config\" können bearbeitet werden und variieren je nach Anwendungsframework. Zum Beispiel enthält \"web.config\" für node.js-Anwendungen Werte für eine Startdatei und ein iis_node-Modul. Dieses Bearbeitungsfeature gilt nur für die generierte Datei \"web.config\". [Weitere Informationen](https://go.microsoft.com/fwlink/?linkid=843469).",
+ "loc.input.label.AppSettings": "App-Einstellungen",
+ "loc.input.help.AppSettings": "Bearbeiten Sie Web-App-Anwendungseinstellungen entsprechend der Syntax \"-Schlüssel Wert\". Ein Wert mit Leerzeichen muss in doppelte Anführungszeichen eingeschlossen werden. Beispiel: -Port 5000 -RequestTimeout 5000 -WEBSITE_TIME_ZONE \"Eastern Standard Time\"",
+ "loc.input.label.ConfigurationSettings": "Konfigurationseinstellungen",
+ "loc.input.help.ConfigurationSettings": "Bearbeiten Sie Web-App-Konfigurationseinstellungen entsprechend der Syntax \"-Schlüssel Wert\". Ein Wert mit Leerzeichen muss in doppelte Anführungszeichen eingeschlossen werden. Beispiel: -phpVersion 5.6 -linuxFxVersion: node|6.11",
+ "loc.input.label.UseWebDeploy": "Bereitstellungsmethode auswählen",
+ "loc.input.help.UseWebDeploy": "Wenn die Option deaktiviert ist, wird die beste Bereitstellungsmethode basierend auf dem App-Typ, dem Paketformat und anderen Parametern automatisch ermittelt. Klicken Sie auf die Option zum Anzeigen der unterstützten Bereitstellungsmethoden, und wählen Sie eine davon für die Bereitstellung Ihrer App aus.",
+ "loc.input.label.DeploymentType": "Bereitstellungsmethode",
+ "loc.input.help.DeploymentType": "Wählen Sie die Bereitstellungsmethode für die App aus.",
+ "loc.input.label.TakeAppOfflineFlag": "App offline schalten",
+ "loc.input.help.TakeAppOfflineFlag": "Wählen Sie diese Option aus, um den Azure App Service offline zu schalten, indem vor dem Synchronisierungsvorgang eine Datei \"app_offline.htm\" im App Service-Stammverzeichnis platziert wird. Die Datei wird entfernt, nachdem der Synchronisierungsvorgang erfolgreich abgeschlossen wurde.",
+ "loc.input.label.SetParametersFile": "SetParameters-Datei",
+ "loc.input.help.SetParametersFile": "Optional: Speicherort für die zu verwendende Datei \"SetParameters.xml\".",
+ "loc.input.label.RemoveAdditionalFilesFlag": "Zusätzliche Dateien am Ziel entfernen",
+ "loc.input.help.RemoveAdditionalFilesFlag": "Wählen Sie diese Option aus, um Dateien im Azure App Service zu löschen, für die keine übereinstimmenden Dateien im Paket oder Ordner des App Service vorhanden sind.
Hierdurch werden auch alle zugehörigen Dateien für Erweiterungen entfernt, die in diesem Azure App Service installiert sind. Um dies zu verhindern, aktivieren Sie das Kontrollkästchen \"Dateien aus App_Data-Ordner ausschließen\".",
+ "loc.input.label.ExcludeFilesFromAppDataFlag": "Dateien aus dem Ordner \"App_Data\" ausschließen",
+ "loc.input.help.ExcludeFilesFromAppDataFlag": "Wählen Sie diese Option aus, um zu verhindern, dass Dateien im Ordner \"App_Data\" in Azure App Service bereitgestellt oder gelöscht werden.",
+ "loc.input.label.AdditionalArguments": "Zusätzliche Argumente",
+ "loc.input.help.AdditionalArguments": "Weitere Web Deploy-Argumente mit der Syntax \"-key:value\". Diese werden angewendet, wenn der Azure App Service bereitgestellt wird. Beispiel: -disableLink:AppPoolExtension -disableLink:ContentExtension. Weitere Beispiele für Einstellungen für den Web Deploy-Vorgang finden Sie [hier] (https://go.microsoft.com/fwlink/?linkid=838471).",
+ "loc.input.label.RenameFilesFlag": "Gesperrte Dateien umbenennen",
+ "loc.input.help.RenameFilesFlag": "Wählen Sie die Option aus, um das msdeploy-Flag MSDEPLOY_RENAME_LOCKED_FILES=1 in den Azure App Service-Anwendungseinstellungen zu aktivieren. Wenn diese Option festgelegt ist, kann \"msdeploy\" gesperrte Dateien umbenennen, die während der App-Bereitstellung gesperrt sind.",
+ "loc.input.label.XmlTransformation": "XML-Transformation",
+ "loc.input.help.XmlTransformation": "Die Konfigurationstransformationen werden für \"*.Release.config\" und \"*..config\" in der Datei \"*.config\" ausgeführt. Konfigurationstransformationen werden vor der Variablenersetzung ausgeführt. XML-Transformationen werden nur für Windows-Plattformen unterstützt.",
+ "loc.input.label.XmlVariableSubstitution": "XML-Variablenersetzung",
+ "loc.input.help.XmlVariableSubstitution": "In der Build- oder Releasepipeline definierte Variablen werden mit den Einträgen \"key\" oder \"name\" in den appSettings-, applicationSettings- und connectionStrings-Abschnitten jeder Konfigurationsdatei und der Datei \"parameters.xml\" abgeglichen. Die Variablenersetzung erfolgt nach den Konfigurationstransformationen.
Hinweis: Wenn in der Releasepipeline und der Umgebung dieselben Variablen definiert wurden, haben die Umgebungsvariablen Vorrang vor den Variablen der Releasepipeline. ",
+ "loc.input.label.JSONFiles": "JSON-Variablenersetzung",
+ "loc.input.help.JSONFiles": "Stellen Sie eine durch Zeilenumbrüche getrennte Liste der JSON-Dateien für die Ersetzung der Variablenwerte bereit. Die Dateinamen müssen relativ zum Stammordner angegeben werden. Um geschachtelte oder hierarchische JSON-Variablen zu ersetzen, geben Sie diese mithilfe von JSONPath-Ausdrücken an.
Um etwa im Beispiel unten den Wert von \"ConnectionString\" zu ersetzen, müssen Sie in der Build- oder Releasepipeline (oder der Umgebung der Releasepipeline) eine Variable als \"Data.DefaultConnection.ConnectionString\" definieren. { \"Data\": { \"DefaultConnection\": { \"ConnectionString\": \"Server=(localdb)\\SQLEXPRESS;Database=MyDB;Trusted_Connection=True\" } } } Die Variablenersetzung wird nach den Konfigurationstransformationen durchgeführt.
Hinweis: Pipelinevariablen sind von der Ersetzung ausgenommen.",
+ "loc.messages.Invalidwebapppackageorfolderpathprovided": "Ungültiges App Service-Paket oder ungültiger App Service-Ordnerpfad angegeben: %s",
+ "loc.messages.SetParamFilenotfound0": "Datei zum Festlegen der Parameter nicht gefunden: %s",
+ "loc.messages.XDTTransformationsappliedsuccessfully": "Die XML-Transformationen wurden erfolgreich angewendet.",
+ "loc.messages.GotconnectiondetailsforazureRMWebApp0": "Die Dienstverbindungsdetails für Azure App Service wurden abgerufen: \"%s\"",
+ "loc.messages.ErrorNoSuchDeployingMethodExists": "Fehler: Keine solche Bereitstellungsmethode vorhanden.",
+ "loc.messages.UnabletoretrieveconnectiondetailsforazureRMWebApp": "Die Dienstverbindungsdetails für Azure App Service können nicht abgerufen werden: %s. Statuscode: %s (%s)",
+ "loc.messages.UnabletoretrieveResourceID": "Die Dienstverbindungsdetails für die Azure-Ressource \"%s\" konnten nicht abgerufen werden. Statuscode: %s",
+ "loc.messages.Successfullyupdateddeploymenthistory": "Der Bereitstellungsverlauf unter \"%s\" wurde erfolgreich aktualisiert.",
+ "loc.messages.Failedtoupdatedeploymenthistory": "Fehler beim Aktualisieren des Bereitstellungsverlaufs. Fehler: %s",
+ "loc.messages.WARNINGCannotupdatedeploymentstatusSCMendpointisnotenabledforthiswebsite": "WARNUNG: Der Bereitstellungsstatus kann nicht aktualisiert werden: Der SCM-Endpunkt ist für diese Website nicht aktiviert.",
+ "loc.messages.Unabletoretrievewebconfigdetails": "Die App Service-Konfigurationsdetails können nicht abgerufen werden. Statuscode: \"%s\"",
+ "loc.messages.Unabletoretrievewebappsettings": "Die App Service-Anwendungseinstellungen können nicht abgerufen werden. [Statuscode: %s, Fehlermeldung: %s]",
+ "loc.messages.Unabletoupdatewebappsettings": "Die App Service-Anwendungseinstellungen können nicht aktualisiert werden. Statuscode: \"%s\"",
+ "loc.messages.CannotupdatedeploymentstatusuniquedeploymentIdCannotBeRetrieved": "Der Bereitstellungsstatus kann nicht aktualisiert werden: Die eindeutige Bereitstellungs-ID kann nicht abgerufen werden.",
+ "loc.messages.PackageDeploymentSuccess": "Web-Paket für den App Service erfolgreich bereitgestellt.",
+ "loc.messages.PackageDeploymentFailed": "Fehler beim Bereitstellen des Web-Pakets für den App Service.",
+ "loc.messages.Runningcommand": "Befehl wird ausgeführt: %s",
+ "loc.messages.Deployingwebapplicationatvirtualpathandphysicalpath": "Webpaket \"%s\" wird im virtuellen Pfad (physischen Pfad) bereitgestellt: %s (%s)",
+ "loc.messages.Successfullydeployedpackageusingkuduserviceat": "Das Paket \"%s\" wurde unter Verwendung des Kudu-Diensts erfolgreich unter \"%s\" bereitgestellt.",
+ "loc.messages.Failedtodeploywebapppackageusingkuduservice": "Fehler beim Bereitstellen des App Service-Pakets mithilfe des Kudu-Diensts: %s",
+ "loc.messages.Unabletodeploywebappresponsecode": "Der App Service kann nicht bereitgestellt werden. Fehlercode: %s",
+ "loc.messages.MSDeploygeneratedpackageareonlysupportedforWindowsplatform": "Mit MSDeploy generierte Pakete werden nur für Windows-Plattformen unterstützt.",
+ "loc.messages.UnsupportedinstalledversionfoundforMSDeployversionshouldbeatleast3orabove": "Nicht unterstützte installierte Version %s für MSDeploy gefunden. Version 3 oder höher muss installiert sein.",
+ "loc.messages.UnabletofindthelocationofMSDeployfromregistryonmachineError": "Der Speicherort von MS Deploy wurde nicht in der Registrierung auf dem Computer gefunden (Fehler: %s).",
+ "loc.messages.Nopackagefoundwithspecifiedpattern": "Es wurde kein Paket mit dem angegebenen Muster gefunden: %s überprüfen, ob das in der Aufgabe erwähnte Paket als Artefakt im Build oder in einer vorherigen Stage veröffentlicht und im aktuellen Auftrag heruntergeladen wurde.",
+ "loc.messages.MorethanonepackagematchedwithspecifiedpatternPleaserestrainthesearchpattern": "Mindestens zwei Pakete stimmten mit dem angegebenen Suchmuster überein: %s. Schränken Sie das Suchmuster ein.",
+ "loc.messages.Trytodeploywebappagainwithappofflineoptionselected": "Versuchen Sie, den App Service mit ausgewählter Option \"Anwendung offline schalten\" erneut bereitzustellen.",
+ "loc.messages.Trytodeploywebappagainwithrenamefileoptionselected": "Versuchen Sie, den App Service mit ausgewählter Option \"Gesperrte Dateien umbenennen\" erneut bereitzustellen.",
+ "loc.messages.NOJSONfilematchedwithspecificpattern": "Keine JSON-Datei stimmte mit dem angegebenen Muster überein: %s",
+ "loc.messages.Configfiledoesntexists": "Die Konfigurationsdatei \"%s\" ist nicht vorhanden.",
+ "loc.messages.Failedtowritetoconfigfilewitherror": "Fehler beim Schreiben in die Konfigurationsdatei \"%s\". Fehler: %s ",
+ "loc.messages.AppOfflineModeenabled": "Der App-Offlinemodus wurde aktiviert.",
+ "loc.messages.Failedtoenableappofflinemode": "Fehler beim Aktivieren des App-Offlinemodus. Statuscode: %s (%s)",
+ "loc.messages.AppOflineModedisabled": "Der App-Offlinemodus wurde deaktiviert.",
+ "loc.messages.FailedtodisableAppOfflineMode": "Fehler beim Deaktivieren des App-Offlinemodus. Statuscode: %s (%s)",
+ "loc.messages.CannotPerformXdtTransformationOnNonWindowsPlatform": "XML-Transformationen können auf einer Nicht-Windows-Plattform nicht ausgeführt werden.",
+ "loc.messages.XdtTransformationErrorWhileTransforming": "XML-Transformationsfehler beim Transformieren von \"%s\" unter Verwendung von \"%s\".",
+ "loc.messages.PublishusingwebdeployoptionsaresupportedonlywhenusingWindowsagent": "Eine Veröffentlichung unter Verwendung von webdeploy-Optionen wird nur unterstützt, wenn der Windows-Agent verwendet wird. ",
+ "loc.messages.Publishusingzipdeploynotsupportedformsbuildpackage": "Die Veröffentlichung über die ZIP Deploy-Option wird für den msBuild-Pakettyp nicht unterstützt.",
+ "loc.messages.Publishusingzipdeploynotsupportedforvirtualapplication": "Die Veröffentlichung über die ZIP Deploy-Option wird für virtuelle Anwendungen nicht unterstützt.",
+ "loc.messages.Publishusingzipdeploydoesnotsupportwarfile": "Bei der Veröffentlichung über die Optionen \"ZIP Deploy\" oder \"RunFromZip\" wird die WAR-Dateibereitstellung nicht unterstützt.",
+ "loc.messages.Publishusingrunfromzipwithpostdeploymentscript": "Bei der Veröffentlichung über RunFromZip werden Skripts nach der Bereitstellung möglicherweise nicht unterstützt, wenn diese Änderungen an wwwroot vornehmen, weil der Ordner schreibgeschützt ist.",
+ "loc.messages.ResourceDoesntExist": "Die Ressource \"%s\" ist nicht vorhanden. Die Ressource muss vor der Bereitstellung vorhanden sein.",
+ "loc.messages.EncodeNotSupported": "Erkannte Codierung der Datei \"%s\": %s. Eine Variablenersetzung wird für die Dateicodierung \"%s\" nicht unterstützt. Unterstützte Codierungen sind UTF-8 und UTF-16 LE.",
+ "loc.messages.UnknownFileEncodeError": "Die Codierung der Datei \"%s\" wurde nicht erkannt (typeCode: %s). Unterstützte Codierungen sind UTF-8 und UTF-16 LE.",
+ "loc.messages.ShortFileBufferError": "Der Dateipuffer ist zu klein, um den Codierungstyp zu erkennen: %s",
+ "loc.messages.FailedToUpdateAzureRMWebAppConfigDetails": "Fehler beim Aktualisieren der App Service-Konfigurationsdetails. Fehler: %s",
+ "loc.messages.SuccessfullyUpdatedAzureRMWebAppConfigDetails": "Die App Service-Konfigurationsdetails wurden erfolgreich aktualisiert.",
+ "loc.messages.RequestedURLforkuduphysicalpath": "Angeforderte URL für physischen Kudu-Pfad: %s",
+ "loc.messages.Physicalpathalreadyexists": "Der physische Pfad \"%s\" ist bereits vorhanden.",
+ "loc.messages.KuduPhysicalpathCreatedSuccessfully": "Der physische Kudu-Pfad wurde erfolgreich erstellt: %s",
+ "loc.messages.FailedtocreateKuduPhysicalPath": "Fehler beim Erstellen des physischen Kudu-Pfads. Fehler: %s",
+ "loc.messages.FailedtocheckphysicalPath": "Fehler beim Überprüfen des physischen Kudu-Pfads. Fehlercode: %s",
+ "loc.messages.VirtualApplicationDoesNotExist": "Die virtuelle Anwendung ist nicht vorhanden: %s",
+ "loc.messages.JSONParseError": "Die JSON-Datei konnte nicht analysiert werden: %s. Fehler: %s",
+ "loc.messages.JSONvariablesubstitutionappliedsuccessfully": "Die JSON-Variablenersetzung wurde erfolgreich angewendet.",
+ "loc.messages.XMLvariablesubstitutionappliedsuccessfully": "XML-Variablenersetzung erfolgreich angewendet.",
+ "loc.messages.failedtoUploadFileToKudu": "Datei \"%s\" kann nicht in Kudu (%s) hochgeladen werden. Statuscode: %s",
+ "loc.messages.failedtoUploadFileToKuduError": "Hochladen der Datei: %s auf Kudu (%s) nicht möglich. Fehler: %s",
+ "loc.messages.ExecuteScriptOnKudu": "Das angegebene Skript wird im Kudu-Dienst ausgeführt.",
+ "loc.messages.FailedToRunScriptOnKuduError": "Das Skript kann nicht im Kudu-Dienst ausgeführt werden. Fehler: %s",
+ "loc.messages.FailedToRunScriptOnKudu": "Ausführen des Skripts in Kudu nicht möglich: %s. Statuscode: %s",
+ "loc.messages.ScriptExecutionOnKuduSuccess": "Skript in Kudu erfolgreich ausgeführt.",
+ "loc.messages.ScriptExecutionOnKuduFailed": "Das ausgeführte Skript hat \"%s\" als Rückgabecode zurückgegeben. Fehler: %s",
+ "loc.messages.FailedtoDeleteFileFromKudu": "Die Datei \"%s\" kann nicht aus Kudu (%s) gelöscht werden. Statuscode: %s",
+ "loc.messages.FailedtoDeleteFileFromKuduError": "Löschen der Datei: %s von Kudu (%s) nicht möglich. Fehler: %s",
+ "loc.messages.ScriptFileNotFound": "Skriptdatei \"%s\" nicht gefunden.",
+ "loc.messages.InvalidScriptFile": "Ungültige Skriptdatei \"%s\" angegeben. Gültige Erweiterungen sind \".bat\" und \".cmd\" für Windows und \".sh\" für Linux.",
+ "loc.messages.RetryForTimeoutIssue": "Fehler beim Ausführen des Skripts mit Zeitüberschreitung. Es wird noch mal versucht.",
+ "loc.messages.stdoutFromScript": "Standardausgabe von Skript:",
+ "loc.messages.stderrFromScript": "Standardfehler von Skript:",
+ "loc.messages.WebConfigAlreadyExists": "web.config-Datei ist bereits vorhanden. Sie wird nicht erstellt.",
+ "loc.messages.SuccessfullyGeneratedWebConfig": "web.config-Datei erfolgreich erstellt.",
+ "loc.messages.FailedToGenerateWebConfig": "Fehler beim Erstellen von \"web.config\". %s",
+ "loc.messages.FailedToGetKuduFileContent": "Dateiinhalt konnte nicht abgerufen werden: %s. Statuscode: %s (%s)",
+ "loc.messages.FailedToGetKuduFileContentError": "Dateiinhalt konnte nicht abgerufen werden: %s. Fehler: %s",
+ "loc.messages.ScriptStatusTimeout": "Skriptstatus konnte aufgrund einer Zeitüberschreitung nicht abgerufen werden.",
+ "loc.messages.PollingForFileTimeOut": "Der Skriptstatus konnte aufgrund einer Zeitüberschreitung nicht abgerufen werden. Sie können das Zeitlimit erhöhen, indem Sie die erforderliche Minutenzahl für die Variable \"appservicedeploy.retrytimeout\" festlegen.",
+ "loc.messages.InvalidPollOption": "Ungültige Abrufoption angegeben: %s.",
+ "loc.messages.MissingAppTypeWebConfigParameters": "Das Attribut \"-appType\" fehlt in den Parametern \"Web.config\". Gültige Werte für \"-appType\" sind: \"python_Bottle\", \"python_Django\", \"python_Flask\", \"node\" und \"Go\". Beispiel: \"-appType python_Bottle\" (ohne Anführungszeichen) im Fall von Python Bottle-Framework.",
+ "loc.messages.AutoDetectDjangoSettingsFailed": "Der Pfad für die Datei \"settings.py\" von DJANGO_SETTINGS_MODULE 'settings.py' wurde nicht gefunden. Überprüfen Sie, ob die Datei \"settings.py\" existiert, oder geben Sie den korrekten Pfad in der Parametereingabe \"Web.config\" im folgenden Format an: \"-DJANGO_SETTINGS_MODULE .settings\".",
+ "loc.messages.FailedToApplyTransformation": "Die Transformation für das angegebene Paket kann nicht angewendet werden. Führen Sie die folgenden Schritte aus.",
+ "loc.messages.FailedToApplyTransformationReason1": "1. Prüfen Sie, ob die Transformation für das beim Build generierte MSBuild-Paket bereits angewendet wurde. Ist dies der Fall, entfernen Sie das Tag aus allen Konfigurationen in der CSPROJ-Datei, und führen Sie den Build erneut aus. ",
+ "loc.messages.FailedToApplyTransformationReason2": "2. Stellen Sie sicher, dass sich die Konfigurationsdatei und die Transformationsdateien im selben Ordner im Paket befinden.",
+ "loc.messages.AutoParameterizationMessage": "ConnectionString-Attribute in Web.config ist standardmäßig parametrisiert. Beachten Sie, dass die Transformation keine Auswirkungen auf connectionString-Attribute hat, da der Wert bei der Bereitstellung durch Dateien vom Typ \"Parameters.xml\" oder \"SetParameters.xml\" überschrieben wird. Sie können die automatische Parametrisierung deaktivieren, indem Sie beim Erstellung des MSBuild-Pakets die Einstellung \"/p:AutoParameterizationWebConfigConnectionStrings=False\" festlegen.",
+ "loc.messages.UnsupportedAppType": "App-Typ \"%s\" wird beim Erstellen von \"Web.config\" nicht unterstützt. Gültige Werte für \"-appType\" sind: \"python_Bottle\", \"python_Django\", \"python_Flask\" und \"node\".",
+ "loc.messages.UnableToFetchAuthorityURL": "Abrufen der Autoritäts-URL nicht möglich.",
+ "loc.messages.UnableToFetchActiveDirectory": "Abrufen der Active Directory-Ressourcen-ID nicht möglich.",
+ "loc.messages.SuccessfullyUpdatedRuntimeStackAndStartupCommand": "Runtimestapel und Startbefehl erfolgreich aktualisiert.",
+ "loc.messages.FailedToUpdateRuntimeStackAndStartupCommand": "Fehler beim Aktualisieren des Runtimestapels und des Startbefehls. Fehler: %s.",
+ "loc.messages.SuccessfullyUpdatedWebAppSettings": "App-Einstellungen erfolgreich aktualisiert.",
+ "loc.messages.FailedToUpdateAppSettingsInConfigDetails": "Fehler beim Aktualisieren der App-Einstellungen. Fehler: %s.",
+ "loc.messages.UnableToGetAzureRMWebAppMetadata": "Fehler beim Abrufen von AzureRM-WebApp-Metadaten. ErrorCode: %s",
+ "loc.messages.UnableToUpdateAzureRMWebAppMetadata": "AzureRM-WebApp-Metadaten können nicht aktualisiert werden. Fehlercode: %s",
+ "loc.messages.Unabletoretrieveazureregistrycredentials": "Die Anmeldeinformationen für Azure Container Registry konnten nicht abgerufen werden. [Statuscode: %s]",
+ "loc.messages.UnableToReadResponseBody": "Antworttext konnte nicht gelesen werden. Fehler: %s",
+ "loc.messages.UnableToUpdateWebAppConfigDetails": "WebApp-Konfigurationsdetails konnten nicht aktualisiert werden. StatusCode: \"%s\"",
+ "loc.messages.AddingReleaseAnnotation": "Releaseanmerkung für Application Insights-Ressource \"%s\" wird hinzugefügt.",
+ "loc.messages.SuccessfullyAddedReleaseAnnotation": "Releaseanmerkung erfolgreich zu Application Insight hinzugefügt: %s",
+ "loc.messages.FailedAddingReleaseAnnotation": "Fehler beim Hinzufügen einer Releaseanmerkung. %s",
+ "loc.messages.RenameLockedFilesEnabled": "Umbenennung gesperrter Dateien für App Service aktiviert.",
+ "loc.messages.FailedToEnableRenameLockedFiles": "Fehler beim Aktivieren der Umbenennung gesperrter Dateien. Fehler: %s",
+ "loc.messages.WebJobsInProgressIssue": "Einige WebJobs-Instanzen werden gerade ausgeführt und verhindern, dass die Bereitstellung Dateien entfernt. Sie können die Option \"Zusätzliche Dateien am Ziel entfernen\" deaktivieren oder fortlaufende Aufträge vor der Bereitstellung beenden.",
+ "loc.messages.FailedToFetchKuduAppSettings": "Fehler beim Abrufen von Kudu-App-Einstellungen. Fehler: %s",
+ "loc.messages.FailedToCreatePath": "Fehler beim Erstellen des Pfads \"%s\" aus Kudu. Fehler: %s",
+ "loc.messages.FailedToDeleteFile": "Fehler beim Löschen der Datei \"%s/%s\" aus Kudu. Fehler: %s",
+ "loc.messages.FailedToDeleteFolder": "Fehler beim Löschen des Ordners \"%s\" aus Kudu. Fehler: %s",
+ "loc.messages.FailedToUploadFile": "Fehler beim Hochladen der Datei \"%s/%s\" aus Kudu. Fehler: %s",
+ "loc.messages.FailedToGetFileContent": "Fehler beim Abrufen des Dateiinhalts \"%s/%s\" aus Kudu. Fehler: %s",
+ "loc.messages.FailedToListPath": "Fehler beim Auflisten von Pfad \"%s\" aus Kudu. Fehler: %s",
+ "loc.messages.RetryToDeploy": "Es wird erneut versucht, das Paket bereitzustellen.",
+ "loc.messages.FailedToGetAppServiceDetails": "Fehler beim Abrufen der App Service-Details \"%s\". Fehler: %s",
+ "loc.messages.FailedToGetAppServicePublishingProfile": "Fehler beim Abrufen des Veröffentlichungsprofils für App Service \"%s\". Fehler: %s",
+ "loc.messages.FailedToUpdateAppServiceMetadata": "Fehler beim Aktualisieren der Metadaten für App Service \"%s\". Fehler: %s",
+ "loc.messages.FailedToGetAppServiceMetadata": "Fehler beim Abrufen der Metadaten für App Service \"%s\". Fehler: %s",
+ "loc.messages.FailedToPatchAppServiceConfiguration": "Fehler beim Patchen der Konfiguration für App Service \"%s\". Fehler: %s",
+ "loc.messages.FailedToUpdateAppServiceConfiguration": "Fehler beim Aktualisieren der App-Dienstkonfiguration \"%s\". Fehler: %s",
+ "loc.messages.FailedToGetAppServiceConfiguration": "Fehler beim Abrufen der Konfiguration für App Service \"%s\". Fehler: %s",
+ "loc.messages.FailedToGetAppServicePublishingCredentials": "Fehler beim Abrufen der Anmeldeinformationen für die Veröffentlichung für App Service \"%s\". Fehler: %s",
+ "loc.messages.FailedToGetAppServiceApplicationSettings": "Fehler beim Abrufen der Anwendungseinstellungen für App Service \"%s\". Fehler: %s",
+ "loc.messages.FailedToUpdateAppServiceApplicationSettings": "Fehler beim Aktualisieren der Anwendungseinstellungen für App Service \"%s\". Fehler: %s",
+ "loc.messages.UpdatingAppServiceConfigurationSettings": "Es wird versucht, die App Service-Konfigurationseinstellungen zu aktualisieren. Daten: %s",
+ "loc.messages.UpdatedAppServiceConfigurationSettings": "Die App Service-Konfigurationseinstellungen wurden aktualisiert.",
+ "loc.messages.UpdatingAppServiceApplicationSettings": "Es wird versucht, die App Service-Anwendungseinstellungen zu aktualisieren. Daten: %s",
+ "loc.messages.AppServiceApplicationSettingsAlreadyPresent": "App Service-Anwendungseinstellungen sind bereits vorhanden.",
+ "loc.messages.AppServiceConnectionStringsAlreadyPresent": "App Service-Verbindungszeichenfolgen sind bereits vorhanden.",
+ "loc.messages.UpdatedAppServiceApplicationSettings": "Die App Service-Anwendungseinstellungen und die Kudu-Anwendungseinstellungen wurden aktualisiert.",
+ "loc.messages.MultipleResourceGroupFoundForAppService": "Mehrere Ressourcengruppen für App Service \"%s\" gefunden.",
+ "loc.messages.PackageDeploymentUsingZipDeployFailed": "Fehler bei der Paketbereitstellung über ZIP Deploy. Weitere Informationen finden Sie in den Protokollen.",
+ "loc.messages.PackageDeploymentInitiated": "Die Paketbereitstellung über ZIP Deploy wurde eingeleitet.",
+ "loc.messages.WarPackageDeploymentInitiated": "Die Paketbereitstellung über WAR Deploy wurde eingeleitet.",
+ "loc.messages.FailedToGetDeploymentLogs": "Fehler beim Abrufen von Bereitstellungsprotokollen. Fehler: %s",
+ "loc.messages.GoExeNameNotPresent": "Der Name der Go-EXE-Datei ist nicht vorhanden.",
+ "loc.messages.WarDeploymentRetry": "Die Bereitstellung der WAR-Datei wird wiederholt, weil sie zuvor nicht erfolgreich erweitert wurde.",
+ "loc.messages.Updatemachinetoenablesecuretlsprotocol": "Stellen Sie sicher, dass der Computer das TLS 1.2-Protokoll oder eine höhere Version verwendet. Weitere Informationen zum Aktivieren von TLS auf Ihrem Computer finden Sie unter https://aka.ms/enableTlsv2.",
+ "loc.messages.CouldNotFetchAccessTokenforAzureStatusCode": "Ein Zugriffstoken für Azure konnte nicht abgerufen werden. Statuscode: %s, Statusmeldung: %s",
+ "loc.messages.CouldNotFetchAccessTokenforMSIDueToMSINotConfiguredProperlyStatusCode": "Ein Zugriffstoken für den verwalteten Dienstprinzipal konnte nicht abgerufen werden. Konfigurieren Sie die verwaltete Dienstidentität (MSI) für den virtuellen Computer (https://aka.ms/azure-msi-docs). Statuscode: %s, Statusmeldung: %s",
+ "loc.messages.CouldNotFetchAccessTokenforMSIStatusCode": "Ein Zugriffstoken für den verwalteten Dienstprinzipal konnte nicht abgerufen werden. Statuscode: %s, Statusmeldung: %s",
+ "loc.messages.XmlParsingFailed": "Die publishProfileXML-Datei konnte nicht analysiert werden. Fehler: %s",
+ "loc.messages.PropertyDoesntExistPublishProfile": "Die [%s]-Eigenschaft ist im Veröffentlichungsprofil nicht vorhanden.",
+ "loc.messages.InvalidConnectionType": "Ungültiger Dienstverbindungstyp",
+ "loc.messages.InvalidImageSourceType": "Ungültiger Imagequelltyp",
+ "loc.messages.InvalidPublishProfile": "Die Veröffentlichungsprofildatei ist ungültig.",
+ "loc.messages.ASE_SSLIssueRecommendation": "Um ein Zertifikat in App Service zu verwenden, muss das Zertifikat von einer vertrauenswürdigen Zertifizierungsstelle signiert sein. Werden von Ihrer Web-App Zertifikatüberprüfungsfehler zurückgegeben, verwenden Sie wahrscheinlich ein selbstsigniertes Zertifikat. Um den Fehler zu beheben, müssen Sie in der Build- oder Releasepipeline eine Variable mit dem Namen VSTS_ARM_REST_IGNORE_SSL_ERRORS auf den Wert TRUE festlegen.",
+ "loc.messages.ZipDeployLogsURL": "ZIP Deploy-Protokolle können unter %s angezeigt werden.",
+ "loc.messages.DeployLogsURL": "Bereitstellungsprotokolle können unter %s angezeigt werden.",
+ "loc.messages.AppServiceApplicationURL": "URL der App Service-Anwendung: %s",
+ "loc.messages.ASE_WebDeploySSLIssueRecommendation": "Um ein Zertifikat in App Service zu verwenden, muss das Zertifikat von einer vertrauenswürdigen Zertifizierungsstelle signiert sein. Werden von Ihrer Web-App Zertifikatüberprüfungsfehler zurückgegeben, verwenden Sie wahrscheinlich ein selbstsigniertes Zertifikat. Um den Fehler zu beheben, müssen Sie \"-allowUntrusted\" in zusätzlichen Argumenten der Web Deploy-Option übergeben.",
+ "loc.messages.FailedToGetResourceID": "Fehler beim Abrufen der Ressourcen-ID für Ressourcentyp \"%s\" und Ressourcenname \"%s\". Fehler: %s",
+ "loc.messages.JarPathNotPresent": "Der Java-JAR-Pfad ist nicht vorhanden.",
+ "loc.messages.FailedToUpdateApplicationInsightsResource": "Fehler beim Aktualisieren der Application Insights-Ressource \"%s\". Fehler: %s",
+ "loc.messages.RunFromZipPreventsFileInUseError": "Wechseln Sie Web Deploy zum \"Aus Paket ausführen\", um FILE_IN_USE-Fehler zu vermeiden. Beachten Sie, dass \"Aus Paket ausführen\" keine Unterstützung für den msBuild-Pakettyp bietet. Ändern Sie Ihr Paketformat, um diese Bereitstellungsmethode zu verwenden."
+}
\ No newline at end of file
diff --git a/_generated/AzureRmWebAppDeploymentV4/Strings/resources.resjson/en-US/resources.resjson b/_generated/AzureRmWebAppDeploymentV4/Strings/resources.resjson/en-US/resources.resjson
new file mode 100644
index 000000000000..dfb1c49dc866
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/Strings/resources.resjson/en-US/resources.resjson
@@ -0,0 +1,230 @@
+{
+ "loc.friendlyName": "Azure App Service deploy",
+ "loc.helpMarkDown": "[Learn more about this task](https://aka.ms/azurermwebdeployreadme)",
+ "loc.description": "Deploy to Azure App Service a web, mobile, or API app using Docker, Java, .NET, .NET Core, Node.js, PHP, Python, or Ruby",
+ "loc.instanceNameFormat": "Azure App Service Deploy: $(WebAppName)",
+ "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.PostDeploymentAction": "Post Deployment Action",
+ "loc.group.displayName.ApplicationAndConfigurationSettings": "Application and Configuration Settings",
+ "loc.input.label.ConnectionType": "Connection type",
+ "loc.input.help.ConnectionType": "Select the service connection type to use to deploy the Web App. Select Publish Profile for using Visual Studio created Publish profile. [More Information](https://aka.ms/vsPublishProfile).",
+ "loc.input.label.ConnectedServiceName": "Azure subscription",
+ "loc.input.help.ConnectedServiceName": "Select the Azure Resource Manager subscription for the deployment.",
+ "loc.input.label.PublishProfilePath": "Publish profile path",
+ "loc.input.help.PublishProfilePath": "Path of the Publish profile created from Visual Studio",
+ "loc.input.label.PublishProfilePassword": "Publish profile password",
+ "loc.input.help.PublishProfilePassword": "It is recommended to store password in a secret variable and use that variable here e.g. $(Password).",
+ "loc.input.label.WebAppKind": "App Service type",
+ "loc.input.help.WebAppKind": "Choose from Web App On Windows, Web App On Linux, Web App for Containers, Function App, Function App on Linux, Function App for Containers and Mobile App.",
+ "loc.input.label.WebAppName": "App Service name",
+ "loc.input.help.WebAppName": "Enter or Select the name of an existing Azure App Service. App services based on selected app type will only be listed.",
+ "loc.input.label.DeployToSlotOrASEFlag": "Deploy to Slot or App Service Environment",
+ "loc.input.help.DeployToSlotOrASEFlag": "Select the option to deploy to an existing deployment slot or Azure App Service Environment. For both the targets, the task needs Resource group name. In case the deployment target is a slot, by default the deployment is done to the production slot. Any other existing slot name can also be provided. In case the deployment target is an Azure App Service environment, leave the slot name as ‘production’ and just specify the Resource group name.",
+ "loc.input.label.ResourceGroupName": "Resource group",
+ "loc.input.help.ResourceGroupName": "The Resource group name is required when the deployment target is either a deployment slot or an App Service Environment. Enter or Select the Azure Resource group that contains the Azure App Service specified above.",
+ "loc.input.label.SlotName": "Slot",
+ "loc.input.help.SlotName": "Enter or Select an existing Slot other than the Production slot.",
+ "loc.input.label.DockerNamespace": "Registry or Namespace",
+ "loc.input.help.DockerNamespace": "A globally unique top-level domain name for your specific registry or namespace. Note: Fully qualified image name will be of the format: '`/`:`'. For example, 'myregistry.azurecr.io/nginx:latest'.",
+ "loc.input.label.DockerRepository": "Image",
+ "loc.input.help.DockerRepository": "Name of the repository where the container images are stored. Note: Fully qualified image name will be of the format: '`/`:`'. For example, 'myregistry.azurecr.io/nginx:latest'.",
+ "loc.input.label.DockerImageTag": "Tag",
+ "loc.input.help.DockerImageTag": "Tags are optional, it is the mechanism that registries use to give Docker images a version. Note: Fully qualified image name will be of the format: '`/`:`'. For example, 'myregistry.azurecr.io/nginx:latest'.",
+ "loc.input.label.VirtualApplication": "Virtual application",
+ "loc.input.help.VirtualApplication": "Specify the name of the Virtual application that has been configured in the Azure portal. The option is not required for deployments to the App Service root.",
+ "loc.input.label.Package": "Package or folder",
+ "loc.input.help.Package": "File path to the package or a folder containing app service contents generated by MSBuild or a compressed zip or war file. Variables ( [Build](https://docs.microsoft.com/vsts/pipelines/build/variables) | [Release](https://docs.microsoft.com/vsts/pipelines/release/variables#default-variables)), wildcards are supported. For example, $(System.DefaultWorkingDirectory)/\\*\\*/\\*.zip or $(System.DefaultWorkingDirectory)/\\*\\*/\\*.war.",
+ "loc.input.label.RuntimeStack": "Runtime Stack",
+ "loc.input.help.RuntimeStack": "Select the framework and version.",
+ "loc.input.label.RuntimeStackFunction": "Runtime Stack",
+ "loc.input.help.RuntimeStackFunction": "Select the framework and version. Refer [this doc](https://docs.microsoft.com/azure/azure-functions/functions-versions#languages) for supported runtime versions. Old values like `DOCKER|microsoft/azure-functions-*` are deprecated, please use the new values from dropdown.",
+ "loc.input.label.StartupCommand": "Startup command ",
+ "loc.input.help.StartupCommand": "Enter the start up command. For ex. dotnet exec filename.dll dotnet filename.dll",
+ "loc.input.label.ScriptType": "Deployment script type",
+ "loc.input.help.ScriptType": "Customize the deployment by providing a script that will run on the Azure App service once the task has completed the deployment successfully . For example restore packages for Node, PHP, Python applications. [Learn more](https://go.microsoft.com/fwlink/?linkid=843471).",
+ "loc.input.label.InlineScript": "Inline Script",
+ "loc.input.label.ScriptPath": "Deployment script path",
+ "loc.input.label.WebConfigParameters": "Generate web.config parameters for Python, Node.js, Go and Java apps",
+ "loc.input.help.WebConfigParameters": "A standard Web.config will be generated and deployed to Azure App Service if the application does not have one. The values in web.config can be edited and vary based on the application framework. For example for node.js application, web.config will have startup file and iis_node module values. This edit feature is only for the generated web.config. [Learn more](https://go.microsoft.com/fwlink/?linkid=843469).",
+ "loc.input.label.AppSettings": "App settings",
+ "loc.input.help.AppSettings": "Edit web app application settings following the syntax -key value . Value containing spaces should be enclosed in double quotes. Example : -Port 5000 -RequestTimeout 5000 -WEBSITE_TIME_ZONE \"Eastern Standard Time\"",
+ "loc.input.label.ConfigurationSettings": "Configuration settings",
+ "loc.input.help.ConfigurationSettings": "Edit web app configuration settings following the syntax -key value. Value containing spaces should be enclosed in double quotes. Example : -phpVersion 5.6 -linuxFxVersion: node|6.11",
+ "loc.input.label.UseWebDeploy": "Select deployment method",
+ "loc.input.help.UseWebDeploy": "If unchecked we will auto-detect the best deployment method based on your app type, package format and other parameters. Select the option to view the supported deployment methods and choose one for deploying your app.",
+ "loc.input.label.DeploymentType": "Deployment method",
+ "loc.input.help.DeploymentType": "Choose the deployment method for the app.",
+ "loc.input.label.TakeAppOfflineFlag": "Take App Offline",
+ "loc.input.help.TakeAppOfflineFlag": "Select the option to take the Azure App Service offline by placing an app_offline.htm file in the root directory of the App Service before the sync operation begins. The file will be removed after the sync operation completes successfully.",
+ "loc.input.label.SetParametersFile": "SetParameters file",
+ "loc.input.help.SetParametersFile": "Optional: location of the SetParameters.xml file to use.",
+ "loc.input.label.RemoveAdditionalFilesFlag": "Remove additional files at destination",
+ "loc.input.help.RemoveAdditionalFilesFlag": "Select the option to delete files on the Azure App Service that have no matching files in the App Service package or folder.
Note: This will also remove all files related to any extension installed on this Azure App Service. To prevent this, select 'Exclude files from App_Data folder' checkbox. ",
+ "loc.input.label.ExcludeFilesFromAppDataFlag": "Exclude files from the App_Data folder",
+ "loc.input.help.ExcludeFilesFromAppDataFlag": "Select the option to prevent files in the App_Data folder from being deployed to/ deleted from the Azure App Service.",
+ "loc.input.label.AdditionalArguments": "Additional arguments",
+ "loc.input.help.AdditionalArguments": "Additional Web Deploy arguments following the syntax -key:value . These will be applied when deploying the Azure App Service. Example: -disableLink:AppPoolExtension -disableLink:ContentExtension. For more examples of Web Deploy operation settings, refer to [this](https://go.microsoft.com/fwlink/?linkid=838471).",
+ "loc.input.label.RenameFilesFlag": "Rename locked files",
+ "loc.input.help.RenameFilesFlag": "Select the option to enable msdeploy flag MSDEPLOY_RENAME_LOCKED_FILES=1 in Azure App Service application settings. The option if set enables msdeploy to rename locked files that are locked during app deployment",
+ "loc.input.label.XmlTransformation": "XML transformation",
+ "loc.input.help.XmlTransformation": "The config transforms will be run for `*.Release.config` and `*..config` on the `*.config file`. Config transforms will be run prior to the Variable Substitution. XML transformations are supported only for Windows platform.",
+ "loc.input.label.XmlVariableSubstitution": "XML variable substitution",
+ "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.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",
+ "loc.messages.GotconnectiondetailsforazureRMWebApp0": "Got service connection details for Azure App Service:'%s'",
+ "loc.messages.ErrorNoSuchDeployingMethodExists": "Error : No such deploying method exists",
+ "loc.messages.UnabletoretrieveconnectiondetailsforazureRMWebApp": "Unable to retrieve service connection details for Azure App Service : %s. Status Code: %s (%s)",
+ "loc.messages.UnabletoretrieveResourceID": "Unable to retrieve service connection details for Azure Resource:'%s'. Status Code: %s",
+ "loc.messages.Successfullyupdateddeploymenthistory": "Successfully updated deployment History at %s",
+ "loc.messages.Failedtoupdatedeploymenthistory": "Failed to update deployment history. Error: %s",
+ "loc.messages.WARNINGCannotupdatedeploymentstatusSCMendpointisnotenabledforthiswebsite": "WARNING : Cannot update deployment status : SCM endpoint is not enabled for this website",
+ "loc.messages.Unabletoretrievewebconfigdetails": "Unable to retrieve App Service configuration details. Status Code: '%s'",
+ "loc.messages.Unabletoretrievewebappsettings": "Unable to retrieve App Service application settings. [Status Code: '%s', Error Message: '%s']",
+ "loc.messages.Unabletoupdatewebappsettings": "Unable to update App service application settings. Status Code: '%s'",
+ "loc.messages.CannotupdatedeploymentstatusuniquedeploymentIdCannotBeRetrieved": "Cannot update deployment status : Unique Deployment ID cannot be retrieved",
+ "loc.messages.PackageDeploymentSuccess": "Successfully deployed web package to App Service.",
+ "loc.messages.PackageDeploymentFailed": "Failed to deploy web package to App Service.",
+ "loc.messages.Runningcommand": "Running command: %s",
+ "loc.messages.Deployingwebapplicationatvirtualpathandphysicalpath": "Deploying web package : %s at virtual path (physical path) : %s (%s)",
+ "loc.messages.Successfullydeployedpackageusingkuduserviceat": "Successfully deployed package %s using kudu service at %s",
+ "loc.messages.Failedtodeploywebapppackageusingkuduservice": "Failed to deploy App Service package using kudu service : %s",
+ "loc.messages.Unabletodeploywebappresponsecode": "Unable to deploy App Service due to error code : %s",
+ "loc.messages.MSDeploygeneratedpackageareonlysupportedforWindowsplatform": "MSDeploy generated packages are only supported for Windows platform.",
+ "loc.messages.UnsupportedinstalledversionfoundforMSDeployversionshouldbeatleast3orabove": "Unsupported installed version: %s found for MSDeploy. version should be at least 3 or above",
+ "loc.messages.UnabletofindthelocationofMSDeployfromregistryonmachineError": "Unable to find the location of MS Deploy from registry on machine (Error : %s)",
+ "loc.messages.Nopackagefoundwithspecifiedpattern": "No package found with specified pattern: %s Check if the package mentioned in the task is published as an artifact in the build or a previous stage and downloaded in the current job.",
+ "loc.messages.MorethanonepackagematchedwithspecifiedpatternPleaserestrainthesearchpattern": "More than one package matched with specified pattern: %s. Please restrain the search pattern.",
+ "loc.messages.Trytodeploywebappagainwithappofflineoptionselected": "Try to deploy app service again with Take application offline option selected.",
+ "loc.messages.Trytodeploywebappagainwithrenamefileoptionselected": "Try to deploy app service again with Rename locked files option selected.",
+ "loc.messages.NOJSONfilematchedwithspecificpattern": "NO JSON file matched with specific pattern: %s.",
+ "loc.messages.Configfiledoesntexists": "Configuration file %s doesn't exist.",
+ "loc.messages.Failedtowritetoconfigfilewitherror": "Failed to write to config file %s with error : %s",
+ "loc.messages.AppOfflineModeenabled": "App offline mode enabled.",
+ "loc.messages.Failedtoenableappofflinemode": "Failed to enable app offline mode. Status Code: %s (%s)",
+ "loc.messages.AppOflineModedisabled": "App offline mode disabled.",
+ "loc.messages.FailedtodisableAppOfflineMode": "Failed to disable App offline mode. Status Code: %s (%s)",
+ "loc.messages.CannotPerformXdtTransformationOnNonWindowsPlatform": "Cannot perform XML transformations on a non-Windows platform.",
+ "loc.messages.XdtTransformationErrorWhileTransforming": "XML transformation error while transforming %s using %s.",
+ "loc.messages.PublishusingwebdeployoptionsaresupportedonlywhenusingWindowsagent": "Publish using webdeploy options are supported only when using Windows agent",
+ "loc.messages.Publishusingzipdeploynotsupportedformsbuildpackage": "Publish using zip deploy option is not supported for msBuild package type.",
+ "loc.messages.Publishusingzipdeploynotsupportedforvirtualapplication": "Publish using zip deploy option is not supported for virtual application.",
+ "loc.messages.Publishusingzipdeploydoesnotsupportwarfile": "Publish using zip deploy or RunFromZip options do not support war file deployment.",
+ "loc.messages.Publishusingrunfromzipwithpostdeploymentscript": "Publish using RunFromZip might not support post deployment script if it makes changes to wwwroot, since the folder is ReadOnly.",
+ "loc.messages.ResourceDoesntExist": "Resource '%s' doesn't exist. Resource should exist before deployment.",
+ "loc.messages.EncodeNotSupported": "Detected file encoding of the file %s as %s. Variable substitution is not supported with file encoding %s. Supported encodings are UTF-8 and UTF-16 LE.",
+ "loc.messages.UnknownFileEncodeError": "Unable to detect encoding of the file %s (typeCode: %s). Supported encodings are UTF-8 and UTF-16 LE.",
+ "loc.messages.ShortFileBufferError": "File buffer is too short to detect encoding type : %s",
+ "loc.messages.FailedToUpdateAzureRMWebAppConfigDetails": "Failed to update App Service configuration details. Error: %s",
+ "loc.messages.SuccessfullyUpdatedAzureRMWebAppConfigDetails": "Successfully updated App Service configuration details",
+ "loc.messages.RequestedURLforkuduphysicalpath": "Requested URL for kudu physical path : %s",
+ "loc.messages.Physicalpathalreadyexists": "Physical path '%s' already exists",
+ "loc.messages.KuduPhysicalpathCreatedSuccessfully": "Kudu physical path created successfully : %s",
+ "loc.messages.FailedtocreateKuduPhysicalPath": "Failed to create kudu physical path. Error : %s",
+ "loc.messages.FailedtocheckphysicalPath": "Failed to check kudu physical path. Error Code: %s",
+ "loc.messages.VirtualApplicationDoesNotExist": "Virtual application doesn't exists : %s",
+ "loc.messages.JSONParseError": "Unable to parse JSON file: %s. Error: %s",
+ "loc.messages.JSONvariablesubstitutionappliedsuccessfully": "JSON variable substitution applied successfully.",
+ "loc.messages.XMLvariablesubstitutionappliedsuccessfully": "XML variable substitution applied successfully.",
+ "loc.messages.failedtoUploadFileToKudu": "Unable to upload file: %s to Kudu (%s). Status Code: %s",
+ "loc.messages.failedtoUploadFileToKuduError": "Unable to upload file: %s to Kudu (%s). Error: %s",
+ "loc.messages.ExecuteScriptOnKudu": "Executing given script on Kudu service.",
+ "loc.messages.FailedToRunScriptOnKuduError": "Unable to run the script on Kudu Service. Error: %s",
+ "loc.messages.FailedToRunScriptOnKudu": "Unable to run the script on Kudu: %s. Status Code: %s",
+ "loc.messages.ScriptExecutionOnKuduSuccess": "Successfully executed script on Kudu.",
+ "loc.messages.ScriptExecutionOnKuduFailed": "Executed script returned '%s' as return code. Error: %s",
+ "loc.messages.FailedtoDeleteFileFromKudu": "Unable to delete file: %s from Kudu (%s). Status Code: %s",
+ "loc.messages.FailedtoDeleteFileFromKuduError": "Unable to delete file: %s from Kudu (%s). Error: %s",
+ "loc.messages.ScriptFileNotFound": "Script file '%s' not found.",
+ "loc.messages.InvalidScriptFile": "Invalid script file '%s' provided. Valid extensions are .bat and .cmd for windows and .sh for linux",
+ "loc.messages.RetryForTimeoutIssue": "Script execution failed with timeout issue. Retrying once again.",
+ "loc.messages.stdoutFromScript": "Standard output from script: ",
+ "loc.messages.stderrFromScript": "Standard error from script: ",
+ "loc.messages.WebConfigAlreadyExists": "web.config file already exists. Not generating.",
+ "loc.messages.SuccessfullyGeneratedWebConfig": "Successfully generated web.config file",
+ "loc.messages.FailedToGenerateWebConfig": "Failed to generate web.config. %s",
+ "loc.messages.FailedToGetKuduFileContent": "Unable to get file content: %s . Status code: %s (%s)",
+ "loc.messages.FailedToGetKuduFileContentError": "Unable to get file content: %s. Error: %s",
+ "loc.messages.ScriptStatusTimeout": "Unable to fetch script status due to timeout.",
+ "loc.messages.PollingForFileTimeOut": "Unable to fetch script status due to timeout. You can increase the timeout limit by setting 'appservicedeploy.retrytimeout' variable to number of minutes required.",
+ "loc.messages.InvalidPollOption": "Invalid polling option provided: %s.",
+ "loc.messages.MissingAppTypeWebConfigParameters": "Attribute '-appType' is missing in the Web.config parameters. Valid values for '-appType' are: 'python_Bottle', 'python_Django', 'python_Flask', 'node' and 'Go'. For example, '-appType python_Bottle' (sans-quotes) in case of Python Bottle framework..",
+ "loc.messages.AutoDetectDjangoSettingsFailed": "Unable to detect DJANGO_SETTINGS_MODULE 'settings.py' file path. Ensure that the 'settings.py' file exists or provide the correct path in Web.config parameter input in the following format '-DJANGO_SETTINGS_MODULE .settings'",
+ "loc.messages.FailedToApplyTransformation": "Unable to apply transformation for the given package. Verify the following.",
+ "loc.messages.FailedToApplyTransformationReason1": "1. Whether the Transformation is already applied for the MSBuild generated package during build. If yes, remove the tag for each config in the csproj file and rebuild. ",
+ "loc.messages.FailedToApplyTransformationReason2": "2. Ensure that the config file and transformation files are present in the same folder inside the package.",
+ "loc.messages.AutoParameterizationMessage": "ConnectionString attributes in Web.config is parameterized by default. Note that the transformation has no effect on connectionString attributes as the value is overridden during deployment by 'Parameters.xml or 'SetParameters.xml' files. You can disable the auto-parameterization by setting /p:AutoParameterizationWebConfigConnectionStrings=False during MSBuild package generation.",
+ "loc.messages.UnsupportedAppType": "App type '%s' not supported in Web.config generation. Valid values for '-appType' are: 'python_Bottle', 'python_Django', 'python_Flask' and 'node'",
+ "loc.messages.UnableToFetchAuthorityURL": "Unable to fetch authority URL.",
+ "loc.messages.UnableToFetchActiveDirectory": "Unable to fetch Active Directory resource ID.",
+ "loc.messages.SuccessfullyUpdatedRuntimeStackAndStartupCommand": "Successfully updated the Runtime Stack and Startup Command.",
+ "loc.messages.FailedToUpdateRuntimeStackAndStartupCommand": "Failed to update the Runtime Stack and Startup Command. Error: %s.",
+ "loc.messages.SuccessfullyUpdatedWebAppSettings": "Successfully updated the App settings.",
+ "loc.messages.FailedToUpdateAppSettingsInConfigDetails": "Failed to update the App settings. Error: %s.",
+ "loc.messages.UnableToGetAzureRMWebAppMetadata": "Failed to fetch AzureRM WebApp metadata. ErrorCode: %s",
+ "loc.messages.UnableToUpdateAzureRMWebAppMetadata": "Unable to update AzureRM WebApp metadata. Error Code: %s",
+ "loc.messages.Unabletoretrieveazureregistrycredentials": "Unable to retrieve Azure Container Registry credentials.[Status Code: '%s']",
+ "loc.messages.UnableToReadResponseBody": "Unable to read response body. Error: %s",
+ "loc.messages.UnableToUpdateWebAppConfigDetails": "Unable to update WebApp config details. StatusCode: '%s'",
+ "loc.messages.AddingReleaseAnnotation": "Adding release annotation for the Application Insights resource '%s'",
+ "loc.messages.SuccessfullyAddedReleaseAnnotation": "Successfully added release annotation to the Application Insight : %s",
+ "loc.messages.FailedAddingReleaseAnnotation": "Failed to add release annotation. %s",
+ "loc.messages.RenameLockedFilesEnabled": "Rename locked files enabled for App Service.",
+ "loc.messages.FailedToEnableRenameLockedFiles": "Failed to enable rename locked files. Error: %s",
+ "loc.messages.WebJobsInProgressIssue": "Few WebJobs in running state prevents the deployment from removing the files. You can disable 'Remove additional files at destination' option or Stop continuous Jobs before deployment.",
+ "loc.messages.FailedToFetchKuduAppSettings": "Failed to fetch Kudu App Settings. Error: %s",
+ "loc.messages.FailedToCreatePath": "Failed to create path '%s' from Kudu. Error: %s",
+ "loc.messages.FailedToDeleteFile": "Failed to delete file '%s/%s' from Kudu. Error: %s",
+ "loc.messages.FailedToDeleteFolder": "Failed to delete folder '%s' from Kudu. Error: %s",
+ "loc.messages.FailedToUploadFile": "Failed to upload file '%s/%s' from Kudu. Error: %s",
+ "loc.messages.FailedToGetFileContent": "Failed to get file content '%s/%s' from Kudu. Error: %s",
+ "loc.messages.FailedToListPath": "Failed to list path '%s' from Kudu. Error: %s",
+ "loc.messages.RetryToDeploy": "Retrying to deploy the package.",
+ "loc.messages.FailedToGetAppServiceDetails": "Failed to fetch App Service '%s' details. Error: %s",
+ "loc.messages.FailedToGetAppServicePublishingProfile": "Failed to fetch App Service '%s' publishing profile. Error: %s",
+ "loc.messages.FailedToUpdateAppServiceMetadata": "Failed to update App service '%s' Meta data. Error: %s",
+ "loc.messages.FailedToGetAppServiceMetadata": "Failed to get App service '%s' Meta data. Error: %s",
+ "loc.messages.FailedToPatchAppServiceConfiguration": "Failed to patch App Service '%s' configuration. Error: %s",
+ "loc.messages.FailedToUpdateAppServiceConfiguration": "Failed to update App service '%s' configuration. Error: %s",
+ "loc.messages.FailedToGetAppServiceConfiguration": "Failed to get App service '%s' configuration. Error: %s",
+ "loc.messages.FailedToGetAppServicePublishingCredentials": "Failed to fetch App Service '%s' publishing credentials. Error: %s",
+ "loc.messages.FailedToGetAppServiceApplicationSettings": "Failed to get App service '%s' application settings. Error: %s",
+ "loc.messages.FailedToUpdateAppServiceApplicationSettings": "Failed to update App service '%s' application settings. Error: %s",
+ "loc.messages.UpdatingAppServiceConfigurationSettings": "Trying to update App Service Configuration settings. Data: %s",
+ "loc.messages.UpdatedAppServiceConfigurationSettings": "Updated App Service Configuration settings.",
+ "loc.messages.UpdatingAppServiceApplicationSettings": "Trying to update App Service Application settings. Data: %s",
+ "loc.messages.AppServiceApplicationSettingsAlreadyPresent": "App Service Application settings are already present.",
+ "loc.messages.AppServiceConnectionStringsAlreadyPresent": "App Service Connection Strings are already present.",
+ "loc.messages.UpdatedAppServiceApplicationSettings": "Updated App Service Application settings and Kudu Application settings.",
+ "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.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",
+ "loc.messages.WarDeploymentRetry": "Retrying war file deployment as it did not expand successfully earlier.",
+ "loc.messages.Updatemachinetoenablesecuretlsprotocol": "Make sure the machine is using TLS 1.2 protocol or higher. Check https://aka.ms/enableTlsv2 for more information on how to enable TLS in your machine.",
+ "loc.messages.CouldNotFetchAccessTokenforAzureStatusCode": "Could not fetch access token for Azure. Status code: %s, status message: %s",
+ "loc.messages.CouldNotFetchAccessTokenforMSIDueToMSINotConfiguredProperlyStatusCode": "Could not fetch access token for Managed Service Principal. Please configure Managed Service Identity (MSI) for virtual machine 'https://aka.ms/azure-msi-docs'. Status code: %s, status message: %s",
+ "loc.messages.CouldNotFetchAccessTokenforMSIStatusCode": "Could not fetch access token for Managed Service Principal. Status code: %s, status message: %s",
+ "loc.messages.XmlParsingFailed": "Unable to parse publishProfileXML file, Error: %s",
+ "loc.messages.PropertyDoesntExistPublishProfile": "[%s] Property does not exist in publish profile",
+ "loc.messages.InvalidConnectionType": "Invalid service connection type",
+ "loc.messages.InvalidImageSourceType": "Invalid Image source Type",
+ "loc.messages.InvalidPublishProfile": "Publish profile file is invalid.",
+ "loc.messages.ASE_SSLIssueRecommendation": "To use a certificate in App Service, the certificate must be signed by a trusted certificate authority. If your web app gives you certificate validation errors, you're probably using a self-signed certificate and to resolve them you need to set a variable named VSTS_ARM_REST_IGNORE_SSL_ERRORS to the value true in the build or release pipeline",
+ "loc.messages.ZipDeployLogsURL": "Zip Deploy logs can be viewed at %s",
+ "loc.messages.DeployLogsURL": "Deploy logs can be viewed at %s",
+ "loc.messages.AppServiceApplicationURL": "App Service Application URL: %s",
+ "loc.messages.ASE_WebDeploySSLIssueRecommendation": "To use a certificate in App Service, the certificate must be signed by a trusted certificate authority. If your web app gives you certificate validation errors, you're probably using a self-signed certificate and to resolve them you need to pass -allowUntrusted in additional arguments of web deploy option.",
+ "loc.messages.FailedToGetResourceID": "Failed to get resource ID for resource type '%s' and resource name '%s'. Error: %s",
+ "loc.messages.JarPathNotPresent": "Java jar path is not present",
+ "loc.messages.FailedToUpdateApplicationInsightsResource": "Failed to update Application Insights '%s' Resource. Error: %s",
+ "loc.messages.RunFromZipPreventsFileInUseError": "Move from Web Deploy to RunFrom Package, which helps in avoiding FILE_IN_USE error. Note that Run From Package does not support msBuild package type. Please change your package format to use this deployment method.",
+ "loc.messages.MSDeployNotSupportTokenAuth": "App Service is configured to not use basic authentication. This requires Web Deploy msdeploy.exe version 7.1.7225 or higher. You need a version of Visual Studio that includes an updated version of msdeploy.exe. For more information, visit https://aka.ms/azdo-webapp-msdeploy ."
+}
\ No newline at end of file
diff --git a/_generated/AzureRmWebAppDeploymentV4/Strings/resources.resjson/es-ES/resources.resjson b/_generated/AzureRmWebAppDeploymentV4/Strings/resources.resjson/es-ES/resources.resjson
new file mode 100644
index 000000000000..f10de1f4b8fc
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/Strings/resources.resjson/es-ES/resources.resjson
@@ -0,0 +1,229 @@
+{
+ "loc.friendlyName": "Implementación de Azure App Service",
+ "loc.helpMarkDown": "[Obtener más información acerca de esta tarea](https://aka.ms/azurermwebdeployreadme)",
+ "loc.description": "Implementar en Azure App Service una aplicación de API, móvil o web con Docker, Java, .NET, .NET Core, Node.js, PHP, Python o Ruby",
+ "loc.instanceNameFormat": "Implementación de Azure App Service: $(WebAppName)",
+ "loc.releaseNotes": "Novedades de la versión 4.* Compatibilidad con la implementación desde archivo zip, la ejecución desde paquete y la implementación desde archivo WAR [detalles aquí](https://aka.ms/appServiceDeploymentMethods) Compatibilidad con los entornos de App Service Environment Mejora de la interfaz de usuario para detectar diferentes tipos de instancias de App Service compatibles con la tarea La ejecución desde el paquete es el método de implementación preferido, que hace que los archivos de la carpeta wwwroot sean de solo lectura Haga clic [aquí](https://aka.ms/azurermwebdeployreadme) para obtener más información.",
+ "loc.group.displayName.FileTransformsAndVariableSubstitution": "Transformaciones de archivos y opciones de sustitución de variables",
+ "loc.group.displayName.AdditionalDeploymentOptions": "Opciones de implementación adicionales",
+ "loc.group.displayName.PostDeploymentAction": "Acción posterior a la implementación",
+ "loc.group.displayName.ApplicationAndConfigurationSettings": "Configuración y opciones de la aplicación",
+ "loc.input.label.ConnectionType": "Tipo de conexión",
+ "loc.input.help.ConnectionType": "Seleccione el tipo de conexión de servicio que se va a usar para implementar la aplicación web. Seleccione Perfil de publicación para usar el perfil de publicación creado por Visual Studio. [Más información] (https://aka.ms/vsPublishProfile).",
+ "loc.input.label.ConnectedServiceName": "Suscripción a Azure",
+ "loc.input.help.ConnectedServiceName": "Seleccione la suscripción de Azure Resource Manager para la implementación.",
+ "loc.input.label.PublishProfilePath": "Ruta de acceso del perfil de publicación",
+ "loc.input.help.PublishProfilePath": "Ruta de acceso del perfil de publicación creado desde Visual Studio",
+ "loc.input.label.PublishProfilePassword": "Contraseña del perfil de publicación",
+ "loc.input.help.PublishProfilePassword": "Se recomienda almacenar la contraseña en una variable secreta y utilizar esa variable aquí; por ejemplo, $(Password).",
+ "loc.input.label.WebAppKind": "Tipo de App Service",
+ "loc.input.help.WebAppKind": "Elija entre Web App On Windows, Web App On Linux, Web App for Containers, Function App, Function App on Linux, Function App for Containers y Mobile App.",
+ "loc.input.label.WebAppName": "Nombre de App Service",
+ "loc.input.help.WebAppName": "Escriba o seleccione el nombre de una instancia existente de Azure App Service. Solo se enumerarán las instancias de App Service basadas en el tipo de aplicación seleccionado.",
+ "loc.input.label.DeployToSlotOrASEFlag": "Implementar en la ranura o en App Service Environment",
+ "loc.input.help.DeployToSlotOrASEFlag": "Seleccione la opción para implementar en una ranura de implementación o entorno de Azure App Service Environment existente. Para ambos destinos, la tarea necesita el nombre del grupo de recursos. En caso de que el destino de implementación sea una ranura, la implementación se realiza de forma predeterminada en la ranura de producción. También se puede proporcionar cualquier otro nombre de ranura existente. En caso de que el destino de implementación sea un entorno de Azure App Service Environment, deje el nombre de la ranura como \"Producción\" y especifique el nombre del grupo de recursos.",
+ "loc.input.label.ResourceGroupName": "Grupo de recursos",
+ "loc.input.help.ResourceGroupName": "El nombre del grupo de recursos es necesario cuando el destino de implementación es una ranura de implementación o una instancia de App Service Environment. Escriba o seleccione el grupo de recursos de Azure que contiene el servicio de Azure App Service especificado anteriormente.",
+ "loc.input.label.SlotName": "Ranura",
+ "loc.input.help.SlotName": "Escriba o seleccione un espacio que no sea el de producción.",
+ "loc.input.label.DockerNamespace": "Registro o espacio de nombres",
+ "loc.input.help.DockerNamespace": "Nombre de dominio de nivel superior único global para su espacio de nombres o Registro específico. Nota: El nombre de imagen completo tiene el formato: \"/:\". Por ejemplo, \"miRegistro.azurecr.io/nginx:última\".",
+ "loc.input.label.DockerRepository": "Imagen",
+ "loc.input.help.DockerRepository": "Nombre del repositorio en el que se almacenan las imágenes del contenedor. Nota: Un nombre de imagen completo tiene el formato: \"/:\". Por ejemplo, \"miRegistro.azurecr.io/nginx:última\".",
+ "loc.input.label.DockerImageTag": "Etiqueta",
+ "loc.input.help.DockerImageTag": "Las etiquetas son opcionales. Este es el mecanismo que los registros usan para asignar una versión a las imágenes de Docker. Nota: El nombre de imagen completo tiene el formato: \"'`/`:`\". Por ejemplo, \"myregistry.azurecr.io/nginx:latest\".",
+ "loc.input.label.VirtualApplication": "Aplicación virtual",
+ "loc.input.help.VirtualApplication": "Especifique el nombre de la aplicación virtual que se ha configurado en Azure Portal. Esta opción no es necesaria para implementaciones en la raíz de App Service.",
+ "loc.input.label.Package": "Paquete o carpeta",
+ "loc.input.help.Package": "Ruta de acceso al paquete o carpeta que contiene el contenido de App Service generado por MSBuild o un archivo zip o war comprimido. Variables ( [Build](https://docs.microsoft.com/vsts/pipelines/build/variables) | [Release](https://docs.microsoft.com/vsts/pipelines/release/variables#default-variables)), se admiten caracteres comodín. Por ejemplo, $(System.DefaultWorkingDirectory)/\\*\\*/\\*.zip o $(System.DefaultWorkingDirectory)/\\*\\*/\\*.war.",
+ "loc.input.label.RuntimeStack": "Pila en tiempo de ejecución",
+ "loc.input.help.RuntimeStack": "Seleccione el marco y la versión.",
+ "loc.input.label.RuntimeStackFunction": "Pila en tiempo de ejecución",
+ "loc.input.help.RuntimeStackFunction": "Seleccione el marco y la versión. Consulte [este documento](https://docs.microsoft.com/azure/azure-functions/functions-versions#languages) para ver las versiones compatibles del entorno de ejecución. Los valores anteriores, como \"DOCKER|microsoft/azure-functions-*\", están en desuso; use los valores nuevos de la lista desplegable.",
+ "loc.input.label.StartupCommand": "Comando de inicio ",
+ "loc.input.help.StartupCommand": "Escriba el comando de inicio. Por ejemplo, dotnet exec filename.dll dotnet filename.dll",
+ "loc.input.label.ScriptType": "Tipo de script de implementación",
+ "loc.input.help.ScriptType": "Para personalizar la implementación, proporcione un script que se ejecute en Azure App Service una vez que la tarea haya completado la implementación correctamente. Por ejemplo, restaure paquetes para aplicaciones de Node, PHP y Python. [Más información](https://go.microsoft.com/fwlink/?linkid=843471).",
+ "loc.input.label.InlineScript": "Script en línea",
+ "loc.input.label.ScriptPath": "Ruta de acceso del script de implementación",
+ "loc.input.label.WebConfigParameters": "Generar parámetros de web.config para aplicaciones de Python, Node.js, Go y Java",
+ "loc.input.help.WebConfigParameters": "Se generará un archivo web.config estándar y se implementará en Azure App Service si la aplicación no tiene uno. Los valores de web.config se pueden editar y pueden variar en función del marco de trabajo de la aplicación. Por ejemplo, para la aplicación node.js, web.config tendrá los valores de archivo de inicio y del módulo iis_node. La característica de edición es solo para el web.config generado. [Más información](https://go.microsoft.com/fwlink/?linkid=843469).",
+ "loc.input.label.AppSettings": "Configuración de la aplicación",
+ "loc.input.help.AppSettings": "Edite la configuración de la aplicación web siguiendo la sintaxis -clave valor. Si un valor contiene espacios, debe ponerlo entre comillas dobles. Ejemplo: -Port 5000 -RequestTimeout 5000 -WEBSITE_TIME_ZONE \"Eastern Standard Time\"",
+ "loc.input.label.ConfigurationSettings": "Opciones de configuración",
+ "loc.input.help.ConfigurationSettings": "Edite opciones de configuración de aplicación web la sintaxis-valor de clave. Valor que contenga espacios debe incluirse entre comillas dobles. Ejemplo: - phpVersion 5.6 - linuxFxVersion: nodo|6.11",
+ "loc.input.label.UseWebDeploy": "Seleccionar el método de implementación",
+ "loc.input.help.UseWebDeploy": "Si está desactivado, se detectará automáticamente el mejor método de implementación en función de su tipo de aplicación, el formato del paquete y otros parámetros. Seleccione la opción para ver los métodos de implementación compatibles y elija uno para implementar su aplicación.",
+ "loc.input.label.DeploymentType": "Método de implementación",
+ "loc.input.help.DeploymentType": "Elija el método de implementación para la aplicación.",
+ "loc.input.label.TakeAppOfflineFlag": "Desconectar la aplicación",
+ "loc.input.help.TakeAppOfflineFlag": "Seleccione esta opción para poner sin conexión Azure App Service colocando el archivo app_offline.htm en el directorio raíz de App Service antes de que comience la operación de sincronización. El archivo se quitará cuando la operación de sincronización finalice correctamente.",
+ "loc.input.label.SetParametersFile": "Archivo SetParameters",
+ "loc.input.help.SetParametersFile": "Opcional: ubicación del archivo SetParameters.xml que debe usarse.",
+ "loc.input.label.RemoveAdditionalFilesFlag": "Quitar archivos adicionales en el destino",
+ "loc.input.help.RemoveAdditionalFilesFlag": "Seleccione la opción para eliminar archivos en la instancia de Azure App Service que no tiene archivos coincidentes en la carpeta o el paquete de App Service.
Nota: Al hacerlo, también se quitarán todos los archivos relacionados con cualquier extensión instalada en esta instancia de Azure App Service. Para evitarlo, seleccione la casilla \"Excluir archivos de la carpeta App_Data\". ",
+ "loc.input.label.ExcludeFilesFromAppDataFlag": "Excluir archivos de la carpeta App_Data",
+ "loc.input.help.ExcludeFilesFromAppDataFlag": "Seleccione esta opción para evitar que los archivos de la carpeta App_Data se implementen en Azure App Service o se eliminen de ese servicio.",
+ "loc.input.label.AdditionalArguments": "Argumentos adicionales",
+ "loc.input.help.AdditionalArguments": "Argumentos adicionales de Web Deploy que siguen la sintaxis -clave:valor. Se aplicarán cuando se implemente la instancia de Azure App Service. Ejemplo: -disableLink:AppPoolExtension -disableLink:ContentExtension. Para más ejemplos de configuración de la operación de Web Deploy, consulte [aquí] (https://go.microsoft.com/fwlink/?linkid=838471).",
+ "loc.input.label.RenameFilesFlag": "Cambiar nombre de archivos bloqueados",
+ "loc.input.help.RenameFilesFlag": "Seleccione la opción para habilitar la marca de msdeploy MSDEPLOY_RENAME_LOCKED_FILES=1 en la configuración de la aplicación de Azure App Service. Si está establecida, la opción permite que msdeploy cambie el nombre de los archivos bloqueados que se bloquean durante la implementación de la aplicación",
+ "loc.input.label.XmlTransformation": "Transformación XML",
+ "loc.input.help.XmlTransformation": "Las transformaciones de configuración se ejecutarán para \"*.Release.config\" y \"*..config\" en el \"archivo *.config\". Las transformaciones de configuración se ejecutarán antes de la sustitución de variables. Las transformaciones XML solo se admiten para la plataforma Windows.",
+ "loc.input.label.XmlVariableSubstitution": "Sustitución de variables XML",
+ "loc.input.help.XmlVariableSubstitution": "Las variables que se definen en las canalizaciones de compilación o de versión se compararán con las entradas \"key\" o \"name\" de las secciones appSettings, applicationSettings y connectionStrings de cualquier archivo de configuración y parameters.xml. La sustitución de variable tiene lugar después de las transformaciones de configuración.
Nota: Si las mismas variables están definidas en la canalización de versión y en el entorno, las variables de entorno sustituirán las variables de la canalización de versión. ",
+ "loc.input.label.JSONFiles": "Sustitución de variables JSON",
+ "loc.input.help.JSONFiles": "Proporcione una nueva lista separada por líneas de los archivos JSON para sustituir los valores de variable. Los nombres de archivos que se proporcionen deben ser relativos a la carpeta raíz. Para sustituir las variables JSON anidadas o jerárquicas, especifíquelas mediante expresiones JSONPath.
Por ejemplo, para reemplazar el valor de \"ConnectionString\" en el ejemplo siguiente, debe definir una variable como \"Data.DefaultConnection.ConnectionString\" en la canalización de compilación o versión (o el entorno de la canalización de versión). { \"Data\": { \"DefaultConnection\": { \"ConnectionString\": \"Server=(localdb)\\SQLEXPRESS;Database=MyDB;Trusted_Connection=True\" } } } La sustitución de variables se ejecuta una vez que se transforma la configuración.
Nota: Las variables de la canalización se excluyen de la sustitución.",
+ "loc.messages.Invalidwebapppackageorfolderpathprovided": "Paquete App Service o ruta de acceso de carpeta proporcionados no válidos: %s",
+ "loc.messages.SetParamFilenotfound0": "No se ha encontrado el archivo de parámetros establecido: %s",
+ "loc.messages.XDTTransformationsappliedsuccessfully": "Las transformaciones XML se aplicaron correctamente",
+ "loc.messages.GotconnectiondetailsforazureRMWebApp0": "Se obtuvieron detalles de conexión de servicio para Azure App Service: \"%s\"",
+ "loc.messages.ErrorNoSuchDeployingMethodExists": "Error : No existe tal método de implementación",
+ "loc.messages.UnabletoretrieveconnectiondetailsforazureRMWebApp": "No se pueden recuperar los detalles de la conexión de servicio para Azure App Service: %s. Código de estado: %s (%s)",
+ "loc.messages.UnabletoretrieveResourceID": "No se pueden recuperar los detalles de la conexión de servicio para el recurso de Azure \"%s\". Código de estado: %s",
+ "loc.messages.Successfullyupdateddeploymenthistory": "El historial de implementación se actualizó correctamente en %s",
+ "loc.messages.Failedtoupdatedeploymenthistory": "No se pudo actualizar el historial de implementación. Error: %s",
+ "loc.messages.WARNINGCannotupdatedeploymentstatusSCMendpointisnotenabledforthiswebsite": "ADVERTENCIA : no se puede actualizar el estado de implementación, el punto de conexión de SCM no está habilitado para este sitio web",
+ "loc.messages.Unabletoretrievewebconfigdetails": "No se pueden recuperar los detalles de configuración de la instancia de App Service. Código de estado: \"%s\"",
+ "loc.messages.Unabletoretrievewebappsettings": "No se puede recuperar la configuración de aplicación de App Service. [Código de estado: \"%s\", Mensaje de error: \"%s\"]",
+ "loc.messages.Unabletoupdatewebappsettings": "No se puede actualizar la configuración de aplicación de la instancia de App Service. Código de estado: '%s'",
+ "loc.messages.CannotupdatedeploymentstatusuniquedeploymentIdCannotBeRetrieved": "No se puede actualizar el estado de implementación : no se puede recuperar el id. de implementación único",
+ "loc.messages.PackageDeploymentSuccess": "El paquete web se implementó correctamente en App Service.",
+ "loc.messages.PackageDeploymentFailed": "No se pudo implementar el paquete web en App Service.",
+ "loc.messages.Runningcommand": "Ejecutando el comando: %s",
+ "loc.messages.Deployingwebapplicationatvirtualpathandphysicalpath": "Implementando el paquete web : %s en una ruta de acceso virtual (ruta de acceso física): %s (%s)",
+ "loc.messages.Successfullydeployedpackageusingkuduserviceat": "El paquete %s se implementó correctamente mediante el servicio Kudu en %s",
+ "loc.messages.Failedtodeploywebapppackageusingkuduservice": "No se pudo implementar el paquete App Service mediante el servicio Kudu : %s",
+ "loc.messages.Unabletodeploywebappresponsecode": "No se puede implementar App Service debido al código de error: %s",
+ "loc.messages.MSDeploygeneratedpackageareonlysupportedforWindowsplatform": "Los paquetes generados por MSDeploy solo se admiten para la plataforma Windows.",
+ "loc.messages.UnsupportedinstalledversionfoundforMSDeployversionshouldbeatleast3orabove": "Versión instalada no admitida: se encontró %s para MSDeploy, pero la versión mínima admitida es 3 o posterior.",
+ "loc.messages.UnabletofindthelocationofMSDeployfromregistryonmachineError": "No se puede encontrar la ubicación de MS Deploy del Registro en la máquina (Error : %s)",
+ "loc.messages.Nopackagefoundwithspecifiedpattern": "No se encontró ningún paquete con el patrón especificado: %s Compruebe si el paquete mencionado en la tarea se publica como artefacto en la compilación o en una fase anterior y se descarga en el trabajo actual.",
+ "loc.messages.MorethanonepackagematchedwithspecifiedpatternPleaserestrainthesearchpattern": "Más de un paquete coincidió con el patrón especificado: %s. Restrinja el patrón de búsqueda.",
+ "loc.messages.Trytodeploywebappagainwithappofflineoptionselected": "Intente volver a implementar el servicio de la aplicación con la opción Poner la aplicación sin conexión seleccionada.",
+ "loc.messages.Trytodeploywebappagainwithrenamefileoptionselected": "Intente volver a implementar el servicio de la aplicación con la opción Cambiar de nombre archivos bloqueados seleccionada.",
+ "loc.messages.NOJSONfilematchedwithspecificpattern": "Ningún archivo JSON coincidía con un patrón específico: %s.",
+ "loc.messages.Configfiledoesntexists": "El archivo de configuración %s no existe.",
+ "loc.messages.Failedtowritetoconfigfilewitherror": "No se pudo escribir en el archivo de configuración %s con el error: %s",
+ "loc.messages.AppOfflineModeenabled": "Modo de aplicación sin conexión habilitado.",
+ "loc.messages.Failedtoenableappofflinemode": "No se pudo habilitar el modo de aplicación sin conexión. Código de estado: %s (%s)",
+ "loc.messages.AppOflineModedisabled": "Modo de aplicación sin conexión deshabilitado.",
+ "loc.messages.FailedtodisableAppOfflineMode": "No se pudo deshabilitar el modo de aplicación sin conexión. Código de estado: %s (%s)",
+ "loc.messages.CannotPerformXdtTransformationOnNonWindowsPlatform": "No se pueden realizar las transformaciones XML en una plataforma que no es Windows.",
+ "loc.messages.XdtTransformationErrorWhileTransforming": "Error de transformación XML al transformar %s mediante %s.",
+ "loc.messages.PublishusingwebdeployoptionsaresupportedonlywhenusingWindowsagent": "Las opciones de publicación mediante webdeploy solo se admiten cuando se usa el agente de Windows",
+ "loc.messages.Publishusingzipdeploynotsupportedformsbuildpackage": "La publicación mediante la opción de implementación desde un archivo zip no se admite para el tipo de paquete de MSBuild.",
+ "loc.messages.Publishusingzipdeploynotsupportedforvirtualapplication": "La publicación mediante la opción de implementación desde un archivo zip no se admite para una aplicación virtual.",
+ "loc.messages.Publishusingzipdeploydoesnotsupportwarfile": "La publicación mediante las opciones de RunFromZip o de implementación desde un archivo zip no admiten la implementación de archivos war.",
+ "loc.messages.Publishusingrunfromzipwithpostdeploymentscript": "La publicación mediante RunFromZip podría no admitir el script posterior a la implementación si realiza cambios en wwwroot, puesto que la carpeta es de solo lectura.",
+ "loc.messages.ResourceDoesntExist": "El recurso \"%s\" no existe. Este debe existir antes de la implementación.",
+ "loc.messages.EncodeNotSupported": "Se detectó una codificación de archivos del archivo %s como %s. No se admite la sustitución de variables con la codificación de archivos %s. Las codificaciones admitidas son UTF-8 y UTF-16 LE.",
+ "loc.messages.UnknownFileEncodeError": "No se puede detectar la codificación del archivo %s (typeCode: %s). Las codificaciones admitidas son UTF-8 y UTF-16 LE.",
+ "loc.messages.ShortFileBufferError": "El búfer de archivos es demasiado breve para detectar el tipo de codificación : %s",
+ "loc.messages.FailedToUpdateAzureRMWebAppConfigDetails": "No se pudieron actualizar los detalles de configuración de App Service. Error: %s",
+ "loc.messages.SuccessfullyUpdatedAzureRMWebAppConfigDetails": "Los detalles de configuración de App Service se actualizaron correctamente",
+ "loc.messages.RequestedURLforkuduphysicalpath": "Dirección URL solicitada para la ruta de acceso física a Kudu: %s",
+ "loc.messages.Physicalpathalreadyexists": "La ruta de acceso física \"%s\" ya existe",
+ "loc.messages.KuduPhysicalpathCreatedSuccessfully": "La ruta de acceso física a Kudu se creó correctamente: %s",
+ "loc.messages.FailedtocreateKuduPhysicalPath": "No se pudo crear la ruta de acceso física de Kudu. Error: %s",
+ "loc.messages.FailedtocheckphysicalPath": "No se pudo comprobar la ruta de acceso física de Kudu. Código de error: %s",
+ "loc.messages.VirtualApplicationDoesNotExist": "La aplicación virtual no existe: %s",
+ "loc.messages.JSONParseError": "No se puede analizar el archivo JSON: %s. Error: %s",
+ "loc.messages.JSONvariablesubstitutionappliedsuccessfully": "La sustitución de variable JSON se aplicó correctamente.",
+ "loc.messages.XMLvariablesubstitutionappliedsuccessfully": "Sustitución de variables XML aplicada correctamente.",
+ "loc.messages.failedtoUploadFileToKudu": "No se puede cargar el archivo %s en Kudu (%s). Código de estado: %s",
+ "loc.messages.failedtoUploadFileToKuduError": "No se puede cargar el archivo %s en Kudu (%s). Error: %s",
+ "loc.messages.ExecuteScriptOnKudu": "Ejecutando el script dado en el servicio Kudu.",
+ "loc.messages.FailedToRunScriptOnKuduError": "No se puede ejecutar el script en el servicio Kudu. Error: %s",
+ "loc.messages.FailedToRunScriptOnKudu": "No se puede ejecutar el script en Kudu: %s. Código de estado: %s",
+ "loc.messages.ScriptExecutionOnKuduSuccess": "El script se ejecutó correctamente en Kudu.",
+ "loc.messages.ScriptExecutionOnKuduFailed": "El script ejecutado devolvió \"%s\" como código de retorno. Error: %s",
+ "loc.messages.FailedtoDeleteFileFromKudu": "No se puede eliminar el archivo %s de Kudu (%s). Código de estado: %s",
+ "loc.messages.FailedtoDeleteFileFromKuduError": "No se puede eliminar el archivo %s de Kudu (%s). Error: %s",
+ "loc.messages.ScriptFileNotFound": "No se encuentra el archivo de script \"%s\".",
+ "loc.messages.InvalidScriptFile": "Se proporcionó un archivo de script \"%s\" no válido. Las extensiones válidas son .bat y .cmd para Windows y .sh para Linux.",
+ "loc.messages.RetryForTimeoutIssue": "No se pudo ejecutar el script porque se agotó el tiempo de espera. Se reintentará una vez más.",
+ "loc.messages.stdoutFromScript": "Salida estándar del script: ",
+ "loc.messages.stderrFromScript": "Error estándar del script: ",
+ "loc.messages.WebConfigAlreadyExists": "El archivo web.config ya existe. No se va a generar.",
+ "loc.messages.SuccessfullyGeneratedWebConfig": "El archivo web.config se generó correctamente",
+ "loc.messages.FailedToGenerateWebConfig": "No se pudo generar el archivo web.config. %s",
+ "loc.messages.FailedToGetKuduFileContent": "No se puede obtener el contenido del archivo: %s. Código de estado: %s (%s)",
+ "loc.messages.FailedToGetKuduFileContentError": "No se puede obtener el contenido del archivo: %s. Error: %s",
+ "loc.messages.ScriptStatusTimeout": "No se pudo recuperar el estado del script porque se agotó el tiempo de espera.",
+ "loc.messages.PollingForFileTimeOut": "No se puede recuperar el estado del script porque se agotó el tiempo de espera. Puede aumentar el tiempo de espera estableciendo la variable \"appservicedeploy.retrytimeout\" en el número de minutos que sea necesario.",
+ "loc.messages.InvalidPollOption": "Se ha proporcionado una opción de sondeo no válida: %s.",
+ "loc.messages.MissingAppTypeWebConfigParameters": "El atributo \"-appType\" falta en los parámetros de Web.config. Los valores válidos para \"-appType\" son: \"python_Bottle\", \"python_Django\", \"python_Flask\", \"node\" y \"Go\". Por ejemplo, \"-appType python_Bottle\" (sin comillas) en el caso de la plataforma Python Bottle.",
+ "loc.messages.AutoDetectDjangoSettingsFailed": "No se puede detectar la ruta de acceso del archivo \"settings.py\" de DJANGO_SETTINGS_MODULE. Asegúrese de que el archivo \"settings.py\" existe o indique la ruta de acceso correcta en la entrada del parámetro de Web.config siguiendo este formato: \"-DJANGO_SETTINGS_MODULE .settings\"",
+ "loc.messages.FailedToApplyTransformation": "No se puede aplicar la transformación para el paquete dado. Compruebe lo siguiente.",
+ "loc.messages.FailedToApplyTransformationReason1": "1. Si la transformación ya se ha aplicado para el paquete generado por MSBuild durante la compilación. Si es así, quite la etiqueta para cada configuración del archivo csproj y compile de nuevo. ",
+ "loc.messages.FailedToApplyTransformationReason2": "2. Asegúrese de que el archivo de configuración y los archivos de transformación están presentes en la misma carpeta dentro del paquete.",
+ "loc.messages.AutoParameterizationMessage": "Los atributos de ConnectionString en Web.config están parametrizados de manera predeterminada. Tenga en cuenta que la transformación no tiene efecto en los atributos connectionString porque el valor se invalida durante la implementación por los archivos \"Parameters.xml\" o \"SetParameters.xml\". Puede deshabilitar la parametrización automática estableciendo /p:AutoParameterizationWebConfigConnectionStrings=False durante la generación del paquete MSBuild.",
+ "loc.messages.UnsupportedAppType": "El tipo de aplicación \"'%s\" no se admite en la generación de Web.config. Los valores válidos para \"-appType\" son: \"python_Bottle\", \"python_Django\", \"python_Flask\" y \"'node\"",
+ "loc.messages.UnableToFetchAuthorityURL": "No se puede recuperar la dirección URL de la autoridad.",
+ "loc.messages.UnableToFetchActiveDirectory": "No se puede recuperar el id. de recurso de Active Directory.",
+ "loc.messages.SuccessfullyUpdatedRuntimeStackAndStartupCommand": "La pila en tiempo de ejecución y el comando de inicio se actualizaron correctamente.",
+ "loc.messages.FailedToUpdateRuntimeStackAndStartupCommand": "No se pudieron actualizar la pila en tiempo de ejecución y el comando de inicio. Error: %s.",
+ "loc.messages.SuccessfullyUpdatedWebAppSettings": "La configuración de la aplicación se actualizó correctamente.",
+ "loc.messages.FailedToUpdateAppSettingsInConfigDetails": "No se pudo actualizar la configuración de la aplicación. Error: %s.",
+ "loc.messages.UnableToGetAzureRMWebAppMetadata": "No se pudieron capturar los metadatos de WebApp de AzureRM. Código de error: %s",
+ "loc.messages.UnableToUpdateAzureRMWebAppMetadata": "No se pueden actualizar los metadatos de WebApp de AzureRM. Código de error: %s",
+ "loc.messages.Unabletoretrieveazureregistrycredentials": "No se pueden recuperar las credenciales de Azure Container Registry. [Código de estado: \"%s\"]",
+ "loc.messages.UnableToReadResponseBody": "No se puede leer el cuerpo de la respuesta. Error: %s",
+ "loc.messages.UnableToUpdateWebAppConfigDetails": "No se pueden actualizar los detalles de la configuración de WebApp. Código de estado: \"%s\"",
+ "loc.messages.AddingReleaseAnnotation": "Agregar anotación de versión para el recurso de Application Insights \"%s\".",
+ "loc.messages.SuccessfullyAddedReleaseAnnotation": "La anotación de versión se agregó correctamente a la instancia de Application Insights: %s",
+ "loc.messages.FailedAddingReleaseAnnotation": "No se pudo agregar la anotación de versión. %s",
+ "loc.messages.RenameLockedFilesEnabled": "La opción Cambiar nombre de archivos bloqueados está habilitada para la instancia de App Service.",
+ "loc.messages.FailedToEnableRenameLockedFiles": "No se pudo habilitar el cambio de nombre de los archivos bloqueados. Error: %s",
+ "loc.messages.WebJobsInProgressIssue": "Algunos WebJobs en estado de ejecución impiden que la implementación elimine los archivos. Puede deshabilitar la opción \"Quitar archivos adicionales en el destino\" o detener los trabajos continuos antes de la implementación.",
+ "loc.messages.FailedToFetchKuduAppSettings": "No se pudo capturar la configuración de la aplicación de Kudu. Error: %s",
+ "loc.messages.FailedToCreatePath": "No se pudo crear la ruta de acceso \"%s\" de Kudu. Error: %s",
+ "loc.messages.FailedToDeleteFile": "No se pudo eliminar el archivo \"%s/%s\" de Kudu. Error: %s",
+ "loc.messages.FailedToDeleteFolder": "No se pudo eliminar la carpeta \"%s\" de Kudu. Error: %s",
+ "loc.messages.FailedToUploadFile": "No se pudo cargar el archivo \"%s/%s\" de Kudu. Error: %s",
+ "loc.messages.FailedToGetFileContent": "No se pudo obtener el contenido del archivo \"%s/%s\" de Kudu. Error: %s",
+ "loc.messages.FailedToListPath": "No se pudo enumerar la ruta de acceso \"%s\" de Kudu. Error: %s",
+ "loc.messages.RetryToDeploy": "Reintentando la implementación del paquete.",
+ "loc.messages.FailedToGetAppServiceDetails": "No se pudieron capturar los detalles de la instancia de App Service \"%s\". Error: %s",
+ "loc.messages.FailedToGetAppServicePublishingProfile": "No se pudo capturar el perfil de publicación de la instancia de App Service \"%s\". Error: %s",
+ "loc.messages.FailedToUpdateAppServiceMetadata": "No se pudieron actualizar los metadatos de la instancia de App Service \"%s\". Error: %s",
+ "loc.messages.FailedToGetAppServiceMetadata": "No se pudieron obtener los metadatos de la instancia de App Service \"%s\". Error: %s",
+ "loc.messages.FailedToPatchAppServiceConfiguration": "No se pudo aplicar una revisión a la configuración de la instancia de App Service \"%s\". Error: %s",
+ "loc.messages.FailedToUpdateAppServiceConfiguration": "No se pudo actualizar la configuración de la instancia de App Service \"%s\". Error: %s",
+ "loc.messages.FailedToGetAppServiceConfiguration": "No se pudo obtener la configuración de la instancia de App Service \"%s\". Error: %s",
+ "loc.messages.FailedToGetAppServicePublishingCredentials": "No se pudieron capturar las credenciales de publicación de la instancia de App Service \"%s\". Error: %s",
+ "loc.messages.FailedToGetAppServiceApplicationSettings": "No se pudo obtener la configuración de aplicación de la instancia de App Service \"%s\". Error: %s",
+ "loc.messages.FailedToUpdateAppServiceApplicationSettings": "No se pudo actualizar la configuración de aplicación de la instancia de App Service \"%s\". Error: %s",
+ "loc.messages.UpdatingAppServiceConfigurationSettings": "Intentando actualizar los valores de configuración de la instancia de App Service. Datos: %s",
+ "loc.messages.UpdatedAppServiceConfigurationSettings": "Se han actualizado los valores de configuración de App Service.",
+ "loc.messages.UpdatingAppServiceApplicationSettings": "Intentando actualizar la configuración de aplicación de App Service. Datos: %s",
+ "loc.messages.AppServiceApplicationSettingsAlreadyPresent": "La configuración de aplicación de App Service ya está presente.",
+ "loc.messages.AppServiceConnectionStringsAlreadyPresent": "Las cadenas de conexión de App Service ya están presentes.",
+ "loc.messages.UpdatedAppServiceApplicationSettings": "Se han actualizado la configuración de aplicación de App Service y la configuración de aplicación de Kudu.",
+ "loc.messages.MultipleResourceGroupFoundForAppService": "Se encontraron varios grupos de recursos para la instancia de App Service \"%s\".",
+ "loc.messages.PackageDeploymentUsingZipDeployFailed": "Error al implementar el paquete mediante la implementación de ZIP. Consulte los registros para obtener más detalles.",
+ "loc.messages.PackageDeploymentInitiated": "Se ha iniciado la implementación del paquete mediante la implementación desde un archivo ZIP.",
+ "loc.messages.WarPackageDeploymentInitiated": "Se ha iniciado la implementación del paquete mediante la implementación desde un archivo WAR.",
+ "loc.messages.FailedToGetDeploymentLogs": "No se pudieron obtener los registros de implementación. Error: %s",
+ "loc.messages.GoExeNameNotPresent": "Falta el nombre del archivo ejecutable de Go",
+ "loc.messages.WarDeploymentRetry": "Reintentando la implementación del archivo war, ya que no se expandió correctamente.",
+ "loc.messages.Updatemachinetoenablesecuretlsprotocol": "Asegúrese de que el equipo usa el protocolo TLS 1.2 o posterior. Consulte https://aka.ms/enableTlsv2 para obtener más información sobre cómo habilitar TLS en la máquina.",
+ "loc.messages.CouldNotFetchAccessTokenforAzureStatusCode": "No se pudo capturar el token de acceso para Azure. Código de estado: %s. Mensaje de estado: %s",
+ "loc.messages.CouldNotFetchAccessTokenforMSIDueToMSINotConfiguredProperlyStatusCode": "No se pudo capturar el token de acceso para la entidad de servicio administrada. Configure Managed Service Identity (MSI) para la máquina virtual \"https://aka.ms/azure-msi-docs\". Código de estado: %s. Mensaje de estado: %s",
+ "loc.messages.CouldNotFetchAccessTokenforMSIStatusCode": "No se pudo capturar el token de acceso para la entidad de servicio administrada. Código de estado: %s. Mensaje de estado: %s",
+ "loc.messages.XmlParsingFailed": "No se puede analizar el archivo publishProfileXML: %s. Error: %s",
+ "loc.messages.PropertyDoesntExistPublishProfile": "[%s] La propiedad no existe en el perfil de publicación",
+ "loc.messages.InvalidConnectionType": "Tipo de conexión de servicio no válido",
+ "loc.messages.InvalidImageSourceType": "Tipo de origen de imagen no válido",
+ "loc.messages.InvalidPublishProfile": "El archivo del perfil de publicación no es válido.",
+ "loc.messages.ASE_SSLIssueRecommendation": "Para usar un certificado en App Service, debe haberlo firmado una entidad de certificación de confianza. Si la aplicación web genera errores de validación del certificado, es posible que esté usando un certificado autofirmado. Para resolverlo, debe establecer una variable denominada VSTS_ARM_REST_IGNORE_SSL_ERRORS como true en la canalización de compilación o de versión",
+ "loc.messages.ZipDeployLogsURL": "Los registros de implementación desde un archivo zip pueden verse en %s",
+ "loc.messages.DeployLogsURL": "Los registros de implementación pueden verse en %s",
+ "loc.messages.AppServiceApplicationURL": "Dirección URL de la aplicación de App Service: %s",
+ "loc.messages.ASE_WebDeploySSLIssueRecommendation": "Para usar un certificado en App Service, debe haberlo firmado una entidad de certificación de confianza. Si la aplicación web genera errores de validación del certificado, es posible que esté usando un certificado autofirmado. Para resolverlo, debe pasar -allowUntrusted en argumentos adicionales de la opción de implementación web.",
+ "loc.messages.FailedToGetResourceID": "No se pudo obtener el identificador del tipo de recurso \"%s\" y el nombre de recurso \"%s\". Error: %s",
+ "loc.messages.JarPathNotPresent": "La ruta de acceso de jar de Java no está presente.",
+ "loc.messages.FailedToUpdateApplicationInsightsResource": "No se pudo actualizar el recurso de Application Insights \"%s\". Error: %s",
+ "loc.messages.RunFromZipPreventsFileInUseError": "Cambie de Web Deploy a la ejecución desde el paquete, que ayuda a evitar el error FILE_IN_USE. Tenga en cuenta que la ejecución desde el paquete no admite el tipo de paquete msBuild. Cambie el formato del paquete para usar este método de implementación."
+}
\ No newline at end of file
diff --git a/_generated/AzureRmWebAppDeploymentV4/Strings/resources.resjson/fr-FR/resources.resjson b/_generated/AzureRmWebAppDeploymentV4/Strings/resources.resjson/fr-FR/resources.resjson
new file mode 100644
index 000000000000..735e9149ed5b
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/Strings/resources.resjson/fr-FR/resources.resjson
@@ -0,0 +1,229 @@
+{
+ "loc.friendlyName": "Déploiement Azure App Service",
+ "loc.helpMarkDown": "[En savoir plus sur cette tâche](https://aka.ms/azurermwebdeployreadme)",
+ "loc.description": "Déployer sur Azure App Service une application web, mobile ou API via Docker, Java, .NET, .NET Core, Node.js, PHP, Python ou Ruby",
+ "loc.instanceNameFormat": "Déploiement d'Azure App Service : $(WebAppName)",
+ "loc.releaseNotes": "Nouveautés de la version 4.* Prend en charge Zip Deploy, l'exécution à partir d'un package, War Deploy [Détails ici](https://aka.ms/appServiceDeploymentMethods) Prend en charge les environnements App Service Amélioration de l'IU pour la découverte des différents types d'App Service pris en charge par la tâche L'exécution à partir d'un package est la méthode de déploiement recommandée. Elle permet de rendre les fichiers du dossier wwwroot accessibles en lecture seule Cliquez [ici](https://aka.ms/azurermwebdeployreadme) pour plus d'informations.",
+ "loc.group.displayName.FileTransformsAndVariableSubstitution": "Transformations de fichiers et options de substitution de variable",
+ "loc.group.displayName.AdditionalDeploymentOptions": "Options de déploiement supplémentaires",
+ "loc.group.displayName.PostDeploymentAction": "Action de postdéploiement",
+ "loc.group.displayName.ApplicationAndConfigurationSettings": "Paramètres d'application et de configuration",
+ "loc.input.label.ConnectionType": "Type de connexion",
+ "loc.input.help.ConnectionType": "Sélectionnez le type de connexion de service à utiliser pour déployer l'application web. Sélectionnez Publier le profil pour utiliser le profil de publication créé par Visual Studio. [Plus d'informations](https://aka.ms/vsPublishProfile).",
+ "loc.input.label.ConnectedServiceName": "Abonnement Azure",
+ "loc.input.help.ConnectedServiceName": "Sélectionnez l'abonnement Azure Resource Manager pour le déploiement.",
+ "loc.input.label.PublishProfilePath": "Chemin du profil de publication",
+ "loc.input.help.PublishProfilePath": "Chemin du profil de publication créé à partir de Visual Studio",
+ "loc.input.label.PublishProfilePassword": "Mot de passe du profil de publication",
+ "loc.input.help.PublishProfilePassword": "Il est recommandé de stocker le mot de passe dans une variable secrète et d'utiliser cette variable ici, par exemple $(Password).",
+ "loc.input.label.WebAppKind": "Type d'App Service",
+ "loc.input.help.WebAppKind": "Choisissez parmi Web App sur Windows, Web App sur Linux, Web App pour conteneurs, Application de fonction, Application de fonction sur Linux, Application de fonction pour conteneurs et Mobile App.",
+ "loc.input.label.WebAppName": "Nom de l'App Service",
+ "loc.input.help.WebAppName": "Entrez ou sélectionnez le nom d'un Azure App Service existant. Seuls les App Services basés sur le type d'application sélectionné sont listés.",
+ "loc.input.label.DeployToSlotOrASEFlag": "Déployer sur l'emplacement ou l'environnement App Service",
+ "loc.input.help.DeployToSlotOrASEFlag": "Sélectionnez l'option permettant d'effectuer un déploiement sur un emplacement de déploiement existant ou sur Azure App Service Environment. Pour les deux cibles, la tâche a besoin du nom du groupe de ressources. Si la cible de déploiement est un emplacement, le déploiement est effectué par défaut sur l'emplacement de production. Vous pouvez également indiquer un autre nom d'emplacement existant. Si la cible de déploiement est un environnement Azure App Service, gardez le nom d'emplacement 'production', et spécifiez simplement le nom du groupe de ressources.",
+ "loc.input.label.ResourceGroupName": "Groupe de ressources",
+ "loc.input.help.ResourceGroupName": "Le nom du groupe de ressources est obligatoire quand la cible de déploiement est un emplacement de déploiement ou un environnement App Service. Entrez ou sélectionnez le groupe de ressources Azure qui contient le service Azure App Service spécifié ci-dessus.",
+ "loc.input.label.SlotName": "Emplacement",
+ "loc.input.help.SlotName": "Entrez ou sélectionnez un emplacement existant autre que l'emplacement de production.",
+ "loc.input.label.DockerNamespace": "Registre ou espace de noms",
+ "loc.input.help.DockerNamespace": "Nom de domaine de premier niveau de type identificateur global unique pour votre registre ou espace de noms spécifique. Remarque : Le nom d'image complet est au format : '/:<étiquette>'. Exemple : 'myregistry.azurecr.io/nginx:latest'.",
+ "loc.input.label.DockerRepository": "Image",
+ "loc.input.help.DockerRepository": "Nom du dépôt où sont stockés les images conteneurs. Remarque : Le nom d'image complet est au format : '/:<étiquette>'. Exemple : 'myregistry.azurecr.io/nginx:latest'.",
+ "loc.input.label.DockerImageTag": "Étiquette",
+ "loc.input.help.DockerImageTag": "Les étiquettes sont facultatives. Il s'agit du mécanisme utilisé par les registres pour donner une version aux images Docker. Remarque : Le nom d'image complet est au format suivant : '`/`:`'. Exemple : 'myregistry.azurecr.io/nginx:latest'.",
+ "loc.input.label.VirtualApplication": "Application virtuelle",
+ "loc.input.help.VirtualApplication": "Spécifiez le nom de l'application virtuelle configurée dans le portail Azure. L'option n'est pas nécessaire pour les déploiements sur la racine App Service.",
+ "loc.input.label.Package": "Package ou dossier",
+ "loc.input.help.Package": "Chemin de fichier du package ou d'un dossier de contenu App Service généré par MSBuild, ou d'un fichier zip ou war compressé. Les variables ([Build](https://docs.microsoft.com/vsts/pipelines/build/variables) | [Mise en production](https://docs.microsoft.com/vsts/pipelines/release/variables#default-variables)) et les caractères génériques sont pris en charge. Exemple : $(System.DefaultWorkingDirectory)/\\*\\*/\\*.zip ou $(System.DefaultWorkingDirectory)/\\*\\*/\\*.war.",
+ "loc.input.label.RuntimeStack": "Pile d'exécution",
+ "loc.input.help.RuntimeStack": "Sélectionnez le framework et la version.",
+ "loc.input.label.RuntimeStackFunction": "Pile d'exécution",
+ "loc.input.help.RuntimeStackFunction": "Sélectionnez le framework et la version. Consultez [cette documentation](https://docs.microsoft.com/azure/azure-functions/functions-versions#languages) pour accéder aux versions de runtime prises en charge. Les anciennes valeurs telles que 'DOCKER|microsoft/azure-functions-*' sont dépréciées. Utilisez les nouvelles valeurs de la liste déroulante.",
+ "loc.input.label.StartupCommand": "Commande de démarrage ",
+ "loc.input.help.StartupCommand": "Entrez la commande de démarrage. Exemple : dotnet exec filename.dll dotnet filename.dll",
+ "loc.input.label.ScriptType": "Type du script de déploiement",
+ "loc.input.help.ScriptType": "Personnalisez le déploiement en fournissant un script qui s'exécute sur Azure App Service, une fois que la tâche a effectué le déploiement avec succès. Par exemple, restaurez les packages des applications Node, PHP et Python. [En savoir plus](https://go.microsoft.com/fwlink/?linkid=843471).",
+ "loc.input.label.InlineScript": "Script Inline",
+ "loc.input.label.ScriptPath": "Chemin du script de déploiement",
+ "loc.input.label.WebConfigParameters": "Générer les paramètres web.config pour les applications Python, Node.js, Go et Java",
+ "loc.input.help.WebConfigParameters": "Un fichier web.config standard va être généré et déployé sur Azure App Service, si l'application n'en a pas. Vous pouvez modifier les valeurs du fichier web.config. Celles-ci varient en fonction du framework d'application. Par exemple, pour l'application node.js, web.config a un fichier de démarrage et des valeurs de module iis_node. Cette fonctionnalité d'édition est réservée au fichier web.config généré. [En savoir plus](https://go.microsoft.com/fwlink/?linkid=843469).",
+ "loc.input.label.AppSettings": "Paramètres de l'application",
+ "loc.input.help.AppSettings": "Modifiez les paramètres d'application Web App qui suivent la valeur -key de la syntaxe. La valeur contenant des espaces doit être comprise entre des guillemets. Exemple :-Port 5000 - RequestTimeout 5000 -WEBSITE_TIME_ZONE \"Eastern Standard Time\"",
+ "loc.input.label.ConfigurationSettings": "Paramètres de configuration",
+ "loc.input.help.ConfigurationSettings": "Modifiez les paramètres de configuration Web App qui suivent la valeur -key de la syntaxe. La valeur contenant des espaces doit être comprise entre des guillemets. Exemple : - phpVersion 5.6 -linuxFXVersion : node|6.11",
+ "loc.input.label.UseWebDeploy": "Sélectionner la méthode de déploiement",
+ "loc.input.help.UseWebDeploy": "Si l'option est décochée, nous détectons automatiquement la meilleure méthode de déploiement en fonction du type de votre application, du format de votre package et d'autres paramètres. Sélectionnez l'option permettant d'afficher les méthodes de déploiement prises en charge, puis choisissez-en une pour déployer votre application.",
+ "loc.input.label.DeploymentType": "Méthode de déploiement",
+ "loc.input.help.DeploymentType": "Choisissez la méthode de déploiement de l'application.",
+ "loc.input.label.TakeAppOfflineFlag": "Mettre l'application hors connexion",
+ "loc.input.help.TakeAppOfflineFlag": "Sélectionnez cette option pour mettre Azure App Service hors connexion en plaçant un fichier app_offline.htm dans le répertoire racine de l'App Service avant le début de l'opération de synchronisation. Le fichier est supprimé une fois l'opération de synchronisation correctement effectuée.",
+ "loc.input.label.SetParametersFile": "Fichier SetParameters",
+ "loc.input.help.SetParametersFile": "Facultatif : emplacement du fichier SetParameters.xml à utiliser.",
+ "loc.input.label.RemoveAdditionalFilesFlag": "Supprimer les fichiers supplémentaires à la destination",
+ "loc.input.help.RemoveAdditionalFilesFlag": "Sélectionnez l'option permettant de supprimer les fichiers du service Azure App Service qui n'ont aucun fichier correspondant dans le package ou dossier App Service.
Remarque : Tous les fichiers associés à une extension installée sur ce service Azure App Service sont également supprimés. Pour éviter que cela se produise, cochez la case 'Exclure les fichiers du dossier App_Data'. ",
+ "loc.input.label.ExcludeFilesFromAppDataFlag": "Exclure les fichiers du dossier App_Data",
+ "loc.input.help.ExcludeFilesFromAppDataFlag": "Sélectionnez l'option permettant d'empêcher les fichiers du dossier App_Data d'être déployés/supprimés sur Azure App Service.",
+ "loc.input.label.AdditionalArguments": "Arguments supplémentaires",
+ "loc.input.help.AdditionalArguments": "Arguments Web Deploy supplémentaires suivant la syntaxe -key:value. Ceux-ci sont appliqués au moment du déploiement d'Azure App Service, par exemple : -disableLink:AppPoolExtension -disableLink:ContentExtension. Pour plus d'exemples de paramètres d'opération Web Deploy, consultez [cette page](https://go.microsoft.com/fwlink/?linkid=838471).",
+ "loc.input.label.RenameFilesFlag": "Renommer les fichiers verrouillés",
+ "loc.input.help.RenameFilesFlag": "Sélectionnez l'option permettant d'activer l'indicateur msdeploy MSDEPLOY_RENAME_LOCKED_FILES=1 dans les paramètres d'application Azure App Service. Si cette option est définie, elle permet à msdeploy de renommer les fichiers verrouillés durant le déploiement de l'application",
+ "loc.input.label.XmlTransformation": "Transformation XML",
+ "loc.input.help.XmlTransformation": "Les transformations de configuration sont exécutées pour '*Release.config' et '*..config' sur le fichier '*.config'. Elles sont exécutées avant la substitution de variable. Les transformations XML sont prises en charge uniquement pour la plateforme Windows.",
+ "loc.input.label.XmlVariableSubstitution": "Substitution de variable XML",
+ "loc.input.help.XmlVariableSubstitution": "Les variables définies dans le pipeline de build ou le pipeline de mise en production sont mappées aux entrées 'key' ou 'name' dans les sections appSettings, connectionStrings et applicationSettings d'un fichier config et d'un fichier parameters.xml. La substitution de variable est exécutée après les transformations de configuration.
Remarque : Si les mêmes variables sont définies dans le pipeline de mise en production et dans l'environnement, les variables d'environnement remplacent les variables de pipeline de mise en production. ",
+ "loc.input.label.JSONFiles": "Substitution de variable JSON",
+ "loc.input.help.JSONFiles": "Fournissez une liste de fichiers JSON séparés par une nouvelle ligne pour remplacer les valeurs de variables. Les noms de fichiers doivent être indiqués par rapport au dossier racine. Pour remplacer les variables JSON imbriquées ou hiérarchiques, spécifiez-les à l'aide d'expressions JSONPath.
Par exemple, pour remplacer la valeur de 'ConnectionString' dans l'exemple ci-dessous, vous devez définir une variable en tant que 'Data.DefaultConnection.ConnectionString' dans la définition de build ou de mise en production (ou l'environnement du pipeline de mise en production). { \"Data\": { \"DefaultConnection\": { \"ConnectionString\": \"Server=(localdb)\\SQLEXPRESS;Database=MyDB;Trusted_Connection=True\" } } } La substitution de variable est exécutée après les transformations de configuration.
Remarque : Les variables de pipeline sont exclues de la substitution.",
+ "loc.messages.Invalidwebapppackageorfolderpathprovided": "Chemin de dossier ou package App Service fourni non valide : %s",
+ "loc.messages.SetParamFilenotfound0": "Fichier de définition de paramètres introuvable : %s",
+ "loc.messages.XDTTransformationsappliedsuccessfully": "Transformations XML correctement appliquées",
+ "loc.messages.GotconnectiondetailsforazureRMWebApp0": "Obtention effectuée des détails de la connexion de service d'Azure App Service : '%s'",
+ "loc.messages.ErrorNoSuchDeployingMethodExists": "Erreur : Aucune méthode de déploiement de ce type n'existe",
+ "loc.messages.UnabletoretrieveconnectiondetailsforazureRMWebApp": "Impossible de récupérer les détails de la connexion de service d'Azure App Service : %s. Code d'état : %s (%s)",
+ "loc.messages.UnabletoretrieveResourceID": "Impossible de récupérer les détails de connexion de service de la ressource Azure : '%s'. Code d'état : %s",
+ "loc.messages.Successfullyupdateddeploymenthistory": "Historique de déploiement mis à jour sur %s",
+ "loc.messages.Failedtoupdatedeploymenthistory": "Échec de la mise à jour de l'historique de déploiement. Erreur : %s",
+ "loc.messages.WARNINGCannotupdatedeploymentstatusSCMendpointisnotenabledforthiswebsite": "AVERTISSEMENT : Impossible de mettre à jour l'état de déploiement : le point de terminaison SCM n'est pas activé pour ce site web",
+ "loc.messages.Unabletoretrievewebconfigdetails": "Impossible de récupérer les détails de la configuration d'App Service. Code d'état : '%s'",
+ "loc.messages.Unabletoretrievewebappsettings": "Impossible de récupérer les paramètres d'application App Service. [Code d'état : '%s', message d'erreur : '%s']",
+ "loc.messages.Unabletoupdatewebappsettings": "Impossible de mettre à jour les paramètres d'application d'App Service. Code d'état : '%s'",
+ "loc.messages.CannotupdatedeploymentstatusuniquedeploymentIdCannotBeRetrieved": "Impossible de mettre à jour l'état du déploiement : l'ID de déploiement unique ne peut pas être récupéré",
+ "loc.messages.PackageDeploymentSuccess": "Déploiement réussi du package web sur App Service.",
+ "loc.messages.PackageDeploymentFailed": "Échec de déploiement du package web sur App Service.",
+ "loc.messages.Runningcommand": "Exécution de la commande : %s",
+ "loc.messages.Deployingwebapplicationatvirtualpathandphysicalpath": "Déploiement du package web : %s sur le chemin virtuel (chemin physique) : %s (%s)",
+ "loc.messages.Successfullydeployedpackageusingkuduserviceat": "Package %s déployé à l'aide du service kudu sur %s",
+ "loc.messages.Failedtodeploywebapppackageusingkuduservice": "Impossible de déployer le package App Service à l'aide du service kudu : %s",
+ "loc.messages.Unabletodeploywebappresponsecode": "Impossible de déployer App Service en raison du code d'erreur %s",
+ "loc.messages.MSDeploygeneratedpackageareonlysupportedforWindowsplatform": "Les packages générés par MSDeploy sont uniquement pris en charge par la plateforme Windows.",
+ "loc.messages.UnsupportedinstalledversionfoundforMSDeployversionshouldbeatleast3orabove": "Version installée non prise en charge : %s trouvé pour MSDeploy. Il doit s'agir au minimum de la version 3 ou d'une version ultérieure",
+ "loc.messages.UnabletofindthelocationofMSDeployfromregistryonmachineError": "Emplacement introuvable de MSDeploy dans le Registre de l'ordinateur (Erreur : %s)",
+ "loc.messages.Nopackagefoundwithspecifiedpattern": "Package introuvable avec le modèle spécifié : %s Vérifiez si le package mentionné dans la tâche est publié en tant qu'artefact dans la build ou à une étape précédente, et s'il est téléchargé dans le travail actuel.",
+ "loc.messages.MorethanonepackagematchedwithspecifiedpatternPleaserestrainthesearchpattern": "Plusieurs packages correspondent au modèle spécifié : %s. Affinez le modèle de recherche.",
+ "loc.messages.Trytodeploywebappagainwithappofflineoptionselected": "Essayez de redéployer App Service avec l'option Mettre l'application hors connexion sélectionnée.",
+ "loc.messages.Trytodeploywebappagainwithrenamefileoptionselected": "Essayez de redéployer App Service avec l'option Renommer les fichiers verrouillés sélectionnée.",
+ "loc.messages.NOJSONfilematchedwithspecificpattern": "Aucun fichier JSON ne correspond au modèle spécifique : %s.",
+ "loc.messages.Configfiledoesntexists": "Le fichier de configuration %s n'existe pas.",
+ "loc.messages.Failedtowritetoconfigfilewitherror": "Échec d'écriture dans le fichier config %s avec l'erreur : %s",
+ "loc.messages.AppOfflineModeenabled": "Mode hors connexion de l'application activé.",
+ "loc.messages.Failedtoenableappofflinemode": "Échec de l'activation du mode hors connexion de l'application. Code d'état : %s (%s)",
+ "loc.messages.AppOflineModedisabled": "Mode hors connexion de l'application désactivé.",
+ "loc.messages.FailedtodisableAppOfflineMode": "Impossible de désactiver le mode hors connexion de l'application. Code d'état : %s (%s)",
+ "loc.messages.CannotPerformXdtTransformationOnNonWindowsPlatform": "Impossible d'effectuer les transformations XML sur une plateforme non-Windows.",
+ "loc.messages.XdtTransformationErrorWhileTransforming": "Erreur de transformation XML lors de la transformation de %s à l'aide de %s.",
+ "loc.messages.PublishusingwebdeployoptionsaresupportedonlywhenusingWindowsagent": "Les options de publication à l'aide de webdeploy ne sont prises en charge qu'en cas d'utilisation de l'agent Windows",
+ "loc.messages.Publishusingzipdeploynotsupportedformsbuildpackage": "La publication à l'aide de l'option zip deploy n'est pas prise en charge pour le type de package msBuild.",
+ "loc.messages.Publishusingzipdeploynotsupportedforvirtualapplication": "La publication à l'aide de l'option zip deploy n'est pas prise en charge pour une application virtuelle.",
+ "loc.messages.Publishusingzipdeploydoesnotsupportwarfile": "La publication à l'aide des options zip deploy ou RunFromZip ne prend pas en charge le déploiement de fichiers war.",
+ "loc.messages.Publishusingrunfromzipwithpostdeploymentscript": "La publication à l'aide de RunFromZip risque de ne pas prendre en charge le script de postdéploiement, s'il apporte des changements à wwwroot, car le dossier est ReadOnly.",
+ "loc.messages.ResourceDoesntExist": "La ressource '%s' n'existe pas. La ressource doit exister avant le déploiement.",
+ "loc.messages.EncodeNotSupported": "Encodage du fichier %s en %s détecté. La substitution de variable n'est pas prise en charge avec l'encodage de fichier %s. Les encodages pris en charge sont UTF-8 et UTF-16 LE.",
+ "loc.messages.UnknownFileEncodeError": "Impossible de détecter l'encodage du fichier %s (typeCode : %s). Les encodages pris en charge sont UTF-8 et UTF-16 LE.",
+ "loc.messages.ShortFileBufferError": "La mémoire tampon de fichier est insuffisante pour détecter le type d'encodage : %s",
+ "loc.messages.FailedToUpdateAzureRMWebAppConfigDetails": "Impossible de mettre à jour les informations sur la configuration App Service. Erreur : %s",
+ "loc.messages.SuccessfullyUpdatedAzureRMWebAppConfigDetails": "Informations sur la configuration App Service correctement mises à jour",
+ "loc.messages.RequestedURLforkuduphysicalpath": "URL demandée pour le chemin d'accès physique Kudu : %s",
+ "loc.messages.Physicalpathalreadyexists": "Le chemin d'accès physique '%s' existe déjà",
+ "loc.messages.KuduPhysicalpathCreatedSuccessfully": "Chemin d'accès physique Kudu correctement créé : %s",
+ "loc.messages.FailedtocreateKuduPhysicalPath": "Échec de la création du chemin physique de kudu. Erreur : %s",
+ "loc.messages.FailedtocheckphysicalPath": "Échec de la vérification du chemin physique de kudu. Code d'erreur : %s",
+ "loc.messages.VirtualApplicationDoesNotExist": "L'application virtuelle %s n'existe pas",
+ "loc.messages.JSONParseError": "Impossible d'analyser le fichier JSON : %s. Erreur : %s",
+ "loc.messages.JSONvariablesubstitutionappliedsuccessfully": "Substitution de variable JSON correctement appliquée.",
+ "loc.messages.XMLvariablesubstitutionappliedsuccessfully": "La substitution de la variable XML a été appliquée.",
+ "loc.messages.failedtoUploadFileToKudu": "Impossible de charger le fichier %s sur Kudu (%s). Code d'état : %s",
+ "loc.messages.failedtoUploadFileToKuduError": "Impossible de charger le fichier %s sur Kudu (%s). Erreur : %s",
+ "loc.messages.ExecuteScriptOnKudu": "Exécution du script donné sur le service Kudu.",
+ "loc.messages.FailedToRunScriptOnKuduError": "Impossible d'exécuter le script sur le service Kudu. Erreur : %s",
+ "loc.messages.FailedToRunScriptOnKudu": "Impossible d'exécuter le script sur Kudu : %s. Code d'état : %s",
+ "loc.messages.ScriptExecutionOnKuduSuccess": "Exécution réussie du script sur Kudu.",
+ "loc.messages.ScriptExecutionOnKuduFailed": "Le script exécuté a généré le code de retour '%s'. Erreur : %s",
+ "loc.messages.FailedtoDeleteFileFromKudu": "Impossible de supprimer le fichier %s de Kudu (%s). Code d'état : %s",
+ "loc.messages.FailedtoDeleteFileFromKuduError": "Impossible de supprimer le fichier %s de Kudu (%s). Erreur : %s",
+ "loc.messages.ScriptFileNotFound": "Le fichier de script '%s' est introuvable.",
+ "loc.messages.InvalidScriptFile": "Le fichier de script fourni '%s' est non valide. Les extensions valides sont .bat et .cmd pour Windows, et.sh pour Linux",
+ "loc.messages.RetryForTimeoutIssue": "Échec de l'exécution du script en raison d'un problème de délai d'expiration. Nouvelle tentative.",
+ "loc.messages.stdoutFromScript": "Sortie standard du script : ",
+ "loc.messages.stderrFromScript": "Erreur standard du script : ",
+ "loc.messages.WebConfigAlreadyExists": "Le fichier web.config existe déjà. Aucune génération en cours.",
+ "loc.messages.SuccessfullyGeneratedWebConfig": "Génération réussie du fichier web.config",
+ "loc.messages.FailedToGenerateWebConfig": "Échec de génération de web.config. %s",
+ "loc.messages.FailedToGetKuduFileContent": "Impossible d'obtenir le contenu du fichier : %s. Code d'état : %s (%s)",
+ "loc.messages.FailedToGetKuduFileContentError": "Impossible d'obtenir le contenu du fichier : %s. Erreur : %s",
+ "loc.messages.ScriptStatusTimeout": "Impossible de récupérer (fetch) l'état du script en raison du délai d'expiration.",
+ "loc.messages.PollingForFileTimeOut": "Impossible de récupérer (fetch) l'état du script en raison du délai d'expiration. Vous pouvez augmenter la limite du délai d'expiration en affectant le nombre de minutes nécessaires à la variable 'appservicedeploy.retrytimeout'.",
+ "loc.messages.InvalidPollOption": "Option d'interrogation non valide fournie : %s.",
+ "loc.messages.MissingAppTypeWebConfigParameters": "Il manque l'attribut '-appType' dans les paramètres de Web.config. Les valeurs valides pour '-appType' sont : 'python_Bottle', 'python_Django', 'python_Flask', 'node' et 'Go'. Exemple : '-appType python_Bottle' (sans guillemets) dans le cas d'un framework Python Bottle.",
+ "loc.messages.AutoDetectDjangoSettingsFailed": "Impossible de détecter le chemin du fichier 'settings.py' pour DJANGO_SETTINGS_MODULE. Vérifiez que le fichier 'settings.py' existe, ou indiquez le chemin approprié dans l'entrée de paramètre de Web.config au format suivant : '-DJANGO_SETTINGS_MODULE .settings'",
+ "loc.messages.FailedToApplyTransformation": "Impossible d'appliquer la transformation pour le package donné. Vérifiez ce qui suit.",
+ "loc.messages.FailedToApplyTransformationReason1": "1. La transformation est-elle déjà appliquée pour le package MSBuild généré durant la build ? Si la réponse est oui, supprimez la balise pour chaque configuration dans le fichier csproj, puis effectuez une regénération. ",
+ "loc.messages.FailedToApplyTransformationReason2": "2. Vérifiez que le fichier config et les fichiers de transformation sont présents dans le même dossier à l'intérieur du package.",
+ "loc.messages.AutoParameterizationMessage": "Les attributs de ConnectionString dans Web.config sont paramétrables par défaut. Notez que la transformation n'a aucun effet sur les attributs de connectionString, car la valeur est remplacée durant le déploiement par les fichiers 'Parameters.xml' ou 'SetParameters.xml'. Vous pouvez désactiver le paramétrage automatique en définissant /p:AutoParameterizationWebConfigConnectionStrings=False durant la génération du package MSBuild.",
+ "loc.messages.UnsupportedAppType": "Le type d'application '%s' n'est pas pris en charge dans la génération de Web.config. Les valeurs valides pour '-appType' sont : 'python_Bottle', 'python_Django', 'python_Flask' et 'node'",
+ "loc.messages.UnableToFetchAuthorityURL": "Impossible de récupérer (fetch) l'URL d'autorité.",
+ "loc.messages.UnableToFetchActiveDirectory": "Impossible de récupérer (fetch) l'ID de ressource Active Directory.",
+ "loc.messages.SuccessfullyUpdatedRuntimeStackAndStartupCommand": "Mise à jour réussie de la pile d'exécution et de la commande de démarrage.",
+ "loc.messages.FailedToUpdateRuntimeStackAndStartupCommand": "Échec de la mise à jour de la pile d'exécution et de la commande de démarrage. Erreur : %s.",
+ "loc.messages.SuccessfullyUpdatedWebAppSettings": "Mise à jour réussie des paramètres de l'application.",
+ "loc.messages.FailedToUpdateAppSettingsInConfigDetails": "Échec de la mise à jour des paramètres de l'application. Erreur : %s.",
+ "loc.messages.UnableToGetAzureRMWebAppMetadata": "Échec de la récupération (fetch) des métadonnées de la WebApp AzureRM. ErrorCode : %s",
+ "loc.messages.UnableToUpdateAzureRMWebAppMetadata": "Impossible de mettre à jour les métadonnées de la WebApp AzureRM. Code d'erreur : %s",
+ "loc.messages.Unabletoretrieveazureregistrycredentials": "Impossible de récupérer les informations d'identification d'Azure Container Registry.[Code d'état : '%s']",
+ "loc.messages.UnableToReadResponseBody": "Impossible de lire le corps de la réponse. Erreur : %s",
+ "loc.messages.UnableToUpdateWebAppConfigDetails": "Impossible de mettre à jour les détails de configuration de la WebApp. StatusCode : '%s'",
+ "loc.messages.AddingReleaseAnnotation": "Ajout d'une annotation de mise en production pour la ressource Application Insights '%s'",
+ "loc.messages.SuccessfullyAddedReleaseAnnotation": "Ajout réussi de l'annotation de mise en production à Application Insight : %s",
+ "loc.messages.FailedAddingReleaseAnnotation": "Échec de l'ajout de l'annotation de mise en production. %s",
+ "loc.messages.RenameLockedFilesEnabled": "Le renommage des fichiers verrouillés est activé pour App Service.",
+ "loc.messages.FailedToEnableRenameLockedFiles": "Échec de l'activation du renommage des fichiers verrouillés. Erreur : %s",
+ "loc.messages.WebJobsInProgressIssue": "Un petit nombre de WebJobs à l'état en cours d'exécution empêchent le processus de déploiement de supprimer les fichiers. Désactivez l'option Supprimer les fichiers supplémentaires à l'emplacement de destination, ou arrêtez les travaux continus avant le déploiement.",
+ "loc.messages.FailedToFetchKuduAppSettings": "Échec de la récupération (fetch) des paramètres d'application Kudu. Erreur : %s",
+ "loc.messages.FailedToCreatePath": "Échec de la création du chemin '%s' à partir de Kudu. Erreur : %s",
+ "loc.messages.FailedToDeleteFile": "Échec de la suppression du fichier '%s/%s' à partir de Kudu. Erreur : %s",
+ "loc.messages.FailedToDeleteFolder": "Échec de la suppression du dossier '%s' dans Kudu. Erreur : %s",
+ "loc.messages.FailedToUploadFile": "Échec du chargement du fichier '%s/%s' à partir de Kudu. Erreur : %s",
+ "loc.messages.FailedToGetFileContent": "Échec de l'obtention du contenu du fichier '%s/%s' à partir de Kudu. Erreur : %s",
+ "loc.messages.FailedToListPath": "Échec du listage du chemin '%s' à partir de Kudu. Erreur : %s",
+ "loc.messages.RetryToDeploy": "Nouvelle tentative de déploiement du package.",
+ "loc.messages.FailedToGetAppServiceDetails": "Échec de la récupération (fetch) des détails de l'App Service '%s'. Erreur : %s",
+ "loc.messages.FailedToGetAppServicePublishingProfile": "Échec de la récupération (fetch) du profil de publication de l'App Service '%s'. Erreur : %s",
+ "loc.messages.FailedToUpdateAppServiceMetadata": "Échec de la mise à jour des métadonnées de l'App Service '%s'. Erreur : %s",
+ "loc.messages.FailedToGetAppServiceMetadata": "Échec de l'obtention des métadonnées de l'App Service '%s'. Erreur : %s",
+ "loc.messages.FailedToPatchAppServiceConfiguration": "Échec de l'application du correctif à la configuration de l'App Service '%s'. Erreur : %s",
+ "loc.messages.FailedToUpdateAppServiceConfiguration": "Échec de la mise à jour de la configuration de l'App Service '%s'. Erreur : %s",
+ "loc.messages.FailedToGetAppServiceConfiguration": "Échec de l'obtention de la configuration de l'App Service '%s'. Erreur : %s",
+ "loc.messages.FailedToGetAppServicePublishingCredentials": "Échec de la récupération (fetch) des informations d'identification de publication de l'App Service '%s'. Erreur : %s",
+ "loc.messages.FailedToGetAppServiceApplicationSettings": "Échec de l'obtention des paramètres d'application de l'App Service '%s'. Erreur : %s",
+ "loc.messages.FailedToUpdateAppServiceApplicationSettings": "Échec de la mise à jour des paramètres d'application de l'App Service '%s'. Erreur : %s",
+ "loc.messages.UpdatingAppServiceConfigurationSettings": "Tentative de mise à jour des paramètres de configuration d'App Service. Données : %s",
+ "loc.messages.UpdatedAppServiceConfigurationSettings": "Mise à jour effectuée des paramètres de configuration d'App Service.",
+ "loc.messages.UpdatingAppServiceApplicationSettings": "Tentative de mise à jour des paramètres d'application d'App Service. Données : %s",
+ "loc.messages.AppServiceApplicationSettingsAlreadyPresent": "Les paramètres d'application d'App Service sont déjà présents.",
+ "loc.messages.AppServiceConnectionStringsAlreadyPresent": "Les chaînes de connexion d'App Service sont déjà présentes.",
+ "loc.messages.UpdatedAppServiceApplicationSettings": "Mise à jour effectuée des paramètres d'application d'App Service et des paramètres d'application de Kudu.",
+ "loc.messages.MultipleResourceGroupFoundForAppService": "Plusieurs groupes de ressources trouvés pour l'App Service '%s'.",
+ "loc.messages.PackageDeploymentUsingZipDeployFailed": "Échec du déploiement de package à l'aide de ZIP Deploy. Pour plus d'informations, consultez les journaux.",
+ "loc.messages.PackageDeploymentInitiated": "Déploiement de package avec ZIP Deploy lancé.",
+ "loc.messages.WarPackageDeploymentInitiated": "Lancement effectué du déploiement de package à l'aide de WAR Deploy.",
+ "loc.messages.FailedToGetDeploymentLogs": "Échec de l'obtention des journaux de déploiement. Erreur : %s",
+ "loc.messages.GoExeNameNotPresent": "Nom de l’exe Go absent",
+ "loc.messages.WarDeploymentRetry": "Nouvelle tentative de déploiement du fichier war, car il ne s'est pas décompressé correctement.",
+ "loc.messages.Updatemachinetoenablesecuretlsprotocol": "Assurez-vous que l'ordinateur utilise le protocole TLS 1.2 ou ultérieur. Consultez https://aka.ms/enableTlsv2 pour plus d'informations sur l'activation de TLS sur votre ordinateur.",
+ "loc.messages.CouldNotFetchAccessTokenforAzureStatusCode": "Impossible de récupérer (fetch) le jeton d'accès pour Azure. Code d'état : %s, message d'état : %s",
+ "loc.messages.CouldNotFetchAccessTokenforMSIDueToMSINotConfiguredProperlyStatusCode": "Impossible de récupérer (fetch) le jeton d'accès pour le principal du service managé. Configurez MSI (Managed Service Identity) pour la machine virtuelle 'https://aka.ms/azure-msi-docs'. Code d'état : %s, message d'état : %s",
+ "loc.messages.CouldNotFetchAccessTokenforMSIStatusCode": "Impossible de récupérer (fetch) le jeton d'accès pour le principal du service managé. Code d'état : %s, message d'état : %s",
+ "loc.messages.XmlParsingFailed": "Impossible d'analyser le fichier publishProfileXML. Erreur : %s",
+ "loc.messages.PropertyDoesntExistPublishProfile": "[%s] La propriété n'existe pas dans le profil de publication",
+ "loc.messages.InvalidConnectionType": "Type de connexion de service non valide",
+ "loc.messages.InvalidImageSourceType": "Type de source d'image non valide",
+ "loc.messages.InvalidPublishProfile": "Le fichier de profil de publication est non valide.",
+ "loc.messages.ASE_SSLIssueRecommendation": "Pour utiliser un certificat dans App Service, celui-ci doit être signé par une autorité de certification de confiance. Si votre application web génère des erreurs de validation de certificat, cela signifie probablement que vous utilisez un certificat auto-signé. Pour résoudre ces erreurs, vous devez affecter la valeur true à une variable nommée VSTS_ARM_REST_IGNORE_SSL_ERRORS dans le pipeline de build ou le pipeline de mise en production",
+ "loc.messages.ZipDeployLogsURL": "Les journaux Zip Deploy peuvent être consultés sur %s",
+ "loc.messages.DeployLogsURL": "Les journaux de déploiement peuvent être consultés sur %s",
+ "loc.messages.AppServiceApplicationURL": "URL d'application App Service : %s",
+ "loc.messages.ASE_WebDeploySSLIssueRecommendation": "Pour utiliser un certificat dans App Service, celui-ci doit être signé par une autorité de certification de confiance. Si votre application web génère des erreurs de validation de certificat, cela signifie probablement que vous utilisez un certificat auto-signé. Pour résoudre ces erreurs, vous devez passer -allowUntrusted dans des arguments supplémentaires de l'option Web Deploy.",
+ "loc.messages.FailedToGetResourceID": "Échec de l'obtention de l'ID de ressource pour le type de ressource '%s' et le nom de ressource '%s'. Erreur : %s",
+ "loc.messages.JarPathNotPresent": "Le chemin du fichier jar Java n'est pas présent",
+ "loc.messages.FailedToUpdateApplicationInsightsResource": "Échec de la mise à jour de la ressource Application Insights '%s'. Erreur : %s",
+ "loc.messages.RunFromZipPreventsFileInUseError": "Passez de Web Deploy à l'exécution à partir d'un package, ce qui permet d'éviter l'erreur FILE_IN_USE. Notez que l'exécution à partir d'un package ne prend pas en charge le type de package msBuild. Changez le format de votre package pour utiliser cette méthode de déploiement."
+}
\ No newline at end of file
diff --git a/_generated/AzureRmWebAppDeploymentV4/Strings/resources.resjson/it-IT/resources.resjson b/_generated/AzureRmWebAppDeploymentV4/Strings/resources.resjson/it-IT/resources.resjson
new file mode 100644
index 000000000000..f4bfc0ca0356
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/Strings/resources.resjson/it-IT/resources.resjson
@@ -0,0 +1,229 @@
+{
+ "loc.friendlyName": "Distribuzione di Servizio app di Azure",
+ "loc.helpMarkDown": "[Altre informazioni su questa attività](https://aka.ms/azurermwebdeployreadme)",
+ "loc.description": "Esegue la distribuzione in Servizio app di Azure di un'app Web, per dispositivi mobili o API con Docker, Java, .NET, .NET Core, Node.js, PHP, Python o Ruby",
+ "loc.instanceNameFormat": "Distribuzione servizio app di Azure: $(WebAppName)",
+ "loc.releaseNotes": "Novità della versione 4.* Supporto di Zip Deploy, Run From Package, War Deploy [Dettagli](https://aka.ms/appServiceDeploymentMethods) Supporto di Ambienti del servizio app Interfaccia utente migliorata per l'individuazione dei diversi tipi di servizio app supportati dall'attività Il metodo di distribuzione preferito è Run From Package, con cui i file nella cartella wwwroot diventano di sola lettura Per altre informazioni, fare clic [qui](https://aka.ms/azurermwebdeployreadme).",
+ "loc.group.displayName.FileTransformsAndVariableSubstitution": "Opzioni di trasformazioni di file e sostituzioni di variabili",
+ "loc.group.displayName.AdditionalDeploymentOptions": "Opzioni di distribuzione aggiuntive",
+ "loc.group.displayName.PostDeploymentAction": "Azione post-distribuzione",
+ "loc.group.displayName.ApplicationAndConfigurationSettings": "Impostazioni applicazione e configurazione",
+ "loc.input.label.ConnectionType": "Tipo di connessione",
+ "loc.input.help.ConnectionType": "Selezionare il tipo di connessione al servizio da usare per distribuire l'app Web. Selezionare Profilo di pubblicazione per usare il profilo di pubblicazione creato da Visual Studio. [Altre informazioni](https://aka.ms/vsPublishProfile).",
+ "loc.input.label.ConnectedServiceName": "Sottoscrizione di Azure",
+ "loc.input.help.ConnectedServiceName": "Selezionare la sottoscrizione di Azure Resource Manager per la distribuzione.",
+ "loc.input.label.PublishProfilePath": "Percorso del profilo di pubblicazione",
+ "loc.input.help.PublishProfilePath": "Percorso del profilo di pubblicazione creato da Visual Studio",
+ "loc.input.label.PublishProfilePassword": "Password del profilo di pubblicazione",
+ "loc.input.help.PublishProfilePassword": "È consigliabile archiviare la password in una variabile di segreto e usare qui tale variabile, ad esempio $(Password).",
+ "loc.input.label.WebAppKind": "Tipo del servizio app",
+ "loc.input.help.WebAppKind": "Consente di scegliere tra App Web in Windows, App Web in Linux, App Web per contenitori, App per le funzioni, App per le funzioni in Linux, App per le funzioni per contenitori e App per dispositivi mobili.",
+ "loc.input.label.WebAppName": "Nome del servizio app",
+ "loc.input.help.WebAppName": "Consente di immettere o selezionare il nome di un servizio app di Azure. Verranno elencati solo i servizi app basati sul tipo di app selezionato.",
+ "loc.input.label.DeployToSlotOrASEFlag": "Distribuisci nello slot o nell'ambiente del servizio app",
+ "loc.input.help.DeployToSlotOrASEFlag": "Consente di selezionare l'opzione per la distribuzione in uno slot di distribuzione esistente o in un ambiente del servizio app di Azure. Per entrambe le destinazioni l'attività richiede il nome del gruppo di risorse. Se la destinazione di distribuzione è uno slot, per impostazione predefinita la distribuzione viene eseguita nello slot di produzione. È anche possibile specificare qualsiasi altro nome di slot esistente. Se la destinazione di distribuzione è un ambiente del servizio app di Azure, lasciare il nome dello slot impostato su 'produzione' e specificare solo il nome del gruppo di risorse.",
+ "loc.input.label.ResourceGroupName": "Gruppo di risorse",
+ "loc.input.help.ResourceGroupName": "Il nome del gruppo di risorse è obbligatorio quando la destinazione di distribuzione è uno slot di distribuzione o un ambiente del servizio app. Immettere o selezionare il gruppo di risorse di Azure che contiene il servizio app di Azure specificato sopra.",
+ "loc.input.label.SlotName": "Slot",
+ "loc.input.help.SlotName": "Immettere o selezionare uno slot esistente diverso da quello di produzione.",
+ "loc.input.label.DockerNamespace": "Registro o spazio dei nomi",
+ "loc.input.help.DockerNamespace": "Nome di dominio di primo livello univoco a livello globale per il registro o lo spazio dei nomi specifico. Nota: il formato del nome completo dell'immagine è: '`/`:`'. Esempio: 'registropersonale.azurecr.io/nginx:latest'.",
+ "loc.input.label.DockerRepository": "Immagine",
+ "loc.input.help.DockerRepository": "Nome del repository in cui vengono archiviate le immagini del contenitore. Nota: il formato del nome completo dell'immagine è: '`/`:`'. Esempio: 'registropersonale.azurecr.io/nginx:latest'.",
+ "loc.input.label.DockerImageTag": "Tag",
+ "loc.input.help.DockerImageTag": "I tag sono facoltativi e costituiscono il meccanismo usato dai registri per assegnare una versione alle immagini Docker. Nota: il formato del nome completo dell'immagine è: '`/`:`'. Esempio: 'myregistry.azurecr.io/nginx:latest'.",
+ "loc.input.label.VirtualApplication": "Applicazione virtuale",
+ "loc.input.help.VirtualApplication": "Consente di specificare il nome dell'applicazione virtuale configurata nel portale di Azure. L'opzione non è necessaria per le distribuzioni nella radice del servizio app.",
+ "loc.input.label.Package": "Pacchetto o cartella",
+ "loc.input.help.Package": "Percorso file del pacchetto o di una cartella che include il contenuto del servizio app generato da MSBuild oppure un file WAR o ZIP compresso. Variabili ( [Compilazione](https://docs.microsoft.com/vsts/pipelines/build/variables) | [Versione](https://docs.microsoft.com/vsts/pipelines/release/variables#default-variables)). I caratteri jolly sono supportati. Ad esempio, $(System.DefaultWorkingDirectory)/\\*\\*/\\*.zip o $(System.DefaultWorkingDirectory)/\\*\\*/\\*.war.",
+ "loc.input.label.RuntimeStack": "Stack di runtime",
+ "loc.input.help.RuntimeStack": "Consente di selezionare il framework e la versione.",
+ "loc.input.label.RuntimeStackFunction": "Stack di runtime",
+ "loc.input.help.RuntimeStackFunction": "Consente di selezionare il framework e la versione. Fare riferimento a [questo documento](https://docs.microsoft.com/azure/azure-functions/functions-versions#languages) per le versioni del runtime supportate. I valori precedenti, come `DOCKER|microsoft/azure-functions-*`, sono deprecati. Usare i nuovi valori dall'elenco a discesa.",
+ "loc.input.label.StartupCommand": "Comando di avvio ",
+ "loc.input.help.StartupCommand": "Immettere il comando di avvio, ad esempio dotnet exec filename.dll dotnet filename.dll",
+ "loc.input.label.ScriptType": "Tipo dello script di distribuzione",
+ "loc.input.help.ScriptType": "È possibile personalizzare la distribuzione fornendo uno script che verrà eseguito nel servizio app di Azure una volta completata la distribuzione dell'attività, ad esempio per ripristinare i pacchetti per le applicazioni Node, PHP e Python. [Altre informazioni](https://go.microsoft.com/fwlink/?linkid=843471).",
+ "loc.input.label.InlineScript": "Script inline",
+ "loc.input.label.ScriptPath": "Percorso dello script di distribuzione",
+ "loc.input.label.WebConfigParameters": "Genera i parametri di web.config per app Python, Node.js, Go e Java",
+ "loc.input.help.WebConfigParameters": "Verrà generato un file Web.config standard che verrà distribuito nel servizio app di Azure, se non è disponibile per l'applicazione. I valori presenti nel file Web.config sono modificabili e possono variare a seconda del framework dell'applicazione. Ad esempio, per l'applicazione node.js il file Web.config includerà i valori per il file di avvio e il modulo iis_node. Questa funzionalità di modifica è utilizzabile solo per il file Web.config generato. [Altre informazioni](https://go.microsoft.com/fwlink/?linkid=843469).",
+ "loc.input.label.AppSettings": "Impostazioni app",
+ "loc.input.help.AppSettings": "Consente di modificare le impostazioni applicazione dell'app Web successive al valore -key della sintassi. Il valore che contiene spazi deve essere racchiuso tra virgolette. Esempio: -Port 5000 -RequestTimeout 5000 -WEBSITE_TIME_ZONE \"Ora solare fuso orientale\"",
+ "loc.input.label.ConfigurationSettings": "Impostazioni di configurazione",
+ "loc.input.help.ConfigurationSettings": "Consente di modificare le impostazioni di configurazione dell'app Web successive al valore -key della sintassi. Il valore che contiene spazi deve essere racchiuso tra virgolette. Esempio: -phpVersion 5.6 -linuxFxVersion: node|6.11",
+ "loc.input.label.UseWebDeploy": "Seleziona il metodo di distribuzione",
+ "loc.input.help.UseWebDeploy": "Se questa opzione è deselezionata, il metodo di distribuzione migliore verrà rilevato automaticamente in base al tipo di app, al formato del pacchetto e ad altri parametri. Selezionare l'opzione per visualizzare i metodi di distribuzione supportati e sceglierne uno per la distribuzione dell'app.",
+ "loc.input.label.DeploymentType": "Metodo di distribuzione",
+ "loc.input.help.DeploymentType": "Consente di scegliere il metodo di distribuzione per l'app.",
+ "loc.input.label.TakeAppOfflineFlag": "Porta app offline",
+ "loc.input.help.TakeAppOfflineFlag": "Consente di selezionare l'opzione per portare offline il servizio app di Azure inserendo un file app_offline.htm nella directory radice del servizio app prima dell'inizio dell'operazione di sincronizzazione. Il file verrà rimosso al termine dell'operazione di sincronizzazione.",
+ "loc.input.label.SetParametersFile": "File SetParameters",
+ "loc.input.help.SetParametersFile": "Facoltativo: percorso del file SetParameters.xml da usare.",
+ "loc.input.label.RemoveAdditionalFilesFlag": "Rimuovi file aggiuntivi nella destinazione",
+ "loc.input.help.RemoveAdditionalFilesFlag": "Consente di selezionare l'opzione per eliminare nel servizio app di Azure i file per cui non esistono file corrispondenti nella cartella o nel pacchetto del servizio app.
Nota: verranno rimossi anche tutti i file correlati a eventuali estensioni installate in questo servizio app di Azure. Per evitarlo, selezionare la casella di controllo 'Escludi file dalla cartella App_Data'. ",
+ "loc.input.label.ExcludeFilesFromAppDataFlag": "Escludi file dalla cartella App_Data",
+ "loc.input.help.ExcludeFilesFromAppDataFlag": "Consente di selezionare l'opzione per impedire che i file nella cartella App_Data vengano distribuiti nel servizio app di Azure o eliminati da tale servizio.",
+ "loc.input.label.AdditionalArguments": "Argomenti aggiuntivi",
+ "loc.input.help.AdditionalArguments": "Argomenti aggiuntivi di Web Deploy conformi alla sintassi -chiave:valore. Tali argomenti verranno applicati durante la distribuzione del servizio app di Azure. Esempio: -disableLink:AppPoolExtension -disableLink:ContentExtension. Per altri esempi di impostazioni per le operazioni di Web Deploy, fare clic [qui](https://go.microsoft.com/fwlink/?linkid=838471).",
+ "loc.input.label.RenameFilesFlag": "Rinomina i file bloccati",
+ "loc.input.help.RenameFilesFlag": "Consente di selezionare l'opzione per abilitare il flag MSDEPLOY_RENAME_LOCKED_FILES=1 di MSDeploy nelle impostazioni dell'applicazione del servizio app di Azure. Se impostata, l'opzione consente a MSDeploy di rinominare file bloccati che vengono bloccati durante la distribuzione dell'app",
+ "loc.input.label.XmlTransformation": "Trasformazione XML",
+ "loc.input.help.XmlTransformation": "Le trasformazioni dei file config verranno eseguite per `*.Release.config` e `*..config` nel file `*.config`. Le trasformazioni dei file config verranno eseguite prima della sostituzione delle variabili. Le trasformazioni XML sono supportate solo per la piattaforma Windows.",
+ "loc.input.label.XmlVariableSubstitution": "Sostituzione di variabili XML",
+ "loc.input.help.XmlVariableSubstitution": "Le variabili definite nelle pipeline di compilazione o di versione verranno confrontate con le voci 'key' o 'name' nelle sezioni appSettings, applicationSettings e connectionStrings di tutti i file config e parameters.xml. La sostituzione delle variabili viene eseguita dopo le trasformazioni dei file config.
Nota: se si definiscono le stesse variabili nella pipeline di versione e nell'ambiente, quelle di ambiente prevarranno su quelle della pipeline di versione. ",
+ "loc.input.label.JSONFiles": "Sostituzione di variabili JSON",
+ "loc.input.help.JSONFiles": "Consente di specificare l'elenco di file JSON delimitati da caratteri di nuova riga per sostituire i valori delle variabili. I nomi di file specificati devono essere relativi alla cartella radice. Per sostituire le variabili JSON annidate o gerarchiche, specificarle usando espressioni JSONPath.
Ad esempio, per sostituire il valore di ‘ConnectionString’ nell'esempio seguente, è necessario definire una variabile come ‘Data.DefaultConnection.ConnectionString’ nella pipeline di compilazione o versione (o nell'ambiente della pipeline di versione). { \"Data\": { \"DefaultConnection\": { \"ConnectionString\": \"Server=(localdb)\\SQLEXPRESS;Database=MyDB;Trusted_Connection=True\" } } } La sostituzione delle variabili viene eseguita dopo le trasformazioni della configurazione.
Nota: le variabili delle pipeline vengono escluse nella sostituzione.",
+ "loc.messages.Invalidwebapppackageorfolderpathprovided": "Il percorso specificato per il pacchetto o la cartella del servizio app non è valido: %s",
+ "loc.messages.SetParamFilenotfound0": "Il file dei parametri del set non è stato trovato: %s",
+ "loc.messages.XDTTransformationsappliedsuccessfully": "Le trasformazioni XML sono state applicate",
+ "loc.messages.GotconnectiondetailsforazureRMWebApp0": "I dettagli della connessione al servizio per il servizio app di Azure sono stati recuperati: '%s'",
+ "loc.messages.ErrorNoSuchDeployingMethodExists": "Errore: non esiste alcun metodo di distribuzione di questo tipo",
+ "loc.messages.UnabletoretrieveconnectiondetailsforazureRMWebApp": "Non è possibile recuperare i dettagli della connessione al servizio per il servizio app di Azure: %s. Codice di stato: %s (%s)",
+ "loc.messages.UnabletoretrieveResourceID": "Non è possibile recuperare i dettagli della connessione al servizio per la risorsa di Azure '%s'. Codice di stato: %s",
+ "loc.messages.Successfullyupdateddeploymenthistory": "L'aggiornamento della cronologia di distribuzione all'indirizzo %s è stato completato",
+ "loc.messages.Failedtoupdatedeploymenthistory": "Non è stato possibile aggiornare la cronologia di distribuzione. Errore: %s",
+ "loc.messages.WARNINGCannotupdatedeploymentstatusSCMendpointisnotenabledforthiswebsite": "AVVISO: non è possibile aggiornare lo stato di distribuzione. L'endpoint di Gestione controllo del codice sorgente non è abilitato per questo sito Web",
+ "loc.messages.Unabletoretrievewebconfigdetails": "Non è possibile recuperare i dettagli di configurazione del servizio app. Codice di stato: '%s'",
+ "loc.messages.Unabletoretrievewebappsettings": "Non è possibile recuperare le impostazioni dell'applicazione del servizio app. [Codice di stato: '%s'. Messaggio di errore: '%s']",
+ "loc.messages.Unabletoupdatewebappsettings": "Non è possibile aggiornare le impostazioni dell'applicazione del servizio app. Codice di stato: '%s'",
+ "loc.messages.CannotupdatedeploymentstatusuniquedeploymentIdCannotBeRetrieved": "Non è possibile aggiornare lo stato di distribuzione. L'ID distribuzione univoco non è stato recuperato",
+ "loc.messages.PackageDeploymentSuccess": "Il pacchetto Web è stato distribuito nel servizio app.",
+ "loc.messages.PackageDeploymentFailed": "Non è stato possibile distribuire il pacchetto Web nel servizio app.",
+ "loc.messages.Runningcommand": "Esecuzione del comando: %s",
+ "loc.messages.Deployingwebapplicationatvirtualpathandphysicalpath": "Distribuzione del pacchetto Web %s nel percorso virtuale (percorso fisico) %s (%s)",
+ "loc.messages.Successfullydeployedpackageusingkuduserviceat": "La distribuzione del pacchetto %s con il servizio Kudu all'indirizzo %s è riuscita",
+ "loc.messages.Failedtodeploywebapppackageusingkuduservice": "Non è stato possibile distribuire il pacchetto del servizio app con il servizio Kudu: %s",
+ "loc.messages.Unabletodeploywebappresponsecode": "Non è possibile distribuire il servizio app a causa del codice errore: %s",
+ "loc.messages.MSDeploygeneratedpackageareonlysupportedforWindowsplatform": "I pacchetti generati da MSDeploy sono supportati solo per la piattaforma Windows.",
+ "loc.messages.UnsupportedinstalledversionfoundforMSDeployversionshouldbeatleast3orabove": "La versione installata non è supportata. La versione trovata per MSDeploy è %s, ma deve essere almeno 3 o successiva",
+ "loc.messages.UnabletofindthelocationofMSDeployfromregistryonmachineError": "Il percorso di MSDeploy non è stato trovato dal Registro di sistema nel computer (errore: %s)",
+ "loc.messages.Nopackagefoundwithspecifiedpattern": "Non è stato trovato alcun pacchetto con il criterio specificato: %s Verificare se il pacchetto menzionato nell'attività viene pubblicato come artefatto nella compilazione o in una fase precedente e quindi scaricato nel processo corrente.",
+ "loc.messages.MorethanonepackagematchedwithspecifiedpatternPleaserestrainthesearchpattern": "Più pacchetti corrispondono al criterio specificato %s. Restringere i criteri di ricerca.",
+ "loc.messages.Trytodeploywebappagainwithappofflineoptionselected": "Provare a distribuire di nuovo il servizio app dopo aver selezionato l'opzione Porta l'applicazione offline.",
+ "loc.messages.Trytodeploywebappagainwithrenamefileoptionselected": "Provare a distribuire di nuovo il servizio app dopo aver selezionato l'opzione Rinomina i file bloccati.",
+ "loc.messages.NOJSONfilematchedwithspecificpattern": "Non sono stati trovati file JSON corrispondenti al criterio specificato: %s.",
+ "loc.messages.Configfiledoesntexists": "Il file di configurazione %s non esiste.",
+ "loc.messages.Failedtowritetoconfigfilewitherror": "Non è stato possibile scrivere nel file config %s. Errore: %s",
+ "loc.messages.AppOfflineModeenabled": "La modalità offline dell'app è abilitata.",
+ "loc.messages.Failedtoenableappofflinemode": "Non è stato possibile abilitare la modalità offline dell'app. Codice di stato: %s (%s)",
+ "loc.messages.AppOflineModedisabled": "La modalità offline dell'app è disabilitata.",
+ "loc.messages.FailedtodisableAppOfflineMode": "Non è stato possibile disabilitare la modalità offline dell'app. Codice di stato: %s (%s)",
+ "loc.messages.CannotPerformXdtTransformationOnNonWindowsPlatform": "Non è possibile eseguire trasformazioni XML su una piattaforma non Windows.",
+ "loc.messages.XdtTransformationErrorWhileTransforming": "Si è verificato un errore di trasformazione XML durante la trasformazione di %s con %s.",
+ "loc.messages.PublishusingwebdeployoptionsaresupportedonlywhenusingWindowsagent": "Le opzioni di pubblicazione con Distribuzione Web sono supportate solo quando si usa l'agente Windows",
+ "loc.messages.Publishusingzipdeploynotsupportedformsbuildpackage": "La pubblicazione con l'opzione zipdeploy non è supportata per il tipo di pacchetto msBuild.",
+ "loc.messages.Publishusingzipdeploynotsupportedforvirtualapplication": "La pubblicazione con l'opzione zipdeploy non è supportata per l'applicazione virtuale.",
+ "loc.messages.Publishusingzipdeploydoesnotsupportwarfile": "Se si pubblica usando le opzioni zipdeploy o RunFromZip, la distribuzione di file war non è supportata.",
+ "loc.messages.Publishusingrunfromzipwithpostdeploymentscript": "Se si pubblica usando RunFromZip, è possibile che lo script post-distribuzione non sia supportato se apporta modifiche a wwwroot perché la cartella è di sola lettura.",
+ "loc.messages.ResourceDoesntExist": "La risorsa '%s' non esiste. La risorsa deve esistere prima della distribuzione.",
+ "loc.messages.EncodeNotSupported": "La codifica rilevata del file %s è %s. La sostituzione delle variabili non è supportata con la codifica file %s. Le codifiche supportate sono UTF-8 e UTF-16 LE.",
+ "loc.messages.UnknownFileEncodeError": "Non è possibile rilevare la codifica del file %s (typeCode: %s). Le codifiche supportate sono UTF-8 e UTF-16 LE.",
+ "loc.messages.ShortFileBufferError": "Il buffer di file è troppo piccolo per il rilevamento del tipo di codifica: %s",
+ "loc.messages.FailedToUpdateAzureRMWebAppConfigDetails": "Non è stato possibile aggiornare i dettagli della configurazione del servizio app. Errore: %s",
+ "loc.messages.SuccessfullyUpdatedAzureRMWebAppConfigDetails": "I dettagli della configurazione del servizio app sono stati aggiornati",
+ "loc.messages.RequestedURLforkuduphysicalpath": "È stato richiesto l'URL per il percorso fisico di Kudu: %s",
+ "loc.messages.Physicalpathalreadyexists": "Il percorso fisico '%s' esiste già",
+ "loc.messages.KuduPhysicalpathCreatedSuccessfully": "Il percorso fisico di Kudu è stato creato: %s",
+ "loc.messages.FailedtocreateKuduPhysicalPath": "Non è stato possibile creare il percorso fisico di Kudu. Errore: %s",
+ "loc.messages.FailedtocheckphysicalPath": "Non è stato possibile verificare il percorso fisico di Kudu. Codice errore: %s",
+ "loc.messages.VirtualApplicationDoesNotExist": "L'applicazione virtuale non esiste: %s",
+ "loc.messages.JSONParseError": "Non è possibile analizzare il file JSON: %s. Errore: %s",
+ "loc.messages.JSONvariablesubstitutionappliedsuccessfully": "La sostituzione di variabili JSON è stata applicata.",
+ "loc.messages.XMLvariablesubstitutionappliedsuccessfully": "La sostituzione di variabili XML è stata applicata.",
+ "loc.messages.failedtoUploadFileToKudu": "Non è possibile caricare il file %s in Kudu (%s). Codice di stato: %s",
+ "loc.messages.failedtoUploadFileToKuduError": "Non è stato possibile caricare il file %s in Kudu (%s). Errore: %s",
+ "loc.messages.ExecuteScriptOnKudu": "Esecuzione dello script specificato nel servizio Kudu.",
+ "loc.messages.FailedToRunScriptOnKuduError": "Non è possibile eseguire lo script nel servizio Kudu. Errore: %s",
+ "loc.messages.FailedToRunScriptOnKudu": "Non è possibile eseguire lo script in Kudu: %s. Codice di stato: %s",
+ "loc.messages.ScriptExecutionOnKuduSuccess": "Lo script è stato eseguito in Kudu.",
+ "loc.messages.ScriptExecutionOnKuduFailed": "Il codice restituito dallo script eseguito è '%s'. Errore: %s",
+ "loc.messages.FailedtoDeleteFileFromKudu": "Non è possibile eliminare il file %s da Kudu (%s). Codice di stato: %s",
+ "loc.messages.FailedtoDeleteFileFromKuduError": "Non è possibile eliminare il file %s da Kudu (%s). Errore: %s",
+ "loc.messages.ScriptFileNotFound": "Il file di script '%s' non è stato trovato.",
+ "loc.messages.InvalidScriptFile": "Il file di script specificato '%s' non è valido. Le estensioni valide sono bat e cmd per Windows e sh per Linux",
+ "loc.messages.RetryForTimeoutIssue": "L'esecuzione dello script non è riuscita a causa del timeout. Verrà effettuato un nuovo tentativo.",
+ "loc.messages.stdoutFromScript": "Output standard dello script: ",
+ "loc.messages.stderrFromScript": "Errore standard dello script: ",
+ "loc.messages.WebConfigAlreadyExists": "Il file Web.config esiste già e non verrà generato.",
+ "loc.messages.SuccessfullyGeneratedWebConfig": "Il file Web.config è stato generato",
+ "loc.messages.FailedToGenerateWebConfig": "Non è stato possibile generare il file Web.config. %s",
+ "loc.messages.FailedToGetKuduFileContent": "Non è possibile recuperare il contenuto del file: %s. Codice di stato: %s (%s)",
+ "loc.messages.FailedToGetKuduFileContentError": "Non è possibile recuperare il contenuto del file: %s. Errore: %s",
+ "loc.messages.ScriptStatusTimeout": "Non è possibile recuperare lo stato dello script a causa del timeout.",
+ "loc.messages.PollingForFileTimeOut": "Non è possibile recuperare lo stato dello script a causa del timeout. È possibile aumentare il limite di timeout impostando la variabile 'appservicedeploy.retrytimeout' sul numero di minuti necessari.",
+ "loc.messages.InvalidPollOption": "L'opzione di polling specificata %s non è valida.",
+ "loc.messages.MissingAppTypeWebConfigParameters": "Nei parametri di Web.config manca l'attributo '-appType'. I valori validi per '-appType' sono: 'python_Bottle', 'python_Django', 'python_Flask', 'node' e 'Go'. Esempio: '-appType python_Bottle' (senza virgolette) nel caso del framework Python Bottle.",
+ "loc.messages.AutoDetectDjangoSettingsFailed": "Il percorso del file 'settings.py' di DJANGO_SETTINGS_MODULE non è stato rilevato. Assicurarsi che il file 'settings.py' sia esistente oppure specificare il percorso corretto nel campo di input del parametro di Web.config nel formato seguente: '-DJANGO_SETTINGS_MODULE .settings'",
+ "loc.messages.FailedToApplyTransformation": "Non è possibile applicare la trasformazione per il pacchetto specificato. Eseguire le verifiche seguenti.",
+ "loc.messages.FailedToApplyTransformationReason1": "1. Verificare se la trasformazione è già stata applicata per il pacchetto generato da MSBuild durante la compilazione. In caso affermativo, rimuovere il tag per ogni file config nel file csproj e ricompilare. ",
+ "loc.messages.FailedToApplyTransformationReason2": "2. Assicurarsi che il file config e i file di trasformazione siano presenti nella stessa cartella all'interno del pacchetto.",
+ "loc.messages.AutoParameterizationMessage": "Per impostazione predefinita, agli attributi di ConnectionString in Web.config sono associati parametri. Si noti che la trasformazione non ha effetto sugli attributi di ConnectionString perché durante la distribuzione il valore viene sostituito dai file 'Parameters.xml' o 'SetParameters.xml'. Per disabilitare l'aggiunta automatica di parametri, impostare /p:AutoParameterizationWebConfigConnectionStrings=False durante la generazione del pacchetto MSBuild.",
+ "loc.messages.UnsupportedAppType": "Il tipo di app '%s' non è supportato nella generazione di Web.config. I valori validi per '-appType' sono: 'python_Bottle', 'python_Django', 'python_Flask' e 'node'",
+ "loc.messages.UnableToFetchAuthorityURL": "Non è possibile recuperare l'URL dell'autorità.",
+ "loc.messages.UnableToFetchActiveDirectory": "Non è possibile recuperare l'ID risorsa di Active Directory.",
+ "loc.messages.SuccessfullyUpdatedRuntimeStackAndStartupCommand": "Lo stack di runtime e il comando di avvio sono stati aggiornati.",
+ "loc.messages.FailedToUpdateRuntimeStackAndStartupCommand": "Non è stato possibile aggiornare lo stack di runtime e il comando di avvio. Errore: %s.",
+ "loc.messages.SuccessfullyUpdatedWebAppSettings": "Le impostazioni dell'app sono state aggiornate.",
+ "loc.messages.FailedToUpdateAppSettingsInConfigDetails": "Non è stato possibile aggiornare le impostazioni dell'app. Errore: %s.",
+ "loc.messages.UnableToGetAzureRMWebAppMetadata": "Non è stato possibile recuperare i metadati dell'app Web AzureRM. Codice errore: %s",
+ "loc.messages.UnableToUpdateAzureRMWebAppMetadata": "Non è possibile aggiornare i metadati dell'app Web di AzureRM. Codice errore: %s",
+ "loc.messages.Unabletoretrieveazureregistrycredentials": "Non è possibile recuperare le credenziali di Registro Azure Container. [Codice di stato: '%s']",
+ "loc.messages.UnableToReadResponseBody": "Non è possibile leggere il corpo della risposta. Errore: %s",
+ "loc.messages.UnableToUpdateWebAppConfigDetails": "Non è possibile aggiornare i dettagli di configurazione dell'app Web. Codice di stato: '%s'",
+ "loc.messages.AddingReleaseAnnotation": "Aggiunta dell'annotazione versione per la risorsa '%s' di Application Insights",
+ "loc.messages.SuccessfullyAddedReleaseAnnotation": "L'annotazione versione è stata aggiunta alla risorsa di Application Insights: %s",
+ "loc.messages.FailedAddingReleaseAnnotation": "Non è stato possibile aggiungere l'annotazione versione. %s",
+ "loc.messages.RenameLockedFilesEnabled": "La ridenominazione dei file bloccati è abilitata per il servizio app.",
+ "loc.messages.FailedToEnableRenameLockedFiles": "Non è stato possibile abilitare la ridenominazione de file bloccati. Errore: %s",
+ "loc.messages.WebJobsInProgressIssue": "Qualche processo Web nello stato in esecuzione impedisce alla distribuzione di rimuovere i file. È possibile disabilitare l'opzione 'Rimuovi file aggiuntivi nella destinazione' oppure arrestare i processi continui prima della distribuzione.",
+ "loc.messages.FailedToFetchKuduAppSettings": "Non è stato possibile recuperare le impostazioni dell'app Kudu. Errore: %s",
+ "loc.messages.FailedToCreatePath": "Non è stato possibile creare il percorso '%s' da Kudu. Errore: %s",
+ "loc.messages.FailedToDeleteFile": "Non è stato possibile eliminare il file '%s/%s' da Kudu. Errore: %s",
+ "loc.messages.FailedToDeleteFolder": "Non è stato possibile eliminare la cartella '%s' da Kudu. Errore: %s",
+ "loc.messages.FailedToUploadFile": "Non è stato possibile caricare il file '%s/%s' da Kudu. Errore: %s",
+ "loc.messages.FailedToGetFileContent": "Non è stato possibile ottenere il contenuto '%s/%s' del file da Kudu. Errore: %s",
+ "loc.messages.FailedToListPath": "Non è stato possibile elencare il percorso '%s' da Kudu. Errore: %s",
+ "loc.messages.RetryToDeploy": "Verrà effettuato un nuovo tentativo di distribuzione del pacchetto.",
+ "loc.messages.FailedToGetAppServiceDetails": "Non è stato possibile recuperare i dettagli del servizio app '%s'. Errore: %s",
+ "loc.messages.FailedToGetAppServicePublishingProfile": "Non è stato possibile recuperare il profilo di pubblicazione del servizio app '%s'. Errore: %s",
+ "loc.messages.FailedToUpdateAppServiceMetadata": "Non è stato possibile aggiornare i metadati del servizio app '%s'. Errore: %s",
+ "loc.messages.FailedToGetAppServiceMetadata": "Non è stato possibile ottenere i metadati del servizio app '%s'. Errore: %s",
+ "loc.messages.FailedToPatchAppServiceConfiguration": "Non è stato possibile correggere la configurazione del servizio app '%s'. Errore: %s",
+ "loc.messages.FailedToUpdateAppServiceConfiguration": "Non è stato possibile aggiornare la configurazione del servizio app '%s'. Errore: %s",
+ "loc.messages.FailedToGetAppServiceConfiguration": "Non è stato possibile ottenere la configurazione del servizio app '%s'. Errore: %s",
+ "loc.messages.FailedToGetAppServicePublishingCredentials": "Non è stato possibile recuperare le credenziali di pubblicazione del servizio app '%s'. Errore: %s",
+ "loc.messages.FailedToGetAppServiceApplicationSettings": "Non è stato possibile ottenere le impostazioni applicazione del servizio app '%s'. Errore: %s",
+ "loc.messages.FailedToUpdateAppServiceApplicationSettings": "Non è stato possibile aggiornare le impostazioni applicazione del servizio app '%s'. Errore: %s",
+ "loc.messages.UpdatingAppServiceConfigurationSettings": "Tentativo di aggiornamento delle impostazioni di configurazione del servizio app. Dati: %s",
+ "loc.messages.UpdatedAppServiceConfigurationSettings": "Le impostazioni di configurazione del servizio app sono state aggiornate.",
+ "loc.messages.UpdatingAppServiceApplicationSettings": "Tentativo di aggiornamento delle impostazioni applicazione del servizio app. Dati: %s",
+ "loc.messages.AppServiceApplicationSettingsAlreadyPresent": "Le impostazioni applicazione del servizio app sono già presenti.",
+ "loc.messages.AppServiceConnectionStringsAlreadyPresent": "Le stringhe di connessione del servizio app sono già presenti.",
+ "loc.messages.UpdatedAppServiceApplicationSettings": "Le impostazioni applicazione del servizio app e le impostazioni applicazione di Kudu sono state aggiornate.",
+ "loc.messages.MultipleResourceGroupFoundForAppService": "Sono stati trovati più gruppi di risorse per il servizio app '%s'.",
+ "loc.messages.PackageDeploymentUsingZipDeployFailed": "La distribuzione del pacchetto con zipdeploy non è riuscita. Per maggiori dettagli, vedere i log.",
+ "loc.messages.PackageDeploymentInitiated": "La distribuzione del pacchetto con zipdeploy è stata avviata.",
+ "loc.messages.WarPackageDeploymentInitiated": "La distribuzione del pacchetto con WAR Deploy è stata avviata.",
+ "loc.messages.FailedToGetDeploymentLogs": "Non è stato possibile ottenere i log di distribuzione. Errore: %s",
+ "loc.messages.GoExeNameNotPresent": "Il nome dell'eseguibile Go non è presente",
+ "loc.messages.WarDeploymentRetry": "Verrà effettuato un nuovo tentativo di distribuzione del file WAR perché in precedenza non si è espanso correttamente.",
+ "loc.messages.Updatemachinetoenablesecuretlsprotocol": "Assicurarsi che il computer usi il protocollo TLS 1.2 o superiore. Per altre informazioni su come abilitare TLS nel computer, vedere https://aka.ms/enableTlsv2.",
+ "loc.messages.CouldNotFetchAccessTokenforAzureStatusCode": "Non è stato possibile recuperare il token di accesso per Azure. Codice di stato: %s. Messaggio di stato: %s",
+ "loc.messages.CouldNotFetchAccessTokenforMSIDueToMSINotConfiguredProperlyStatusCode": "Non è stato possibile recuperare il token di accesso per l'entità servizio gestita. Configurare l'identità del servizio gestita per la macchina virtuale 'https://aka.ms/azure-msi-docs'. Codice di stato: %s. Messaggio di stato: %s",
+ "loc.messages.CouldNotFetchAccessTokenforMSIStatusCode": "Non è stato possibile recuperare il token di accesso per l'entità servizio gestita. Codice di stato: %s. Messaggio di stato: %s",
+ "loc.messages.XmlParsingFailed": "Non è possibile analizzare il file XML del profilo di pubblicazione. Errore: %s",
+ "loc.messages.PropertyDoesntExistPublishProfile": "[%s] La proprietà non esiste nel profilo di pubblicazione",
+ "loc.messages.InvalidConnectionType": "Il tipo di connessione al servizio non è valido",
+ "loc.messages.InvalidImageSourceType": "Il tipo di origine immagini non è valido",
+ "loc.messages.InvalidPublishProfile": "Il file del profilo di pubblicazione non è valido.",
+ "loc.messages.ASE_SSLIssueRecommendation": "Per usare un certificato nel servizio app, il certificato deve essere firmato da un'autorità di certificazione attendibile. Se l'app Web restituisce errori di convalida del certificato, è possibile che si stia usando un certificato autofirmato. Per risolvere gli errori, è necessario impostare su true una variabile denominata VSTS_ARM_ARM_REST_IGNORE_SSL_ERRORS nella pipeline di compilazione o versione",
+ "loc.messages.ZipDeployLogsURL": "I log di zipdeploy possono essere visualizzati in %s",
+ "loc.messages.DeployLogsURL": "I log di distribuzione possono essere visualizzati in %s",
+ "loc.messages.AppServiceApplicationURL": "URL dell'applicazione del servizio app: %s",
+ "loc.messages.ASE_WebDeploySSLIssueRecommendation": "Per usare un certificato nel servizio app, il certificato deve essere firmato da un'autorità di certificazione attendibile. Se l'app Web restituisce errori di convalida del certificato, è possibile che si stia usando un certificato autofirmato. Per risolvere gli errori, è necessario passare -allowUntrusted negli argomenti aggiuntivi dell'opzione di distribuzione Web.",
+ "loc.messages.FailedToGetResourceID": "Non è stato possibile ottenere l'ID risorsa per il tipo di risorsa '%s' e il nome di risorsa '%s'. Errore: %s",
+ "loc.messages.JarPathNotPresent": "Il percorso del file jar Java non è presente",
+ "loc.messages.FailedToUpdateApplicationInsightsResource": "Non è stato possibile aggiornare la risorsa '%s' di Application Insights. Errore: %s",
+ "loc.messages.RunFromZipPreventsFileInUseError": "Passare da Distribuzione Web a Run From Package, che consente di evitare errori FILE_IN_USE. Tenere presente che Run From Package non supporta il tipo di pacchetto msBuild. Per usare questo metodo di distribuzione, modificare il formato del pacchetto."
+}
\ No newline at end of file
diff --git a/_generated/AzureRmWebAppDeploymentV4/Strings/resources.resjson/ja-JP/resources.resjson b/_generated/AzureRmWebAppDeploymentV4/Strings/resources.resjson/ja-JP/resources.resjson
new file mode 100644
index 000000000000..c363ab7cf9cb
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/Strings/resources.resjson/ja-JP/resources.resjson
@@ -0,0 +1,229 @@
+{
+ "loc.friendlyName": "Azure App Service デプロイ",
+ "loc.helpMarkDown": "[このタスクの詳細を表示](https://aka.ms/azurermwebdeployreadme)",
+ "loc.description": "Docker、Java、.NET、.NET Core、Node.js、PHP、Python、Ruby を使用して、Web、モバイル、API アプリを Azure App Service にデプロイします",
+ "loc.instanceNameFormat": "Azure App Service の配置: $(WebAppName)",
+ "loc.releaseNotes": "バージョン 4.* での変更点 Zip Deploy、Run From Package、War Deploy のサポート [詳細はこちら](https://aka.ms/appServiceDeploymentMethods) App Service Environment のサポート タスクによってサポートされる複数のアプリ サービス タイプを見つけるための、UI の向上 推奨されるデプロイ方法は、wwwroot フォルダー内のファイルが読み取り専用になる Run From Package です。 詳細については、[こちら](https://aka.ms/azurermwebdeployreadme)をクリックしてください。",
+ "loc.group.displayName.FileTransformsAndVariableSubstitution": "ファイルの変換と変数の置換のオプション",
+ "loc.group.displayName.AdditionalDeploymentOptions": "追加の配置オプション",
+ "loc.group.displayName.PostDeploymentAction": "配置後アクション",
+ "loc.group.displayName.ApplicationAndConfigurationSettings": "アプリケーションと構成の設定",
+ "loc.input.label.ConnectionType": "接続の種類",
+ "loc.input.help.ConnectionType": "Web アプリの配置に使用するサービス接続の種類を選択してください。 Visual Studio で作成された公開プロファイルを使用するには、[公開プロファイル] を選択します。[詳細情報](https://aka.ms/vsPublishProfile)。",
+ "loc.input.label.ConnectedServiceName": "Azure サブスクリプション",
+ "loc.input.help.ConnectedServiceName": "デプロイ用の Azure Resource Manager サブスクリプションを選択します。",
+ "loc.input.label.PublishProfilePath": "プロファイルのパスの公開",
+ "loc.input.help.PublishProfilePath": "Visual Studio から作成された公開プロファイルのパス",
+ "loc.input.label.PublishProfilePassword": "プロファイルのパスワードの公開",
+ "loc.input.help.PublishProfilePassword": "パスワードは秘密の変数に保管し、ここではその変数を使用することをお勧めします。例: $(Password)。",
+ "loc.input.label.WebAppKind": "App Service の種類",
+ "loc.input.help.WebAppKind": "Web App on Windows、Web App on Linux、Web App for Containers、関数アプリ、Linux 上の 関数アプリ、コンテナー向け 関数アプリ、モバイル アプリから選択します。",
+ "loc.input.label.WebAppName": "App Service の名前",
+ "loc.input.help.WebAppName": "既存の Azure App Service の名前を入力するか、選択します。選択するアプリの種類に基づく App Service のみが一覧表示されます。",
+ "loc.input.label.DeployToSlotOrASEFlag": "スロットまたは App Service Environment に配置する",
+ "loc.input.help.DeployToSlotOrASEFlag": "既存の配置スロットまたは Azure App Service Environment に配置するためのオプションを選択します。 どちらのターゲットでも、タスクにはリソース グループ名が必要です。 配置ターゲットがスロットの場合、配置は既定で運用スロットに実施されます。他の既存のスロット名を指定することもできます。 配置ターゲットが Azure App Service Environment の場合、スロット名を 'production' のままにして、リソース グループ名だけを指定します。",
+ "loc.input.label.ResourceGroupName": "リソース グループ",
+ "loc.input.help.ResourceGroupName": "配置ターゲットが配置スロットまたは App Service Environment の場合、リソース グループ名が必要です。 上記で指定された Azure App Service を含む Azure リソース グループを入力するか選択します。",
+ "loc.input.label.SlotName": "スロット",
+ "loc.input.help.SlotName": "運用スロット以外の既存のスロットを入力または選択してください。",
+ "loc.input.label.DockerNamespace": "レジストリまたは名前空間",
+ "loc.input.help.DockerNamespace": "特定のレジストリまたは名前空間をグローバルに識別する一意の最上位ドメイン名です。 メモ: 完全修飾イメージ名の形式は '`<レジストリまたは名前空間`>/`<リポジトリ`>:`<タグ`>' です。例: 'myregistry.azurecr.io/nginx:latest'。",
+ "loc.input.label.DockerRepository": "イメージ",
+ "loc.input.help.DockerRepository": "コンテナー イメージが格納されるリポジトリの名前です。 メモ: 完全修飾イメージ名の形式は '`<レジストリまたは名前空間`>/`<リポジトリ`>:`<タグ`>' です。例: 'myregistry.azurecr.io/nginx:latest'。",
+ "loc.input.label.DockerImageTag": "タグ",
+ "loc.input.help.DockerImageTag": "タグは省略可能です。これは、レジストリで Docker イメージにバージョンを付けるために使う機構です。 メモ: 完全修飾イメージ名の形式は '`/`:`' です。例: 'myregistry.azurecr.io/nginx:latest'。",
+ "loc.input.label.VirtualApplication": "仮想アプリケーション",
+ "loc.input.help.VirtualApplication": "Azure Portal に構成された仮想アプリケーションの名前を指定します。App Service ルートに配置する場合には、このオプションは不要です。",
+ "loc.input.label.Package": "パッケージまたはフォルダー",
+ "loc.input.help.Package": "MSBuild で生成されたアプリ サービスのコンテンツが入ったパッケージまたはフォルダー、あるいは圧縮された zip または war ファイルへのファイル パス。 変数 ([ビルド](https://docs.microsoft.com/vsts/pipelines/build/variables) |[リリース](https://docs.microsoft.com/vsts/pipelines/release/variables#default-variables))、ワイルドカードを使用できます。 たとえば、$(System.DefaultWorkingDirectory)/\\*\\*/\\*.zip または $(System.DefaultWorkingDirectory)/\\*\\*/\\*.war。",
+ "loc.input.label.RuntimeStack": "ランタイム スタック",
+ "loc.input.help.RuntimeStack": "フレームワークとバージョンを選択します。",
+ "loc.input.label.RuntimeStackFunction": "ランタイム スタック",
+ "loc.input.help.RuntimeStackFunction": "フレームワークとバージョンを選択します。サポートされているランタイム バージョンについては、[こちらのドキュメント](https://docs.microsoft.com/azure/azure-functions/functions-versions#languages)をご覧ください。`DOCKER|microsoft/azure-functions-*` などの前の値は非推奨であるため、ドロップダウンから新しい値をお使いください。",
+ "loc.input.label.StartupCommand": "スタートアップ コマンド ",
+ "loc.input.help.StartupCommand": "スタートアップ コマンドを入力してください。例: dotnet exec filename.dll dotnet filename.dll",
+ "loc.input.label.ScriptType": "配置スクリプトの種類",
+ "loc.input.help.ScriptType": "タスクで配置が正常に完了したときに Azure App Service 上で実行されるスクリプトを提供して、配置をカスタマイズします。たとえば、Node、PHP、Python アプリケーション用のパッケージを復元します。[詳細](https://go.microsoft.com/fwlink/?linkid=843471)。",
+ "loc.input.label.InlineScript": "インライン スクリプト",
+ "loc.input.label.ScriptPath": "配置スクリプトのパス",
+ "loc.input.label.WebConfigParameters": "Python、Node.js、Go、Java アプリ向けの web.config パラメーターを生成する",
+ "loc.input.help.WebConfigParameters": "アプリケーションに web.config がない場合は、標準の web.config が生成され、Azure App Service に配置されます。web.config 内の値は編集可能で、アプリケーション フレームワークに基づいて変えることができます。たとえば、node.js アプリケーションの場合、スタートアップ ファイルと iis_node モジュールの値を web.config 内に設定します。この編集機能は、生成される web.config のためにのみ使用できます。[詳細情報](https://go.microsoft.com/fwlink/?linkid=843469)。",
+ "loc.input.label.AppSettings": "アプリ設定",
+ "loc.input.help.AppSettings": "構文 -key value の後に続く Web App アプリケーションの設定を編集します。スペースが含まれる値は二重引用符で囲む必要があります。 例: -Port 5000 -RequestTimeout 5000 -WEBSITE_TIME_ZONE \"Eastern Standard Time\"",
+ "loc.input.label.ConfigurationSettings": "構成設定",
+ "loc.input.help.ConfigurationSettings": "構文 -key value の後に続く Web App 構成の設定を編集します。スペースが含まれる値は、二重引用符で囲む必要があります。 例: -phpVersion 5.6 -linuxFxVersion: node|6.11",
+ "loc.input.label.UseWebDeploy": "配置方法を選択する",
+ "loc.input.help.UseWebDeploy": "チェック ボックスをオフにすると、アプリの種類、パッケージ形式、その他のパラメーターに基づいて最適な配置方法が自動的に検出されます。 サポートされる配置方法を確認して、アプリの配置に使用する方法を選択するには、オプションを選択してください。",
+ "loc.input.label.DeploymentType": "配置方法",
+ "loc.input.help.DeploymentType": "アプリの配置方法を選択します。",
+ "loc.input.label.TakeAppOfflineFlag": "アプリをオフラインにする",
+ "loc.input.help.TakeAppOfflineFlag": "Azure App Service をオフラインにする場合、このオプションを選択します。オフラインにするには、同期操作を開始する前に App Service のルート ディレクトリに app_offline.htm ファイルを配置します。このファイルは、同期操作が正常に完了すると削除されます。",
+ "loc.input.label.SetParametersFile": "SetParameters ファイル",
+ "loc.input.help.SetParametersFile": "省略可能: 使用する SetParameters.xml ファイルの場所。",
+ "loc.input.label.RemoveAdditionalFilesFlag": "ターゲットで追加ファイルを削除する",
+ "loc.input.help.RemoveAdditionalFilesFlag": "App Service パッケージまたはフォルダー内に一致するファイルがない Azure App Service 上のファイルを削除する場合、このオプションを選択します。
メモ: 置換では、パイプライン変数は除外されます。",
+ "loc.messages.Invalidwebapppackageorfolderpathprovided": "無効な App Service パッケージまたはフォルダー パスが指定されました: %s",
+ "loc.messages.SetParamFilenotfound0": "Set パラメーター ファイルが見つかりません: %s",
+ "loc.messages.XDTTransformationsappliedsuccessfully": "XML 変換が正常に適用されました",
+ "loc.messages.GotconnectiondetailsforazureRMWebApp0": "Azure App Service のサービス接続の詳細を取得しました: '%s'",
+ "loc.messages.ErrorNoSuchDeployingMethodExists": "エラー: そのような配置方法はありません",
+ "loc.messages.UnabletoretrieveconnectiondetailsforazureRMWebApp": "Azure App Service のサービス接続の詳細を取得できません: %s。状態コード: %s (%s)",
+ "loc.messages.UnabletoretrieveResourceID": "Azure Resource のサービス接続の詳細を取得できません: '%s'。状態コード: %s",
+ "loc.messages.Successfullyupdateddeploymenthistory": "配置履歴が %s で正常に更新されました",
+ "loc.messages.Failedtoupdatedeploymenthistory": "配置履歴を更新できませんでした。エラー: %s",
+ "loc.messages.WARNINGCannotupdatedeploymentstatusSCMendpointisnotenabledforthiswebsite": "警告: 配置状態を更新できません: この Web サイトでは SCM エンドポイントが有効になっていません",
+ "loc.messages.Unabletoretrievewebconfigdetails": "App Service の構成の詳細を取得できません。状態コード: '%s'",
+ "loc.messages.Unabletoretrievewebappsettings": "App Service のアプリケーションの設定を取得できません。[状態コード: '%s'、エラー メッセージ: '%s']",
+ "loc.messages.Unabletoupdatewebappsettings": "App Service のアプリケーションの設定を更新できません。状態コード: '%s'",
+ "loc.messages.CannotupdatedeploymentstatusuniquedeploymentIdCannotBeRetrieved": "配置の状態を更新できません: 一意の配置 ID を取得できません",
+ "loc.messages.PackageDeploymentSuccess": "Web パッケージを App Service に正常に配置できました。",
+ "loc.messages.PackageDeploymentFailed": "Web パッケージを App Service に配置できませんでした。",
+ "loc.messages.Runningcommand": "コマンドを実行しています: %s",
+ "loc.messages.Deployingwebapplicationatvirtualpathandphysicalpath": "Web パッケージ: %s を仮想パス (物理パス) へ配置しています: %s (%s)",
+ "loc.messages.Successfullydeployedpackageusingkuduserviceat": "kudu サービスにより、パッケージ %s が %s に配置されました",
+ "loc.messages.Failedtodeploywebapppackageusingkuduservice": "Kudu サービスを使用して App Service パッケージをデプロイできませんでした: %s",
+ "loc.messages.Unabletodeploywebappresponsecode": "エラー コードにより、App Service を配置できません: %s",
+ "loc.messages.MSDeploygeneratedpackageareonlysupportedforWindowsplatform": "MSDeploy が生成したパッケージは Windows プラットフォームでのみサポートされます。",
+ "loc.messages.UnsupportedinstalledversionfoundforMSDeployversionshouldbeatleast3orabove": "MSDeploy のサポートされていないバージョン: %s がインストールされています。バージョンは 3 以降である必要があります",
+ "loc.messages.UnabletofindthelocationofMSDeployfromregistryonmachineError": "コンピューター上のレジストリから、MS Deploy の場所を特定できません (エラー: %s)",
+ "loc.messages.Nopackagefoundwithspecifiedpattern": "指定されたパターン %s のパッケージが見つかりませんでした タスクに指定されているパッケージがビルドまたは前のステージで成果物として公開されており、現在のジョブにダウンロードされているかどうかをご確認ください。",
+ "loc.messages.MorethanonepackagematchedwithspecifiedpatternPleaserestrainthesearchpattern": "指定したパターンと一致するパッケージが複数あります: %s。検索パターンを絞り込んでください。",
+ "loc.messages.Trytodeploywebappagainwithappofflineoptionselected": "[アプリケーションをオフラインにする] オプションを選択して、もう一度 App Service を配置してください。",
+ "loc.messages.Trytodeploywebappagainwithrenamefileoptionselected": "[ロックされたファイルの名前を変更する] オプションを選択して、もう一度 App Service を配置してください。",
+ "loc.messages.NOJSONfilematchedwithspecificpattern": "指定のパターンと一致する JSON ファイルはありません: %s。",
+ "loc.messages.Configfiledoesntexists": "構成ファイル %s がありません。",
+ "loc.messages.Failedtowritetoconfigfilewitherror": "構成ファイル %s への書き込みに失敗しました。エラー: %s",
+ "loc.messages.AppOfflineModeenabled": "アプリのオフライン モードが有効です。",
+ "loc.messages.Failedtoenableappofflinemode": "アプリのオフライン モードを有効にできませんでした。状態コード: %s (%s)",
+ "loc.messages.AppOflineModedisabled": "アプリのオフライン モードが無効です。",
+ "loc.messages.FailedtodisableAppOfflineMode": "アプリのオフライン モードを無効にできませんでした。状態コード: %s (%s)",
+ "loc.messages.CannotPerformXdtTransformationOnNonWindowsPlatform": "非 Windows プラットフォームでは XML 変換を実行できません。",
+ "loc.messages.XdtTransformationErrorWhileTransforming": "%s の %s による変換中に XML 変換エラーが発生しました。",
+ "loc.messages.PublishusingwebdeployoptionsaresupportedonlywhenusingWindowsagent": "Web 配置オプションによる公開は、Windows エージェントを使用している場合のみサポートされます",
+ "loc.messages.Publishusingzipdeploynotsupportedformsbuildpackage": "zip 配置オプションによる公開は、msBuild パッケージの種類ではサポートされていません。",
+ "loc.messages.Publishusingzipdeploynotsupportedforvirtualapplication": "zip 配置オプションによる公開は、仮想アプリケーションではサポートされていません。",
+ "loc.messages.Publishusingzipdeploydoesnotsupportwarfile": "zip 配置または RunFromZip オプションによる公開は、war ファイルの配置をサポートしていません。",
+ "loc.messages.Publishusingrunfromzipwithpostdeploymentscript": "フォルダーが ReadOnly のため、RunFromZip による公開は、wwwroot に変更を加える場合は配置後スクリプトをサポートしない可能性があります。",
+ "loc.messages.ResourceDoesntExist": "リソース '%s' がありません。リソースは配置前に存在している必要があります。",
+ "loc.messages.EncodeNotSupported": "ファイル %s のファイル エンコードが %s として検出されました。ファイル エンコード %s では変数置換はサポートされていません。サポートされているエンコードは UTF-8 と UTF-16 LE です。",
+ "loc.messages.UnknownFileEncodeError": "ファイル %s (typeCode: %s) のエンコードを検出できません。サポートされているエンコードは UTF-8 および UTF-16 LE です。",
+ "loc.messages.ShortFileBufferError": "ファイル バッファーが短すぎてエンコードの種類を検出できません: %s",
+ "loc.messages.FailedToUpdateAzureRMWebAppConfigDetails": "App Service 構成の詳細を更新できませんでした。エラー: %s",
+ "loc.messages.SuccessfullyUpdatedAzureRMWebAppConfigDetails": "App Service 構成の詳細が正常に更新されました",
+ "loc.messages.RequestedURLforkuduphysicalpath": "Kudu 物理パスに関して URL が要求されました: %s",
+ "loc.messages.Physicalpathalreadyexists": "物理パス '%s' は既に存在しています",
+ "loc.messages.KuduPhysicalpathCreatedSuccessfully": "Kudu 物理パスが正常に作成されました: %s",
+ "loc.messages.FailedtocreateKuduPhysicalPath": "Kudu 物理パスを作成することができませんでした。エラー: %s",
+ "loc.messages.FailedtocheckphysicalPath": "Kudu 物理パスを確認できませんでした。エラー コード: %s",
+ "loc.messages.VirtualApplicationDoesNotExist": "仮想アプリケーションがありません: %s",
+ "loc.messages.JSONParseError": "JSON ファイルを解析できません: %s。エラー: %s",
+ "loc.messages.JSONvariablesubstitutionappliedsuccessfully": "JSON 変数置換が正常に適用されました。",
+ "loc.messages.XMLvariablesubstitutionappliedsuccessfully": "XML 変数の置換が正常に適用されました。",
+ "loc.messages.failedtoUploadFileToKudu": "ファイル %s を Kudu (%s) にアップロードできません。状態コード: %s",
+ "loc.messages.failedtoUploadFileToKuduError": "ファイル %s を Kudu (%s) にアップロードできません。エラー: %s",
+ "loc.messages.ExecuteScriptOnKudu": "指定されたスクリプトを Kudu サービス上で実行しています。",
+ "loc.messages.FailedToRunScriptOnKuduError": "スクリプトを Kudu サービス上で実行できません。エラー: %s",
+ "loc.messages.FailedToRunScriptOnKudu": "スクリプトを Kudu (%s) 上で実行できません。状態コード: %s",
+ "loc.messages.ScriptExecutionOnKuduSuccess": "スクリプトを Kudu 上で正常に実行できました。",
+ "loc.messages.ScriptExecutionOnKuduFailed": "実行したスクリプトからリターン コードとして '%s' が返されました。エラー: %s",
+ "loc.messages.FailedtoDeleteFileFromKudu": "ファイル %s を Kudu (%s) から削除できません。状態コード: %s",
+ "loc.messages.FailedtoDeleteFileFromKuduError": "ファイル %s を Kudu (%s) から削除できません。エラー: %s",
+ "loc.messages.ScriptFileNotFound": "スクリプト ファイル '%s' が見つかりません。",
+ "loc.messages.InvalidScriptFile": "無効なスクリプト ファイル '%s' が指定されました。有効な拡張子は、Windows の場合は .bat と .cmd、Linux の場合は .sh です",
+ "loc.messages.RetryForTimeoutIssue": "タイムアウトの問題でスクリプトを実行できませんでした。もう一度お試しください。",
+ "loc.messages.stdoutFromScript": "スクリプトからの標準出力: ",
+ "loc.messages.stderrFromScript": "スクリプトからの標準エラー出力: ",
+ "loc.messages.WebConfigAlreadyExists": "web.config ファイルは既に存在します。生成しません。",
+ "loc.messages.SuccessfullyGeneratedWebConfig": "web.config ファイルを正常に生成できました",
+ "loc.messages.FailedToGenerateWebConfig": "web.config を生成できませんでした。%s",
+ "loc.messages.FailedToGetKuduFileContent": "ファイルの内容を取得できません: %s。状態コード: %s (%s)",
+ "loc.messages.FailedToGetKuduFileContentError": "ファイルの内容を取得できません: %s。エラー: %s",
+ "loc.messages.ScriptStatusTimeout": "タイムアウトのため、スクリプトの状態をフェッチできません。",
+ "loc.messages.PollingForFileTimeOut": "タイムアウトのため、スクリプトの状態をフェッチできません。タイムアウト制限を延長するには、'appservicedeploy.retrytimeout' 変数を必要な時間 (分) に設定します。",
+ "loc.messages.InvalidPollOption": "指定されたポーリング オプションが無効です: %s。",
+ "loc.messages.MissingAppTypeWebConfigParameters": "属性 '-appType' が Web.config パラメーターにありません。'-appType' に対して有効な値は、'python_Bottle'、'python_Django'、'python_Flask'、'node'、'Go' です。 たとえば、Python Bottle フレームワークの場合は、'-appType python_Bottle' (sans-quotes) を指定します。",
+ "loc.messages.AutoDetectDjangoSettingsFailed": "DJANGO_SETTINGS_MODULE の 'settings.py' ファイル パスを検出できません。'settings.py' ファイルが存在することを確認するか、次の形式で Web.config パラメーター入力に正しいパスを指定してください: '-DJANGO_SETTINGS_MODULE .settings'",
+ "loc.messages.FailedToApplyTransformation": "指定されたパッケージに変換を適用することはできません。次の点をご確認ください。",
+ "loc.messages.FailedToApplyTransformationReason1": "1. ビルド中、MSBuild によって生成されたパッケージに対して変換が既に適用されたかどうか。適用された場合は、csproj ファイル内の各構成の タグを削除してから、リビルドします。",
+ "loc.messages.FailedToApplyTransformationReason2": "2. 構成ファイルと変換ファイルがパッケージ内の同じフォルダーに存在すること。",
+ "loc.messages.AutoParameterizationMessage": "Web.config の ConnectionString 属性は既定でパラメーター化されています。'Parameters.xml' ファイルまたは 'SetParameters.xml' ファイルによって値が配置中に上書きされるため、変換が connectionString 属性に影響を与えることはありません。自動パラメーター化は、MSBuild パッケージの生成中に /p:AutoParameterizationWebConfigConnectionStrings=False のように設定することによって無効にできます。",
+ "loc.messages.UnsupportedAppType": "アプリの種類 '%s' が Web.config 生成でサポートされていません。'-appType' に対して有効な値は、'python_Bottle'、'python_Django'、'python_Flask'、'node' です。",
+ "loc.messages.UnableToFetchAuthorityURL": "機関の URL をフェッチできません。",
+ "loc.messages.UnableToFetchActiveDirectory": "Active Directory リソース ID をフェッチできません。",
+ "loc.messages.SuccessfullyUpdatedRuntimeStackAndStartupCommand": "ランタイム スタックとスタートアップ コマンドが正常に更新されました。",
+ "loc.messages.FailedToUpdateRuntimeStackAndStartupCommand": "ランタイム スタックとスタートアップ コマンドの更新に失敗しました。エラー: %s。",
+ "loc.messages.SuccessfullyUpdatedWebAppSettings": "アプリの設定が正常に更新されました。",
+ "loc.messages.FailedToUpdateAppSettingsInConfigDetails": "アプリ設定の更新に失敗しました。エラー: %s。",
+ "loc.messages.UnableToGetAzureRMWebAppMetadata": "AzureRM WebApp メタデータをフェッチできませんでした。ErrorCode: %s",
+ "loc.messages.UnableToUpdateAzureRMWebAppMetadata": "AzureRM WebApp メタデータを更新できません。エラー コード: %s",
+ "loc.messages.Unabletoretrieveazureregistrycredentials": "Azure コンテナー レジストリの資格情報を取得できません。[状態コード: '%s']",
+ "loc.messages.UnableToReadResponseBody": "応答本文を読み取ることができません。エラー: %s",
+ "loc.messages.UnableToUpdateWebAppConfigDetails": "WebApp 構成の詳細を更新できません。StatusCode: '%s'",
+ "loc.messages.AddingReleaseAnnotation": "Application Insights リソース ’%s’ のリリース コメントを追加しています",
+ "loc.messages.SuccessfullyAddedReleaseAnnotation": "Application Insight にリリース コメントが正常に追加されました: %s",
+ "loc.messages.FailedAddingReleaseAnnotation": "リリース コメントを追加できませんでした。%s",
+ "loc.messages.RenameLockedFilesEnabled": "App Service で [ロックされたファイルの名前を変更する] が有効です。",
+ "loc.messages.FailedToEnableRenameLockedFiles": "[ロックされたファイルの名前を変更する] を有効にできませんでした。エラー: %s",
+ "loc.messages.WebJobsInProgressIssue": "実行状態の Web ジョブが少数あるため、配置でファイルを削除できません。[Remove additional files at destination] (同期先で追加のファイルを削除する) オプションを無効にするか、配置の前に継続ジョブを停止することができます。",
+ "loc.messages.FailedToFetchKuduAppSettings": "Kudu アプリ設定をフェッチできませんでした。エラー: %s",
+ "loc.messages.FailedToCreatePath": "Kudu からパス '%s' を作成することができませんでした。エラー: %s",
+ "loc.messages.FailedToDeleteFile": "Kudu からファイル '%s/%s' を削除することができませんでした。エラー: %s",
+ "loc.messages.FailedToDeleteFolder": "Kudu からフォルダー '%s' を削除できませんでした。エラー: %s",
+ "loc.messages.FailedToUploadFile": "Kudu からファイル '%s/%s' をアップロードできませんでした。エラー: %s",
+ "loc.messages.FailedToGetFileContent": "Kudu からファイル コンテンツ '%s/%s' を取得できませんでした。エラー: %s",
+ "loc.messages.FailedToListPath": "Kudu からパス '%s' の一覧を取得できませんでした。エラー: %s",
+ "loc.messages.RetryToDeploy": "パッケージの配置を再試行しています。",
+ "loc.messages.FailedToGetAppServiceDetails": "App Service '%s' の詳細をフェッチできませんでした。エラー: %s",
+ "loc.messages.FailedToGetAppServicePublishingProfile": "App Service '%s' の公開プロファイルをフェッチできませんでした。エラー: %s",
+ "loc.messages.FailedToUpdateAppServiceMetadata": "App Service '%s' のメタデータの更新に失敗しました。エラー: %s",
+ "loc.messages.FailedToGetAppServiceMetadata": "App Service '%s' のメタデータの取得に失敗しました。エラー: %s",
+ "loc.messages.FailedToPatchAppServiceConfiguration": "App Service '%s' の構成を修正できませんでした。エラー: %s",
+ "loc.messages.FailedToUpdateAppServiceConfiguration": "App Service '%s' 構成を更新できませんでした。エラー: %s",
+ "loc.messages.FailedToGetAppServiceConfiguration": "App Service '%s' 構成を取得できませんでした。エラー: %s",
+ "loc.messages.FailedToGetAppServicePublishingCredentials": "App Service '%s' の公開資格情報をフェッチできませんでした。エラー: %s",
+ "loc.messages.FailedToGetAppServiceApplicationSettings": "App Service '%s' アプリケーション設定を取得できませんでした。エラー: %s",
+ "loc.messages.FailedToUpdateAppServiceApplicationSettings": "App Service '%s' アプリケーション設定を更新できませんでした。エラー: %s",
+ "loc.messages.UpdatingAppServiceConfigurationSettings": "App Service 構成の設定を更新しようとしています。データ: %s",
+ "loc.messages.UpdatedAppServiceConfigurationSettings": "App Service 構成の設定が更新されました。",
+ "loc.messages.UpdatingAppServiceApplicationSettings": "App Service アプリケーションの設定を更新しようとしています。データ: %s",
+ "loc.messages.AppServiceApplicationSettingsAlreadyPresent": "App Service アプリケーション設定は既に存在します。",
+ "loc.messages.AppServiceConnectionStringsAlreadyPresent": "App Service 接続文字列は既に存在します。",
+ "loc.messages.UpdatedAppServiceApplicationSettings": "App Service アプリケーション設定と Kudu アプリケーション設定が更新されました。",
+ "loc.messages.MultipleResourceGroupFoundForAppService": "App Service '%s' に複数のリソース グループが見つかりました。",
+ "loc.messages.PackageDeploymentUsingZipDeployFailed": "ZIP 配置を使用したパッケージ配置に失敗しました。詳細についてはログを参照してください。",
+ "loc.messages.PackageDeploymentInitiated": "ZIP 配置を使用したパッケージ配置を開始しました。",
+ "loc.messages.WarPackageDeploymentInitiated": "WAR 配置を使用したパッケージ配置が開始しました。",
+ "loc.messages.FailedToGetDeploymentLogs": "配置ログを取得できませんでした。エラー: %s",
+ "loc.messages.GoExeNameNotPresent": "Go exe 名が存在しません",
+ "loc.messages.WarDeploymentRetry": "war ファイルは前回正常に展開されなかったため、展開を再試行しています。",
+ "loc.messages.Updatemachinetoenablesecuretlsprotocol": "マシンで TLS 1.2 プロトコル以上を使用していることを確認します。お使いのマシンで TLS を有効にする方法について詳しくは、https://aka.ms/enableTlsv2 をご確認ください。",
+ "loc.messages.CouldNotFetchAccessTokenforAzureStatusCode": "Azure 用のアクセス トークンをフェッチできませんでした。状態コード: %s、状態メッセージ: %s",
+ "loc.messages.CouldNotFetchAccessTokenforMSIDueToMSINotConfiguredProperlyStatusCode": "マネージド サービス プリンシパルのアクセス トークンをフェッチできませんでした。仮想マシンのマネージド サービス ID (MSI) を構成してください 'https://aka.ms/azure-msi-docs'。状態コード: %s、ステータス メッセージ: %s",
+ "loc.messages.CouldNotFetchAccessTokenforMSIStatusCode": "マネージド サービス プリンシパルのアクセス トークンをフェッチできませんでした。状態コード: %s、ステータス メッセージ: %s",
+ "loc.messages.XmlParsingFailed": "publishProfileXML ファイルを解析できません。エラー: %s",
+ "loc.messages.PropertyDoesntExistPublishProfile": "[%s] プロパティが公開プロファイル内に存在しません",
+ "loc.messages.InvalidConnectionType": "無効なサービス接続の種類",
+ "loc.messages.InvalidImageSourceType": "無効な画像ソースの種類",
+ "loc.messages.InvalidPublishProfile": "公開プロファイルのファイルが無効です。",
+ "loc.messages.ASE_SSLIssueRecommendation": "App Service で証明書を使用するには、証明書が信頼された証明機関によって署名されている必要があります。Web アプリで証明書の検証エラーが出る場合は、自己署名証明書を使用している可能性があり、それを解決するには、VSTS_ARM_REST_IGNORE_SSL_ERRORS という名前の変数の値をビルド定義またはリリース パイプラインで true に設定する必要があります。",
+ "loc.messages.ZipDeployLogsURL": "Zip 配置のログは、%s で確認できます",
+ "loc.messages.DeployLogsURL": "配置ログは %s で確認できます",
+ "loc.messages.AppServiceApplicationURL": "App Service Application URL: %s",
+ "loc.messages.ASE_WebDeploySSLIssueRecommendation": "App Service で証明書を使用するには、証明書が信頼された証明機関によって署名されている必要があります。Web アプリで証明書の検証エラーが出る場合は、自己署名証明書を使用している可能性があります。これを解決するには、Web 配置オプションの追加引数に -allowUntrusted を渡す必要があります。",
+ "loc.messages.FailedToGetResourceID": "リソースの種類 '%s'、リソース名 '%s' のリソース ID を取得できませんでした。エラー: %s",
+ "loc.messages.JarPathNotPresent": "Java jar パスが存在しません",
+ "loc.messages.FailedToUpdateApplicationInsightsResource": "Application Insights '%s' リソースを更新できませんでした。エラー: %s",
+ "loc.messages.RunFromZipPreventsFileInUseError": "Web 配置から Run From Package に移動します。これは、FILE_IN_USE エラーを回避するのに役立ちます。Run From Package では、msBuild パッケージの種類はサポートされていません。この配置方法を使用するには、パッケージ形式を変更してください。"
+}
\ No newline at end of file
diff --git a/_generated/AzureRmWebAppDeploymentV4/Strings/resources.resjson/ko-KR/resources.resjson b/_generated/AzureRmWebAppDeploymentV4/Strings/resources.resjson/ko-KR/resources.resjson
new file mode 100644
index 000000000000..b73547991743
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/Strings/resources.resjson/ko-KR/resources.resjson
@@ -0,0 +1,229 @@
+{
+ "loc.friendlyName": "Azure App Service 배포",
+ "loc.helpMarkDown": "[이 작업에 대한 자세한 정보](https://aka.ms/azurermwebdeployreadme)",
+ "loc.description": "Docker, Java, .NET, .NET Core, Node.js, PHP, Python 또는 Ruby를 사용하는 웹, 모바일 또는 API 앱을 Azure App Service에 배포합니다.",
+ "loc.instanceNameFormat": "Azure App Service 배포: $(WebAppName)",
+ "loc.releaseNotes": "버전 4.*의 새로운 기능 zip 배포, 패키지에서 실행, war 배포 지원 [자세한 정보](https://aka.ms/appServiceDeploymentMethods) App Service Environment 지원 작업에서 지원하는 다양한 App Service 유형을 검색하기 위한 향상된 UI '패키지에서 실행'이 기본 배포 방법으로, wwwroot 폴더의 파일을 읽기 전용으로 설정 자세한 내용을 보려면 [여기](https://aka.ms/azurermwebdeployreadme)를 클릭하세요.",
+ "loc.group.displayName.FileTransformsAndVariableSubstitution": "파일 변환 및 변수 대체 옵션",
+ "loc.group.displayName.AdditionalDeploymentOptions": "추가 배포 옵션",
+ "loc.group.displayName.PostDeploymentAction": "배포 후 작업",
+ "loc.group.displayName.ApplicationAndConfigurationSettings": "응용 프로그램 및 구성 설정",
+ "loc.input.label.ConnectionType": "연결 형식",
+ "loc.input.help.ConnectionType": "웹앱을 배포하는 데 사용할 서비스 연결 형식을 선택합니다. Visual Studio에서 만든 게시 프로필을 사용하려면 게시 프로필을 선택합니다. [자세한 정보](https://aka.ms/vsPublishProfile).",
+ "loc.input.label.ConnectedServiceName": "Azure 구독",
+ "loc.input.help.ConnectedServiceName": "배포에 대한 Azure Resource Manager 구독을 선택합니다.",
+ "loc.input.label.PublishProfilePath": "게시 프로필 경로",
+ "loc.input.help.PublishProfilePath": "Visual Studio에서 만든 게시 프로필의 경로",
+ "loc.input.label.PublishProfilePassword": "게시 프로필 암호",
+ "loc.input.help.PublishProfilePassword": "비밀 변수에 암호를 저장하고 여기서 해당 변수를 사용하는 것이 좋습니다(예: $(Password)).",
+ "loc.input.label.WebAppKind": "App Service 유형",
+ "loc.input.help.WebAppKind": "Windows의 웹앱, Web App on Linux, Web App for Containers, 함수 앱, Linux의 함수 앱, 컨테이너용 함수 앱 및 모바일 앱 중에서 선택합니다.",
+ "loc.input.label.WebAppName": "App Service 이름",
+ "loc.input.help.WebAppName": "기존 Azure App Service의 이름을 입력하거나 선택합니다. 선택한 앱 유형을 기반으로 하는 앱 서비스만 나열됩니다.",
+ "loc.input.label.DeployToSlotOrASEFlag": "슬롯 또는 App Service Environment에 배포",
+ "loc.input.help.DeployToSlotOrASEFlag": "기존 배포 슬롯 또는 Azure App Service Environment에 배포하는 옵션을 선택합니다. 두 대상 모두, 작업에 리소스 그룹 이름이 필요합니다. 배포 대상이 슬롯인 경우 기본적으로 프로덕션 슬롯에 배포가 수행됩니다. 다른 기존 슬롯 이름을 제공할 수도 있습니다. 배포 대상이 Azure App Service Environment인 경우 슬롯 이름을 '프로덕션'으로 두고 리소스 그룹 이름만 지정하세요.",
+ "loc.input.label.ResourceGroupName": "리소스 그룹",
+ "loc.input.help.ResourceGroupName": "배포 대상이 배포 슬롯 또는 App Service Environment인 경우 리소스 그룹 이름이 필요합니다. 위에서 지정한 Azure App Service를 포함하는 Azure 리소스 그룹을 입력하거나 선택합니다.",
+ "loc.input.label.SlotName": "슬롯",
+ "loc.input.help.SlotName": "프로덕션 슬롯이 아닌 기존 슬롯을 입력하거나 선택합니다.",
+ "loc.input.label.DockerNamespace": "레지스트리 또는 네임스페이스",
+ "loc.input.help.DockerNamespace": "특정 레지스트리 또는 네임스페이스의 전역적으로 고유한 최상위 도메인 이름입니다. 참고: 정규화된 이미지 이름은 '`<레지스트리 또는 네임스페이스`>/`<리포지토리`>:`<태그`>' 형식입니다. 예: 'myregistry.azurecr.io/nginx:latest'",
+ "loc.input.label.DockerRepository": "이미지",
+ "loc.input.help.DockerRepository": "컨테이너 이미지가 저장된 리포지토리의 이름입니다. 참고: 정규화된 이미지 이름은 '`<레지스트리 또는 네임스페이스`>/`<리포지토리`>:`<태그`>' 형식입니다. 예: 'myregistry.azurecr.io/nginx:latest'",
+ "loc.input.label.DockerImageTag": "태그",
+ "loc.input.help.DockerImageTag": "태그는 선택 사항입니다. 태그는 레지스트리에서 Docker 이미지에 버전을 지정하는 데 사용하는 메커니즘입니다. 참고: 정규화된 이미지 이름은 '`/`:`' 형식입니다. 예: 'myregistry.azurecr.io/nginx:latest'",
+ "loc.input.label.VirtualApplication": "가상 응용 프로그램",
+ "loc.input.help.VirtualApplication": "Azure Portal에서 구성된 가상 응용 프로그램의 이름을 지정합니다. App Service 루트에 배포할 경우 이 옵션은 필요하지 않습니다.",
+ "loc.input.label.Package": "패키지 또는 폴더",
+ "loc.input.help.Package": "패키지, MSBuild에서 생성된 App Service 콘텐츠를 포함하는 폴더 또는 압축된 zip 또는 war 파일의 파일 경로입니다. 변수([Build](https://docs.microsoft.com/vsts/pipelines/build/variables) | [Release](https://docs.microsoft.com/vsts/pipelines/release/variables#default-variables)), 와일드카드가 지원됩니다. 예: $(System.DefaultWorkingDirectory)/\\*\\*/\\*.zip 또는 $(System.DefaultWorkingDirectory)/\\*\\*/\\*.war.",
+ "loc.input.label.RuntimeStack": "런타임 스택",
+ "loc.input.help.RuntimeStack": "프레임워크 및 버전을 선택합니다.",
+ "loc.input.label.RuntimeStackFunction": "런타임 스택",
+ "loc.input.help.RuntimeStackFunction": "프레임워크 및 버전을 선택합니다. 지원되는 런타임 버전은 [관련 문서](https://docs.microsoft.com/azure/azure-functions/functions-versions#languages)를 참조하세요. 'DOCKER|microsoft/azure-functions-*' 같은 이전 값은 사용되지 않습니다. 드롭다운에서 새 값을 사용하세요.",
+ "loc.input.label.StartupCommand": "시작 명령 ",
+ "loc.input.help.StartupCommand": "시작 명령을 입력합니다. 예: dotnet exec filename.dll dotnet filename.dll",
+ "loc.input.label.ScriptType": "배포 스크립트 형식",
+ "loc.input.help.ScriptType": "작업이 배포를 완료한 후 Azure App Service에서 실행할 스크립트를 제공하여 배포를 사용자 지정합니다. 예를 들어 Node, PHP, Python 응용 프로그램용 패키지를 복원합니다. [자세한 정보](https://go.microsoft.com/fwlink/?linkid=843471).",
+ "loc.input.label.InlineScript": "인라인 스크립트",
+ "loc.input.label.ScriptPath": "배포 스크립트 경로",
+ "loc.input.label.WebConfigParameters": "Python, Node.js, Go 및 Java 앱에 대한 web.config 매개 변수 생성",
+ "loc.input.help.WebConfigParameters": "애플리케이션에 없는 경우 표준 Web.config가 생성되어 Azure App Service에 배포됩니다. web.config의 값은 편집 가능하며, 애플리케이션 프레임워크에 따라 달라집니다. 예를 들어 node.js 애플리케이션의 경우 web.config에 시작 파일 및 iis_node 모듈 값이 포함됩니다. 이 편집 기능은 생성된 web.config에만 사용됩니다. [자세한 정보](https://go.microsoft.com/fwlink/?linkid=843469).",
+ "loc.input.label.AppSettings": "앱 설정",
+ "loc.input.help.AppSettings": "구문 -key 값 다음에 오는 웹앱 응용 프로그램 설정을 편집합니다. 공백이 포함되는 값은 큰따옴표로 묶어야 합니다. 예 : -Port 5000 -RequestTimeout 5000 -WEBSITE_TIME_ZONE \"Eastern Standard Time\"",
+ "loc.input.label.ConfigurationSettings": "구성 설정",
+ "loc.input.help.ConfigurationSettings": "구문 -key 값 다음에 오는 웹앱 구성 설정을 편집합니다. 공백이 포함되는 값은 큰따옴표로 묶어야 합니다. 예 : -phpVersion 5.6 -linuxFxVersion: node|6.11",
+ "loc.input.label.UseWebDeploy": "배포 방법 선택",
+ "loc.input.help.UseWebDeploy": "선택 취소하면, 앱 유형, 패키지 형식 및 기타 매개 변수를 기준으로 가장 적합한 배포 방법이 자동 검색됩니다. 지원되는 배포 방법을 표시하는 옵션을 선택하고, 앱 배포 방법을 선택합니다.",
+ "loc.input.label.DeploymentType": "배포 방법",
+ "loc.input.help.DeploymentType": "앱의 배포 방법을 선택합니다.",
+ "loc.input.label.TakeAppOfflineFlag": "앱을 오프라인으로 전환",
+ "loc.input.help.TakeAppOfflineFlag": "동기화 작업이 시작되기 전에 App Service의 루트 디렉터리에 app_offline.htm 파일을 배치하여 Azure App Service를 오프라인 상태로 전환하려면 이 옵션을 선택합니다. 이 파일은 동기화 작업이 완료된 후 제거됩니다.",
+ "loc.input.label.SetParametersFile": "SetParameters 파일",
+ "loc.input.help.SetParametersFile": "옵션: 사용할 SetParameters.xml 파일의 위치입니다.",
+ "loc.input.label.RemoveAdditionalFilesFlag": "대상에서 추가 파일 제거",
+ "loc.input.help.RemoveAdditionalFilesFlag": "App Service 패키지 또는 폴더에 일치하는 파일이 없는 Azure App Service의 파일을 삭제하는 옵션을 선택합니다.
참고: 이 경우 Azure App Service에 설치된 확장과 관련된 모든 파일도 제거됩니다. 이를 방지하려면 'App_Data 폴더에서 파일 제외' 확인란을 선택합니다. ",
+ "loc.input.label.ExcludeFilesFromAppDataFlag": "App_Data 폴더의 파일 제외",
+ "loc.input.help.ExcludeFilesFromAppDataFlag": "App_Data 폴더의 파일이 Azure App Service에 배포되거나 Azure App Service에서 삭제되지 않게 하려면 이 옵션을 선택합니다.",
+ "loc.input.label.AdditionalArguments": "추가 인수",
+ "loc.input.help.AdditionalArguments": "구문 -key:value 다음에 오는 추가 웹 배포 인수입니다. 이 인수는 Azure App Service를 배포할 때 적용됩니다. 예: -disableLink:AppPoolExtension -disableLink:ContentExtension. 웹 배포 작업 설정의 추가 예제는 [여기](https://go.microsoft.com/fwlink/?linkid=838471)를 참조하세요.",
+ "loc.input.label.RenameFilesFlag": "잠겨 있는 파일 이름 바꾸기",
+ "loc.input.help.RenameFilesFlag": "Azure App Service 응용 프로그램 설정에서 msdeploy 플래그 MSDEPLOY_RENAME_LOCKED_FILES=1을 사용하도록 설정하려면 이 옵션을 선택합니다. 이 옵션을 설정하면 msdeploy에서 앱 배포 중 잠겨 있는 파일의 이름을 바꿀 수 있습니다.",
+ "loc.input.label.XmlTransformation": "XML 변환",
+ "loc.input.help.XmlTransformation": "`*.config 파일`에서 `*.Release.config` 및 `*..config`에 대한 구성 변환이 실행됩니다. 구성 변환은 변수 대체 전에 실행됩니다. XML 변환은 Windows 플랫폼에서만 지원됩니다.",
+ "loc.input.label.XmlVariableSubstitution": "XML 변수 대체",
+ "loc.input.help.XmlVariableSubstitution": "빌드 또는 릴리스 파이프라인에서 정의된 변수가 구성 파일 및 parameters.xml의 appSettings, applicationSettings 및 connectionStrings 섹션에 있는 'key' 또는 'name' 항목과 일치됩니다. 구성 변환 후에 변수 대체가 실행됩니다.
참고: 릴리스 파이프라인 및 환경에서 동일한 변수가 정의된 경우 환경 변수가 릴리스 파이프라인 변수를 대체합니다. ",
+ "loc.input.label.JSONFiles": "JSON 변수 대체",
+ "loc.input.help.JSONFiles": "변수 값을 대체할 JSON 파일을 줄 바꿈으로 구분된 목록으로 제공합니다. 파일 이름은 루트 폴더에 상대적으로 지정해야 합니다. 중첩되거나 계층적인 JSON 변수를 대체하려면 JSONPath 식을 사용하여 지정합니다.
예를 들어 아래 샘플에서 'ConnectionString' 값을 대체하려면 빌드 또는 릴리스 파이프라인(또는 릴리스 파이프라인의 환경)에서 변수를 'Data.DefaultConnection.ConnectionString'으로 정의해야 합니다. { \"Data\": { \"DefaultConnection\": { \"ConnectionString\": \"Server=(localdb)\\SQLEXPRESS;Database=MyDB;Trusted_Connection=True\" } } } 변수 대체는 구성 변환 후 실행됩니다.
참고: 파이프라인 변수는 대체에서 제외됩니다.",
+ "loc.messages.Invalidwebapppackageorfolderpathprovided": "잘못된 App Service 패키지 또는 폴더 경로를 제공했습니다. %s",
+ "loc.messages.SetParamFilenotfound0": "매개 변수 설정 파일을 찾을 수 없습니다. %s",
+ "loc.messages.XDTTransformationsappliedsuccessfully": "XML 변환을 적용했습니다.",
+ "loc.messages.GotconnectiondetailsforazureRMWebApp0": "Azure App Service '%s'에 대한 서비스 연결 정보를 가져왔습니다.",
+ "loc.messages.ErrorNoSuchDeployingMethodExists": "오류: 해당 배포 방법이 없습니다.",
+ "loc.messages.UnabletoretrieveconnectiondetailsforazureRMWebApp": "Azure App Service %s에 대한 서비스 연결 정보를 검색할 수 없습니다. 상태 코드: %s(%s)",
+ "loc.messages.UnabletoretrieveResourceID": "Azure 리소스 '%s'에 대한 서비스 연결 정보를 검색할 수 없습니다. 상태 코드: %s",
+ "loc.messages.Successfullyupdateddeploymenthistory": "%s에서 배포 기록을 업데이트했습니다.",
+ "loc.messages.Failedtoupdatedeploymenthistory": "배포 기록을 업데이트하지 못했습니다. 오류: %s",
+ "loc.messages.WARNINGCannotupdatedeploymentstatusSCMendpointisnotenabledforthiswebsite": "경고: 배포 상태를 업데이트할 수 없습니다. 이 웹 사이트에는 SCM 엔드포인트를 사용할 수 없습니다.",
+ "loc.messages.Unabletoretrievewebconfigdetails": "App Service 구성 정보를 검색할 수 없습니다. 상태 코드: '%s'",
+ "loc.messages.Unabletoretrievewebappsettings": "App Service 응용 프로그램 설정을 검색할 수 없습니다[상태 코드: '%s', 오류 메시지: '%s'].",
+ "loc.messages.Unabletoupdatewebappsettings": "App Service 응용 프로그램 설정을 업데이트할 수 없습니다. 상태 코드: '%s'",
+ "loc.messages.CannotupdatedeploymentstatusuniquedeploymentIdCannotBeRetrieved": "배포 상태를 업데이트할 수 없습니다. 고유한 배포 ID를 검색할 수 없습니다.",
+ "loc.messages.PackageDeploymentSuccess": "웹 패키지를 App Service에 배포했습니다.",
+ "loc.messages.PackageDeploymentFailed": "웹 패키지를 App Service에 배포하지 못했습니다.",
+ "loc.messages.Runningcommand": "%s 명령을 실행하고 있습니다.",
+ "loc.messages.Deployingwebapplicationatvirtualpathandphysicalpath": "웹 패키지 %s을(를) 가상 경로(실제 경로) %s(%s)에 배포하는 중입니다.",
+ "loc.messages.Successfullydeployedpackageusingkuduserviceat": "Kudu 서비스를 사용하여 %s 패키지를 %s에 배포했습니다.",
+ "loc.messages.Failedtodeploywebapppackageusingkuduservice": "Kudu 서비스를 사용하여 App Service 패키지를 배포하지 못했습니다. %s",
+ "loc.messages.Unabletodeploywebappresponsecode": "오류 코드로 인해 App Service를 배포할 수 없습니다. %s",
+ "loc.messages.MSDeploygeneratedpackageareonlysupportedforWindowsplatform": "MSDeploy 생성 패키지는 Windows 플랫폼에만 지원됩니다.",
+ "loc.messages.UnsupportedinstalledversionfoundforMSDeployversionshouldbeatleast3orabove": "MSDeploy에 대해 지원되지 않는 설치된 버전 %s을(를) 찾았습니다. 버전은 3 이상이어야 합니다.",
+ "loc.messages.UnabletofindthelocationofMSDeployfromregistryonmachineError": "컴퓨터의 레지스트리에서 MS 배포의 위치를 찾을 수 없습니다(오류: %s).",
+ "loc.messages.Nopackagefoundwithspecifiedpattern": "지정된 패턴의 패키지를 찾을 수 없습니다. %s 작업에 언급된 패키지가 빌드 또는 이전 스테이지에서 아티팩트로 게시되고 현재 작업에 다운로드되는지 확인합니다.",
+ "loc.messages.MorethanonepackagematchedwithspecifiedpatternPleaserestrainthesearchpattern": "지정한 패턴 %s과(와) 일치하는 패키지가 두 개 이상 있습니다. 검색 패턴을 제한하세요.",
+ "loc.messages.Trytodeploywebappagainwithappofflineoptionselected": "[응용 프로그램을 오프라인으로 만들기] 옵션을 선택하고 App Service를 다시 배포해 보세요.",
+ "loc.messages.Trytodeploywebappagainwithrenamefileoptionselected": "[잠겨 있는 파일 이름 바꾸기] 옵션을 선택하고 App Service를 다시 배포해 보세요.",
+ "loc.messages.NOJSONfilematchedwithspecificpattern": "특정 패턴과 일치하는 JSON 파일이 없음: %s",
+ "loc.messages.Configfiledoesntexists": "구성 파일 %s이(가) 없습니다.",
+ "loc.messages.Failedtowritetoconfigfilewitherror": "구성 파일 %s에 쓰지 못했습니다(오류: %s).",
+ "loc.messages.AppOfflineModeenabled": "앱 오프라인 모드를 사용하도록 설정했습니다.",
+ "loc.messages.Failedtoenableappofflinemode": "앱 오프라인 모드를 사용하도록 설정하지 못했습니다. 상태 코드: %s(%s)",
+ "loc.messages.AppOflineModedisabled": "앱 오프라인 모드를 사용하지 않도록 설정했습니다.",
+ "loc.messages.FailedtodisableAppOfflineMode": "앱 오프라인 모드를 사용하지 않도록 설정하지 못했습니다. 상태 코드: %s(%s)",
+ "loc.messages.CannotPerformXdtTransformationOnNonWindowsPlatform": "Windows가 아닌 플랫폼에서는 XML 변환을 수행할 수 없습니다.",
+ "loc.messages.XdtTransformationErrorWhileTransforming": "%s을(를) 변환(%s 사용)하는 동안 XML 변환 오류가 발생했습니다.",
+ "loc.messages.PublishusingwebdeployoptionsaresupportedonlywhenusingWindowsagent": "웹 배포 옵션을 사용한 게시는 Windows 에이전트를 사용할 경우에만 지원됩니다.",
+ "loc.messages.Publishusingzipdeploynotsupportedformsbuildpackage": "zip 배포 옵션을 사용한 게시는 msBuild 패키지 형식에 대해 지원되지 않습니다.",
+ "loc.messages.Publishusingzipdeploynotsupportedforvirtualapplication": "zip 배포 옵션을 사용한 게시는 가상 애플리케이션에 대해 지원되지 않습니다.",
+ "loc.messages.Publishusingzipdeploydoesnotsupportwarfile": "zip 배포 또는 RunFromZip 옵션을 사용한 게시에서는 war 파일 배포를 지원하지 않습니다.",
+ "loc.messages.Publishusingrunfromzipwithpostdeploymentscript": "폴더가 읽기 전용이므로 wwwroot를 변경하는 경우 RunFromZip을 사용한 게시에서 배포 후 스크립트를 지원하지 않을 수 있습니다.",
+ "loc.messages.ResourceDoesntExist": "'%s' 리소스가 없습니다. 배포 전에 리소스가 있어야 합니다.",
+ "loc.messages.EncodeNotSupported": "%s 파일에 대한 파일 인코딩이 %s(으)로 검색되었습니다. 파일 인코딩 %s을(를) 사용할 경우 변수 대체가 지원되지 않습니다. 지원되는 인코딩은 UTF-8 및 UTF-16 LE입니다.",
+ "loc.messages.UnknownFileEncodeError": "%s 파일(typeCode: %s)에 대한 인코딩을 검색할 수 없습니다. 지원되는 인코딩은 UTF-8 및 UTF-16 LE입니다.",
+ "loc.messages.ShortFileBufferError": "파일 버퍼가 너무 짧아서 인코딩 형식을 검색할 수 없습니다. %s",
+ "loc.messages.FailedToUpdateAzureRMWebAppConfigDetails": "App Service 구성 정보를 업데이트하지 못했습니다. 오류: %s",
+ "loc.messages.SuccessfullyUpdatedAzureRMWebAppConfigDetails": "App Service 구성 정보를 업데이트했습니다.",
+ "loc.messages.RequestedURLforkuduphysicalpath": "Kudu 실제 경로의 요청된 URL: %s",
+ "loc.messages.Physicalpathalreadyexists": "실제 경로 '%s'이(가) 이미 있습니다.",
+ "loc.messages.KuduPhysicalpathCreatedSuccessfully": "Kudu 실제 경로를 만들었습니다. %s",
+ "loc.messages.FailedtocreateKuduPhysicalPath": "Kudu 실제 경로를 만들지 못했습니다. 오류: %s",
+ "loc.messages.FailedtocheckphysicalPath": "Kudu 실제 경로를 확인하지 못했습니다. 오류 코드: %s",
+ "loc.messages.VirtualApplicationDoesNotExist": "가상 응용 프로그램이 없습니다. %s",
+ "loc.messages.JSONParseError": "JSON 파일 %s을(를) 구문 분석할 수 없습니다. 오류: %s",
+ "loc.messages.JSONvariablesubstitutionappliedsuccessfully": "JSON 변수 대체를 적용했습니다.",
+ "loc.messages.XMLvariablesubstitutionappliedsuccessfully": "XML 변수 대체를 적용했습니다.",
+ "loc.messages.failedtoUploadFileToKudu": "%s 파일을 Kudu(%s)에 업로드할 수 없습니다. 상태 코드: %s",
+ "loc.messages.failedtoUploadFileToKuduError": "%s 파일을 Kudu(%s)에 업로드할 수 없습니다. 오류: %s",
+ "loc.messages.ExecuteScriptOnKudu": "Kudu 서비스에서 지정된 스크립트를 실행하는 중입니다.",
+ "loc.messages.FailedToRunScriptOnKuduError": "Kudu 서비스에서 스크립트를 실행할 수 없습니다. 오류: %s",
+ "loc.messages.FailedToRunScriptOnKudu": "Kudu에서 스크립트를 실행할 수 없음: %s. 상태 코드: %s",
+ "loc.messages.ScriptExecutionOnKuduSuccess": "Kudu에서 스크립트를 실행했습니다.",
+ "loc.messages.ScriptExecutionOnKuduFailed": "실행된 스크립트에서 반환 코드로 '%s'을(를) 반환했습니다. 오류: %s",
+ "loc.messages.FailedtoDeleteFileFromKudu": "%s 파일을 Kudu(%s)에서 삭제할 수 없습니다. 상태 코드: %s",
+ "loc.messages.FailedtoDeleteFileFromKuduError": "%s 파일을 Kudu(%s)에서 삭제할 수 없습니다. 오류: %s",
+ "loc.messages.ScriptFileNotFound": "스크립트 파일 '%s'을(를) 찾을 수 없습니다.",
+ "loc.messages.InvalidScriptFile": "잘못된 스크립트 파일 '%s'이(가) 제공되었습니다. 유효한 확장명은 Windows의 경우 .bat 및 .cmd이고, Linux의 경우 .sh입니다.",
+ "loc.messages.RetryForTimeoutIssue": "시간 초과 문제로 스크립트 실행에 실패했습니다. 다시 시도하는 중입니다.",
+ "loc.messages.stdoutFromScript": "스크립트의 표준 출력: ",
+ "loc.messages.stderrFromScript": "스크립트의 표준 오류: ",
+ "loc.messages.WebConfigAlreadyExists": "web.config 파일이 이미 있습니다. 생성하지 않습니다.",
+ "loc.messages.SuccessfullyGeneratedWebConfig": "web.config 파일을 생성했습니다.",
+ "loc.messages.FailedToGenerateWebConfig": "web.config를 생성하지 못했습니다. %s",
+ "loc.messages.FailedToGetKuduFileContent": "파일 콘텐츠 %s을(를) 가져오지 못했습니다. 상태 코드: %s(%s)",
+ "loc.messages.FailedToGetKuduFileContentError": "파일 콘텐츠 %s을(를) 가져오지 못했습니다. 오류: %s",
+ "loc.messages.ScriptStatusTimeout": "시간 초과로 인해 스크립트 상태를 페치할 수 없습니다.",
+ "loc.messages.PollingForFileTimeOut": "시간 초과로 인해 스크립트 상태를 페치할 수 없습니다. 'appservicedeploy.retrytimeout' 변수를 필요한 시간(분)으로 설정하여 시간 제한을 늘릴 수 있습니다.",
+ "loc.messages.InvalidPollOption": "잘못된 폴링 옵션이 제공됨: %s.",
+ "loc.messages.MissingAppTypeWebConfigParameters": "Web.config 매개 변수에 '-appType' 특성이 없습니다. '-appType'에 대해 유효한 값은 'python_Bottle', 'python_Django', 'python_Flask' 'node' 및 'Go'입니다. 예를 들어 Python Bottle 프레임워크의 경우 '-appType python_Bottle' (sans-quotes)입니다.",
+ "loc.messages.AutoDetectDjangoSettingsFailed": "DJANGO_SETTINGS_MODULE 'settings.py' 파일 경로를 검색할 수 없습니다. 'settings.py' 파일이 존재하는지 확인하거나 Web.config 매개 변수 입력에 '-DJANGO_SETTINGS_MODULE .settings' 형식으로 올바른 경로를 제공하세요.",
+ "loc.messages.FailedToApplyTransformation": "지정된 패키지에 변환을 적용할 수 없습니다. 다음을 확인하세요.",
+ "loc.messages.FailedToApplyTransformationReason1": "1. 빌드 중 생성된 MSBuild 패키지에 대해 변환이 이미 적용되었는지 여부를 확인합니다. 그런 경우 csproj 파일에서 각 구성에 대해 태그를 제거하고 다시 빌드합니다. ",
+ "loc.messages.FailedToApplyTransformationReason2": "2. 구성 파일 및 변환 파일이 패키지 내의 동일한 폴더에 있는지 확인합니다.",
+ "loc.messages.AutoParameterizationMessage": "Web.config의 ConnectionString 특성은 기본적으로 매개 변수가 있습니다. 'Parameters.xml' 또는 'SetParameters.xml' 파일로 배포 중 값이 재정의되므로 변환은 connectionString 특성에 아무런 영향을 미치지 않습니다. MSBuild 패키지 생성 중 p:AutoParameterizationWebConfigConnectionStrings=False를 설정하여 자동 매개 변수화를 사용하지 않도록 설정할 수 있습니다.",
+ "loc.messages.UnsupportedAppType": "Web.config 생성에서 '%s' 앱 형식이 지원되지 않습니다. '-appType'에 대해 유효한 값은 'python_Bottle', 'python_Django', 'python_Flask' 및 'node'입니다.",
+ "loc.messages.UnableToFetchAuthorityURL": "기관 URL을 페치할 수 없습니다.",
+ "loc.messages.UnableToFetchActiveDirectory": "Active Directory 리소스 ID를 페치할 수 없습니다.",
+ "loc.messages.SuccessfullyUpdatedRuntimeStackAndStartupCommand": "런타임 스택 및 시작 명령을 업데이트했습니다.",
+ "loc.messages.FailedToUpdateRuntimeStackAndStartupCommand": "런타임 스택 및 시작 명령을 업데이트하지 못했습니다. 오류: %s.",
+ "loc.messages.SuccessfullyUpdatedWebAppSettings": "앱 설정을 업데이트했습니다.",
+ "loc.messages.FailedToUpdateAppSettingsInConfigDetails": "앱 설정을 업데이트하지 못했습니다. 오류: %s.",
+ "loc.messages.UnableToGetAzureRMWebAppMetadata": "AzureRM WebApp 메타데이터를 페치하지 못했습니다. 오류 코드: %s",
+ "loc.messages.UnableToUpdateAzureRMWebAppMetadata": "AzureRM WebApp 메타데이터를 업데이트할 수 없습니다. 오류 코드: %s",
+ "loc.messages.Unabletoretrieveazureregistrycredentials": "Azure Container Registry 자격 증명을 검색할 수 없습니다.[상태 코드: '%s']",
+ "loc.messages.UnableToReadResponseBody": "응답 본문을 읽을 수 없습니다. 오류: %s",
+ "loc.messages.UnableToUpdateWebAppConfigDetails": "WebApp 구성 정보를 업데이트할 수 없습니다. 상태 코드: '%s'",
+ "loc.messages.AddingReleaseAnnotation": "Application Insights 리소스 '%s'에 대한 릴리스 주석을 추가하는 중",
+ "loc.messages.SuccessfullyAddedReleaseAnnotation": "Application Insight에 릴리스 주석 추가함: %s",
+ "loc.messages.FailedAddingReleaseAnnotation": "릴리스 주석을 추가하지 못했습니다. %s",
+ "loc.messages.RenameLockedFilesEnabled": "App Service에 대해 잠긴 파일 이름 바꾸기를 사용할 수 있습니다.",
+ "loc.messages.FailedToEnableRenameLockedFiles": "잠긴 파일 이름 바꾸기를 사용하도록 설정하지 못했습니다. 오류: %s",
+ "loc.messages.WebJobsInProgressIssue": "실행 상태의 WebJobs가 거의 없으므로 배포에서 파일을 제거할 수 없습니다. 배포 전에 연속 작업을 중지하거나 '대상에서 추가 파일 제거' 옵션을 사용하지 않을 수 있습니다.",
+ "loc.messages.FailedToFetchKuduAppSettings": "Kudu 앱 설정을 페치하지 못했습니다. 오류: %s",
+ "loc.messages.FailedToCreatePath": "Kudu에서 '%s' 경로를 만들지 못했습니다. 오류: %s",
+ "loc.messages.FailedToDeleteFile": "Kudu에서 '%s/%s' 파일을 삭제하지 못했습니다. 오류: %s",
+ "loc.messages.FailedToDeleteFolder": "Kudu에서 '%s' 폴더를 삭제하지 못했습니다. 오류: %s",
+ "loc.messages.FailedToUploadFile": "Kudu에서 '%s/%s' 파일을 업로드하지 못했습니다. 오류: %s",
+ "loc.messages.FailedToGetFileContent": "Kudu에서 파일 콘텐츠 '%s/%s'을(를) 가져오지 못했습니다. 오류: %s",
+ "loc.messages.FailedToListPath": "Kudu에서 '%s' 경로를 나열하지 못했습니다. 오류: %s",
+ "loc.messages.RetryToDeploy": "패키지 배포를 다시 시도하는 중입니다.",
+ "loc.messages.FailedToGetAppServiceDetails": "App Service '%s' 정보를 페치하지 못했습니다. 오류: %s",
+ "loc.messages.FailedToGetAppServicePublishingProfile": "App Service '%s' 게시 프로필을 페치하지 못했습니다. 오류: %s",
+ "loc.messages.FailedToUpdateAppServiceMetadata": "App Service '%s' 메타데이터를 업데이트하지 못했습니다. 오류: %s",
+ "loc.messages.FailedToGetAppServiceMetadata": "App Service '%s' 메타데이터를 가져오지 못했습니다. 오류: %s",
+ "loc.messages.FailedToPatchAppServiceConfiguration": "App Service '%s' 구성을 패치하지 못했습니다. 오류: %s",
+ "loc.messages.FailedToUpdateAppServiceConfiguration": "App Service '%s' 구성을 업데이트하지 못했습니다. 오류: %s",
+ "loc.messages.FailedToGetAppServiceConfiguration": "App Service '%s' 구성을 가져오지 못했습니다. 오류: %s",
+ "loc.messages.FailedToGetAppServicePublishingCredentials": "App Service '%s' 게시 자격 증명을 페치하지 못했습니다. 오류: %s",
+ "loc.messages.FailedToGetAppServiceApplicationSettings": "App Service '%s' 애플리케이션 설정을 가져오지 못했습니다. 오류: %s",
+ "loc.messages.FailedToUpdateAppServiceApplicationSettings": "App Service '%s' 애플리케이션 설정을 업데이트하지 못했습니다. 오류: %s",
+ "loc.messages.UpdatingAppServiceConfigurationSettings": "App Service 구성 설정을 업데이트하는 중입니다. 데이터: %s",
+ "loc.messages.UpdatedAppServiceConfigurationSettings": "App Service 구성 설정을 업데이트했습니다.",
+ "loc.messages.UpdatingAppServiceApplicationSettings": "App Service 애플리케이션 설정을 업데이트하는 중입니다. 데이터: %s",
+ "loc.messages.AppServiceApplicationSettingsAlreadyPresent": "App Service 애플리케이션 설정이 이미 있습니다.",
+ "loc.messages.AppServiceConnectionStringsAlreadyPresent": "App Service 연결 문자열이 이미 있습니다.",
+ "loc.messages.UpdatedAppServiceApplicationSettings": "App Service 응용 프로그램 설정 및 Kudu 응용 프로그램 설정을 업데이트했습니다.",
+ "loc.messages.MultipleResourceGroupFoundForAppService": "App Service '%s'에 대한 리소스 그룹이 여러 개 있습니다.",
+ "loc.messages.PackageDeploymentUsingZipDeployFailed": "ZIP 배포를 사용한 패키지 배포에 실패했습니다. 자세한 내용은 로그를 참조하세요.",
+ "loc.messages.PackageDeploymentInitiated": "ZIP 배포를 사용한 패키지 배포가 시작되었습니다.",
+ "loc.messages.WarPackageDeploymentInitiated": "WAR 배포를 사용한 패키지 배포가 시작되었습니다.",
+ "loc.messages.FailedToGetDeploymentLogs": "배포 로그를 가져오지 못했습니다. 오류: %s",
+ "loc.messages.GoExeNameNotPresent": "Go exe 이름이 없습니다.",
+ "loc.messages.WarDeploymentRetry": "이전에 war 파일이 확장되지 않았으므로 war 파일 배포를 다시 시도합니다.",
+ "loc.messages.Updatemachinetoenablesecuretlsprotocol": "머신에서 TLS 1.2 프로토콜 이상을 사용 중인지 확인하세요. 머신에서 TLS를 사용하도록 설정하는 방법에 대해 자세히 알아보려면 https://aka.ms/enableTlsv2를 참조하세요.",
+ "loc.messages.CouldNotFetchAccessTokenforAzureStatusCode": "Azure에 대한 액세스 토큰을 페치할 수 없습니다. 상태 코드: %s, 상태 메시지: %s",
+ "loc.messages.CouldNotFetchAccessTokenforMSIDueToMSINotConfiguredProperlyStatusCode": "관리 서비스 주체에 대한 액세스 토큰을 페치할 수 없습니다. 가상 머신에 대한 MSI(관리 서비스 ID)를 구성하세요('https://aka.ms/azure-msi-docs'). 상태 코드: %s, 상태 메시지: %s",
+ "loc.messages.CouldNotFetchAccessTokenforMSIStatusCode": "관리 서비스 주체에 대한 액세스 토큰을 페치할 수 없습니다. 상태 코드: %s, 상태 메시지: %s",
+ "loc.messages.XmlParsingFailed": "publishProfileXML 파일을 구문 분석할 수 없습니다. 오류: %s",
+ "loc.messages.PropertyDoesntExistPublishProfile": "[%s] 속성이 게시 프로필에 없습니다.",
+ "loc.messages.InvalidConnectionType": "잘못된 서비스 연결 형식",
+ "loc.messages.InvalidImageSourceType": "잘못된 이미지 소스 유형",
+ "loc.messages.InvalidPublishProfile": "게시 프로필 파일이 잘못되었습니다.",
+ "loc.messages.ASE_SSLIssueRecommendation": "App Service에서 인증서를 사용하려면 신뢰할 수 있는 인증 기관에서 인증서에 서명해야 합니다. 웹앱에서 인증서 유효성 검사 오류가 발생하는 경우, 자체 서명된 인증서를 사용하는 중일 수 있으며 오류를 해결하려면 이름이 VSTS_ARM_REST_IGNORE_SSL_ERRORS인 변수를 빌드 또는 릴리스 파이프라인에서 true 값으로 설정해야 합니다.",
+ "loc.messages.ZipDeployLogsURL": "zip 배포 로그는 %s에서 볼 수 있습니다.",
+ "loc.messages.DeployLogsURL": "배포 로그는 %s에서 볼 수 있습니다.",
+ "loc.messages.AppServiceApplicationURL": "App Service 애플리케이션 URL: %s",
+ "loc.messages.ASE_WebDeploySSLIssueRecommendation": "App Service에서 인증서를 사용하려면 신뢰할 수 있는 인증 기관에서 인증서에 서명해야 합니다. 웹앱에서 인증서 유효성 검사 오류가 발생하는 경우 자체 서명된 인증서를 사용하는 것 같으며, 오류를 해결하려면 웹 배포 옵션의 추가 인수에 -allowUntrusted를 전달해야 합니다.",
+ "loc.messages.FailedToGetResourceID": "리소스 종류 '%s' 및 리소스 이름 '%s'의 리소스 ID를 가져오지 못했습니다. 오류: %s",
+ "loc.messages.JarPathNotPresent": "Java jar 경로가 없습니다.",
+ "loc.messages.FailedToUpdateApplicationInsightsResource": "Application Insights '%s' 리소스를 업데이트하지 못했습니다. 오류: %s",
+ "loc.messages.RunFromZipPreventsFileInUseError": "'웹 배포'에서 FILE_IN_USE 오류 방지에 도움이 되는 '패키지에서 실행'으로 전환하세요. '패키지에서 실행'은 msBuild 패키지 형식을 지원하지 않습니다. 이 배포 방법을 사용하려면 패키지 형식을 변경하세요."
+}
\ No newline at end of file
diff --git a/_generated/AzureRmWebAppDeploymentV4/Strings/resources.resjson/ru-RU/resources.resjson b/_generated/AzureRmWebAppDeploymentV4/Strings/resources.resjson/ru-RU/resources.resjson
new file mode 100644
index 000000000000..d5539e3edd48
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/Strings/resources.resjson/ru-RU/resources.resjson
@@ -0,0 +1,229 @@
+{
+ "loc.friendlyName": "Развертывание Службы приложений Azure",
+ "loc.helpMarkDown": "[См. дополнительные сведения об этой задаче](https://aka.ms/azurermwebdeployreadme)",
+ "loc.description": "Развертывание веб-приложения, мобильного приложения или приложения API в Службе приложений Azure с помощью Docker, Java, .NET, .NET Core, Node.js, PHP, Python или Ruby",
+ "loc.instanceNameFormat": "Развертывание службы приложений Azure: $(WebAppName)",
+ "loc.releaseNotes": "Новые возможности в версии 4.* Поддерживается развертывание из ZIP-файла, запуск из пакета, развертывание WAR-файла [Подробности здесь](https://aka.ms/appServiceDeploymentMethods) Поддерживаются среды службы приложений Улучшен пользовательский интерфейс для обнаружения различных типов службы приложений, поддерживаемых задачей Предпочтительным методом развертывания является запуск из пакета, при котором файлы в папке wwwroot становятся доступными только для чтения Чтобы получить дополнительные сведения, щелкните [здесь](https://aka.ms/azurermwebdeployreadme).",
+ "loc.group.displayName.FileTransformsAndVariableSubstitution": "Параметры преобразования файлов и подстановки переменных",
+ "loc.group.displayName.AdditionalDeploymentOptions": "Дополнительные параметры развертывания",
+ "loc.group.displayName.PostDeploymentAction": "Действие после развертывания",
+ "loc.group.displayName.ApplicationAndConfigurationSettings": "Параметры приложения и конфигурации",
+ "loc.input.label.ConnectionType": "Тип подключения",
+ "loc.input.help.ConnectionType": "Выберите тип подключения службы, который будет использоваться для развертывания веб-приложения. Выберите \"Профиль публикации\" для использования профиля публикации, созданного в Visual Studio. [Дополнительные сведения](https://aka.ms/vsPublishProfile).",
+ "loc.input.label.ConnectedServiceName": "Подписка Azure",
+ "loc.input.help.ConnectedServiceName": "Выберите подписку на Azure Resource Manager для развертывания.",
+ "loc.input.label.PublishProfilePath": "Путь к профилю публикации",
+ "loc.input.help.PublishProfilePath": "Путь к профилю публикации, созданному в Visual Studio",
+ "loc.input.label.PublishProfilePassword": "Пароль профиля публикации",
+ "loc.input.help.PublishProfilePassword": "Рекомендуется хранить пароль в секретной переменной и использовать ее здесь, например $(Password).",
+ "loc.input.label.WebAppKind": "Тип службы приложений",
+ "loc.input.help.WebAppKind": "Выберите веб-приложение в Windows, веб-приложение в Linux, веб-приложение для контейнеров, приложение-функцию, приложение-функцию в Linux, приложение-функцию для контейнеров или мобильное приложение.",
+ "loc.input.label.WebAppName": "Имя службы приложений",
+ "loc.input.help.WebAppName": "Введите или выберите имя существующей службы приложений Azure. Будут перечислены только службы приложений для выбранного типа приложения.",
+ "loc.input.label.DeployToSlotOrASEFlag": "Развернуть в слоте или среде службы приложений",
+ "loc.input.help.DeployToSlotOrASEFlag": "Выберите вариант развертывания в существующем слоте развертывания или в среде службы приложений Azure. В обоих случаях задаче требуется имя группы ресурсов. Если целью развертывания является слот, по умолчанию оно выполняется в рабочем слоте. Можно также указать имя любого другого существующего слота. Если целью развертывания является среда службы приложений Azure, оставьте имя слота \"рабочий\" и укажите имя группы ресурсов.",
+ "loc.input.label.ResourceGroupName": "Группа ресурсов",
+ "loc.input.help.ResourceGroupName": "Имя группы ресурсов является обязательным, если цель развертывания — слот развертывания или среда службы приложений. Введите или выберите группу ресурсов Azure, которая содержит указанную выше службу приложений Azure.",
+ "loc.input.label.SlotName": "Слот",
+ "loc.input.help.SlotName": "Введите или выберите существующий слот вместо рабочего слота.",
+ "loc.input.label.DockerNamespace": "Реестр или пространство имен",
+ "loc.input.help.DockerNamespace": "Глобально уникальное доменное имя верхнего уровня для реестра или пространства имен. Примечание. Полное доменное имя имеет следующий формат: \"`<реестр или пространство имен`>/`<репозиторий`>:`\". Например, \"myregistry.azurecr.io/nginx:latest\".",
+ "loc.input.label.DockerRepository": "Образ",
+ "loc.input.help.DockerRepository": "Имя репозитория, в котором хранятся образы контейнера. Примечание. Полное доменное имя образа имеет следующий формат: \"`<реестр или пространство имен`>/`<репозиторий`>:`\". Например, \"myregistry.azurecr.io/nginx:latest\".",
+ "loc.input.label.DockerImageTag": "Тег",
+ "loc.input.help.DockerImageTag": "Теги необязательны, они используются в реестрах для указания версий образов Docker. Примечание. Полное доменное имя образа имеет следующий формат: \"`/`:`\". Например, \"myregistry.azurecr.io/nginx:latest\".",
+ "loc.input.label.VirtualApplication": "Виртуальное приложение",
+ "loc.input.help.VirtualApplication": "Укажите имя виртуального приложения, настроенного на портале Azure. Параметр не является обязательным для развертываний в корне службы приложений.",
+ "loc.input.label.Package": "Пакет или папка",
+ "loc.input.help.Package": "Путь к файлу пакета или папке с содержимым службы приложений, созданным MSBuild, или к сжатому ZIP- или WAR-файлу. Поддерживаются переменные ([сборки](https://docs.microsoft.com/vsts/pipelines/build/variables) | [выпуска](https://docs.microsoft.com/vsts/pipelines/release/variables#default-variables)), а также подстановочные знаки. Примеры: $(System.DefaultWorkingDirectory)/\\*\\*/\\*.zip или $(System.DefaultWorkingDirectory)/\\*\\*/\\*.war.",
+ "loc.input.label.RuntimeStack": "Стек среды выполнения",
+ "loc.input.help.RuntimeStack": "Выберите платформу и версию.",
+ "loc.input.label.RuntimeStackFunction": "Стек среды выполнения",
+ "loc.input.help.RuntimeStackFunction": "Выберите платформу и версию. Поддерживаемые версии среды выполнения приведены в [следующем документе](https://docs.microsoft.com/azure/azure-functions/functions-versions#languages). Старые значения, такие как \"DOCKER|microsoft/azure-functions-*\", являются нерекомендуемыми, используйте новые значения из раскрывающегося списка.",
+ "loc.input.label.StartupCommand": "Команда запуска ",
+ "loc.input.help.StartupCommand": "Введите команду запуска, например dotnet exec имя_файла.dll dotnet имя_файла.dll",
+ "loc.input.label.ScriptType": "Тип сценария развертывания",
+ "loc.input.help.ScriptType": "Настройте развертывание, указав скрипт, который будет выполнен в службе приложений Azure по окончании развертывания. Например: восстановите пакеты для приложений Node, PHP и Python. [Дополнительные сведения](https://go.microsoft.com/fwlink/?linkid=843471).",
+ "loc.input.label.InlineScript": "Встроенный скрипт",
+ "loc.input.label.ScriptPath": "Путь к сценарию развертывания",
+ "loc.input.label.WebConfigParameters": "Создание параметров файла web.config для приложений Python, Node.js, Go и Java",
+ "loc.input.help.WebConfigParameters": "Если в приложении отсутствует стандартный файл web.config, он будет сгенерирован и развернут в Службе приложений Azure. Значения в файле web.config можно изменить. Они могут меняться в зависимости от исполняющей среды. Например, в файле web.config приложения node.js имеются загрузочный файл и модульные значения iis_node. Возможность редактирования доступна только для сгенерированного файла web.config. [Подробнее](https://go.microsoft.com/fwlink/?linkid=843469).",
+ "loc.input.label.AppSettings": "Параметры приложения",
+ "loc.input.help.AppSettings": "Измените параметры веб-приложения после значения -key в синтаксисе. Значение с пробелами должно быть заключено в двойные кавычки. Пример: -Port 5000 -RequestTimeout 5000 -WEBSITE_TIME_ZONE \"Eastern Standard Time\"",
+ "loc.input.label.ConfigurationSettings": "Параметры конфигурации",
+ "loc.input.help.ConfigurationSettings": "Измените параметры настройки веб-приложения после значения -key в синтаксисе. Значение с пробелами должно быть заключено в двойные кавычки. Пример: -phpVersion 5.6 -linuxFxVersion: node|6.11",
+ "loc.input.label.UseWebDeploy": "Выбор метода развертывания",
+ "loc.input.help.UseWebDeploy": "Если этот флажок не установлен, оптимальный метод развертывания определяется автоматически в соответствии с типом приложения, форматом пакета и другими параметрами. Выберите этот параметр, чтобы просмотреть поддерживаемые методы развертывания и выбрать один из них для своего приложения.",
+ "loc.input.label.DeploymentType": "Метод развертывания",
+ "loc.input.help.DeploymentType": "Выберите метод развертывания для приложения.",
+ "loc.input.label.TakeAppOfflineFlag": "Перевести приложение в автономный режим",
+ "loc.input.help.TakeAppOfflineFlag": "Выберите этот параметр, чтобы перевести службу приложений Azure в автономный режим путем размещения файла app_offline.htm в корневом каталоге службы приложений перед началом операции синхронизации. Файл будет удален после успешного завершения синхронизации.",
+ "loc.input.label.SetParametersFile": "Файл SetParameters",
+ "loc.input.help.SetParametersFile": "Дополнительно: расположение используемого файла SetParameters.xml.",
+ "loc.input.label.RemoveAdditionalFilesFlag": "Удалять дополнительные файлы в месте назначения",
+ "loc.input.help.RemoveAdditionalFilesFlag": "Выберите этот параметр, чтобы удалить файлы в службе приложений Azure, для которых отсутствуют соответствующие файлы или папки в службе приложений.
Примечание. При этом также будут удалены все файлы, связанные со всеми расширениями, установленными в этой службе приложений Azure App. Чтобы этого избежать, установите флажок \"Исключить файлы из папки App_Data\".",
+ "loc.input.label.ExcludeFilesFromAppDataFlag": "Исключить файлы из папки App_Data",
+ "loc.input.help.ExcludeFilesFromAppDataFlag": "Выберите этот параметр, чтобы заблокировать развертывание файлов из папки App_Data в службе приложений Azure или их удаление из этой службы.",
+ "loc.input.label.AdditionalArguments": "Дополнительные аргументы",
+ "loc.input.help.AdditionalArguments": "Дополнительные аргументы веб-развертывания, использующие синтаксис -ключ:значение. Они будут применяться при развертывании службы приложений Azure, например -disableLink:AppPoolExtension -disableLink:ContentExtension. Другие примеры рабочих параметров веб-развертывания см. [здесь](https://go.microsoft.com/fwlink/?linkid=838471).",
+ "loc.input.label.RenameFilesFlag": "Переименовывать заблокированные файлы",
+ "loc.input.help.RenameFilesFlag": "Выберите этот параметр, чтобы включить в msdeploy флаг MSDEPLOY_RENAME_LOCKED_FILES=1 в параметрах приложения службы приложений Azure. Если этот параметр установлен, msdeploy может переименовывать файлы, заблокированные во время развертывания приложения",
+ "loc.input.label.XmlTransformation": "XML-преобразование",
+ "loc.input.help.XmlTransformation": "Преобразования конфигурации будут выполнены для \"*.Release.config\" и \"*..config\" в файле \"*.config\". Преобразования конфигурации запускаются перед подстановкой переменных. XML-преобразования поддерживаются только на платформе Windows.",
+ "loc.input.label.XmlVariableSubstitution": "Подстановка XML-переменных",
+ "loc.input.help.XmlVariableSubstitution": "Переменные, заданные в конвейерах сборки или выпуска, будут сопоставлены с записями key или name в разделах appSettings, applicationSettings и connectionStrings всех файлов конфигурации и parameters.xml. Подстановка переменных выполняется после преобразований конфигурации.
Примечание. Если одни и те же переменные заданы в конвейере выпуска и в среде, то переменные среды имеют приоритет над переменными из конвейера выпуска. ",
+ "loc.input.label.JSONFiles": "Подстановка переменных JSON",
+ "loc.input.help.JSONFiles": "Укажите разделенный переносами строки список JSON-файлов для подстановки значений переменных. Имена файлов следует указывать относительно корневой папки. Чтобы подставить вложенные или иерархические переменные JSON, укажите их с помощью выражений JSONPath.
Например, чтобы заменить значение ConnectionString в примере ниже, следует определить переменную как Data.DefaultConnection.ConnectionString в конвейере сборки или выпуска (или среде конвейера выпуска). { \"Data\": { \"DefaultConnection\": { \"ConnectionString\": \"Server=(localdb)\\SQLEXPRESS;Database=MyDB;Trusted_Connection=True\" } } } Подстановка переменных запускается после преобразований конфигураций.
Примечание. Переменные конвейера исключены из подстановки.",
+ "loc.messages.Invalidwebapppackageorfolderpathprovided": "Указан недопустимый путь к пакету службы приложений или папке: %s",
+ "loc.messages.SetParamFilenotfound0": "Заданный файл параметров не найден: %s",
+ "loc.messages.XDTTransformationsappliedsuccessfully": "XML-преобразования успешно применены.",
+ "loc.messages.GotconnectiondetailsforazureRMWebApp0": "Получены сведения о подключении к службе приложений Azure: \"%s\"",
+ "loc.messages.ErrorNoSuchDeployingMethodExists": "Ошибка: такого метода развертывания не существует.",
+ "loc.messages.UnabletoretrieveconnectiondetailsforazureRMWebApp": "Не удалось получить данные о подключении к Службе приложений Azure: %s. Код состояния: %s (%s)",
+ "loc.messages.UnabletoretrieveResourceID": "Не удалось получить сведения о подключении к службе для ресурса Azure: \"%s\". Код состояния: %s",
+ "loc.messages.Successfullyupdateddeploymenthistory": "Журнал развертывания (%s) успешно обновлен.",
+ "loc.messages.Failedtoupdatedeploymenthistory": "Не удалось обновить журнал развертывания. Ошибка: %s",
+ "loc.messages.WARNINGCannotupdatedeploymentstatusSCMendpointisnotenabledforthiswebsite": "ПРЕДУПРЕЖДЕНИЕ: невозможно обновить состояние развертывания, конечная точка SCM не включена для этого веб-сайта.",
+ "loc.messages.Unabletoretrievewebconfigdetails": "Не удалось получить сведения о конфигурации службы приложений. Код состояния: \"%s\"",
+ "loc.messages.Unabletoretrievewebappsettings": "Не удалось извлечь параметры приложения службы приложений. [Код состояния: \"%s\", сообщение об ошибке: \"%s\"]",
+ "loc.messages.Unabletoupdatewebappsettings": "Не удалось обновить параметры приложения службы приложений. Код состояния: \"%s\"",
+ "loc.messages.CannotupdatedeploymentstatusuniquedeploymentIdCannotBeRetrieved": "Не удается обновить состояние развертывания: не удается получить уникальный идентификатор развертывания.",
+ "loc.messages.PackageDeploymentSuccess": "Веб-пакет успешно развернут в службе приложений.",
+ "loc.messages.PackageDeploymentFailed": "Не удалось развернуть веб-пакет в службе приложений.",
+ "loc.messages.Runningcommand": "Запуск команды: %s",
+ "loc.messages.Deployingwebapplicationatvirtualpathandphysicalpath": "Развертывание веб-пакета %s по виртуальному пути (физическому пути): %s (%s)",
+ "loc.messages.Successfullydeployedpackageusingkuduserviceat": "Пакет %s успешно развернут при помощи службы Kudu в %s",
+ "loc.messages.Failedtodeploywebapppackageusingkuduservice": "Не удалось развернуть пакет службы приложений при помощи службы Kudu: %s",
+ "loc.messages.Unabletodeploywebappresponsecode": "Не удалось развернуть службу приложений из-за ошибки: %s",
+ "loc.messages.MSDeploygeneratedpackageareonlysupportedforWindowsplatform": "Пакеты, созданные при помощи MSDeploy, поддерживаются только для платформы Windows.",
+ "loc.messages.UnsupportedinstalledversionfoundforMSDeployversionshouldbeatleast3orabove": "Установленная версия MSDeploy (%s) не поддерживается. Должна быть установлена версия 3 или более поздняя.",
+ "loc.messages.UnabletofindthelocationofMSDeployfromregistryonmachineError": "Не удалось определить расположение MS Deploy при помощи реестра на компьютере (ошибка: %s).",
+ "loc.messages.Nopackagefoundwithspecifiedpattern": "Не удалось найти пакет с указанным шаблоном: %s Проверьте, публикуется ли пакет, упомянутый в задаче, как артефакт в сборке или на предыдущем этапе и скачан ли он в текущем задании.",
+ "loc.messages.MorethanonepackagematchedwithspecifiedpatternPleaserestrainthesearchpattern": "Указанному шаблону соответствует несколько пакетов: %s. Ограничьте шаблон поиска.",
+ "loc.messages.Trytodeploywebappagainwithappofflineoptionselected": "Попробуйте снова развернуть службу приложений, используя параметр \"Отключить приложение от сети\".",
+ "loc.messages.Trytodeploywebappagainwithrenamefileoptionselected": "Попробуйте снова развернуть службу приложений, используя параметр \"Переименовывать заблокированные файлы\".",
+ "loc.messages.NOJSONfilematchedwithspecificpattern": "Не найден файл JSON, соответствующий заданному шаблону: %s.",
+ "loc.messages.Configfiledoesntexists": "Файл конфигурации %s не существует.",
+ "loc.messages.Failedtowritetoconfigfilewitherror": "Сбой записи в файл конфигурации %s. Ошибка: %s.",
+ "loc.messages.AppOfflineModeenabled": "Автономный режим для приложения включен.",
+ "loc.messages.Failedtoenableappofflinemode": "Не удалось включить автономный режим для приложения. Код состояния: %s (%s).",
+ "loc.messages.AppOflineModedisabled": "Автономный режим для приложения отключен.",
+ "loc.messages.FailedtodisableAppOfflineMode": "Не удалось отключить автономный режим для приложения. Код состояния: %s (%s)",
+ "loc.messages.CannotPerformXdtTransformationOnNonWindowsPlatform": "Невозможно выполнить XML-преобразования на платформе, отличной от Windows.",
+ "loc.messages.XdtTransformationErrorWhileTransforming": "Ошибка XML-преобразования при преобразовании %s с помощью %s.",
+ "loc.messages.PublishusingwebdeployoptionsaresupportedonlywhenusingWindowsagent": "Публикация при помощи веб-развертывания поддерживается только при использовании агента для Windows.",
+ "loc.messages.Publishusingzipdeploynotsupportedformsbuildpackage": "Публикация путем развертывания из ZIP-файла не поддерживается для типа пакета msBuild.",
+ "loc.messages.Publishusingzipdeploynotsupportedforvirtualapplication": "Публикация путем развертывания из ZIP-файла не поддерживается для виртуального приложения.",
+ "loc.messages.Publishusingzipdeploydoesnotsupportwarfile": "При публикации с помощью развертывания из ZIP-файла или RunFromZip не поддерживается развертывание WAR-файла.",
+ "loc.messages.Publishusingrunfromzipwithpostdeploymentscript": "При публикации с помощью RunFromZip скрипт, выполняемый после развертывания, может не поддерживаться, если он вносит изменения в wwwroot, так как эта папка доступна только для чтения.",
+ "loc.messages.ResourceDoesntExist": "Ресурс \"%s\" не существует. Он должен существовать перед началом развертывания.",
+ "loc.messages.EncodeNotSupported": "Обнаруженная кодировка файла %s — %s. Подстановка переменных не поддерживается для кодировки %s. Поддерживаемые кодировки: UTF-8 и UTF-16 LE.",
+ "loc.messages.UnknownFileEncodeError": "Не удается определить кодировку файла %s (typeCode: %s). Поддерживаемые кодировки: UTF-8 и UTF-16 LE.",
+ "loc.messages.ShortFileBufferError": "Слишком короткий файловый буфер для обнаружения типа кодировки: %s.",
+ "loc.messages.FailedToUpdateAzureRMWebAppConfigDetails": "Не удалось изменить конфигурацию службы приложений. Ошибка: %s",
+ "loc.messages.SuccessfullyUpdatedAzureRMWebAppConfigDetails": "Конфигурация службы приложений успешно изменена.",
+ "loc.messages.RequestedURLforkuduphysicalpath": "Запрошенный URL-адрес для физического пути Kudu: %s",
+ "loc.messages.Physicalpathalreadyexists": "Физический путь \"%s\" уже существует.",
+ "loc.messages.KuduPhysicalpathCreatedSuccessfully": "Физический путь Kudu успешно создан: %s",
+ "loc.messages.FailedtocreateKuduPhysicalPath": "Не удалось создать физический путь Kudu. Ошибка: %s",
+ "loc.messages.FailedtocheckphysicalPath": "Не удалось проверить физический путь Kudu. Код ошибки: %s",
+ "loc.messages.VirtualApplicationDoesNotExist": "Виртуальное приложение не существует: %s",
+ "loc.messages.JSONParseError": "Не удалось проанализировать JSON-файл: %s. Ошибка: %s",
+ "loc.messages.JSONvariablesubstitutionappliedsuccessfully": "Подстановка переменных JSON успешно применена.",
+ "loc.messages.XMLvariablesubstitutionappliedsuccessfully": "Подстановка переменных XML применена.",
+ "loc.messages.failedtoUploadFileToKudu": "Не удалось отправить файл %s в Kudu (%s). Код состояния: %s",
+ "loc.messages.failedtoUploadFileToKuduError": "Не удалось передать файл %s в Kudu (%s). Ошибка: %s",
+ "loc.messages.ExecuteScriptOnKudu": "Выполнение указанного скрипта в службе Kudu.",
+ "loc.messages.FailedToRunScriptOnKuduError": "Не удалось выполнить скрипт в службе Kudu. Ошибка: %s",
+ "loc.messages.FailedToRunScriptOnKudu": "Не удалось выполнить скрипт в службе Kudu: %s. Код состояния: %s",
+ "loc.messages.ScriptExecutionOnKuduSuccess": "Сценарий успешно выполнен в Kudu.",
+ "loc.messages.ScriptExecutionOnKuduFailed": "Выполненный сценарий вернул код \"%s\". Ошибка: %s",
+ "loc.messages.FailedtoDeleteFileFromKudu": "Не удалось удалить файл %s из Kudu (%s). Код состояния: %s",
+ "loc.messages.FailedtoDeleteFileFromKuduError": "Не удалось удалить файл %s из Kudu (%s). Ошибка: %s",
+ "loc.messages.ScriptFileNotFound": "Файл сценария \"%s\" не найден.",
+ "loc.messages.InvalidScriptFile": "Указан недопустимый файл скрипта \"%s\". Допустимые расширения: .bat и .cmd в Windows, .sh в Linux",
+ "loc.messages.RetryForTimeoutIssue": "Сбои выполнения сценария из-за превышения времени ожидания. Выполняется повторная попытка.",
+ "loc.messages.stdoutFromScript": "Стандартные выходные данные сценария: ",
+ "loc.messages.stderrFromScript": "Стандартная ошибка сценария: ",
+ "loc.messages.WebConfigAlreadyExists": "Файл web.config уже существует. Он не будет сгенерирован.",
+ "loc.messages.SuccessfullyGeneratedWebConfig": "Файл web.config успешно сгенерирован.",
+ "loc.messages.FailedToGenerateWebConfig": "Не удалось сгенерировать файл web.config. %s",
+ "loc.messages.FailedToGetKuduFileContent": "Не удалось получить содержимое файла: %s. Код состояния: %s (%s)",
+ "loc.messages.FailedToGetKuduFileContentError": "Не удалось получить содержимое файла: %s. Ошибка: %s",
+ "loc.messages.ScriptStatusTimeout": "Не удалось получить состояние сценария, так как превышено время ожидания.",
+ "loc.messages.PollingForFileTimeOut": "Не удалось получить состояние сценария, так как превышено время ожидания. Чтобы увеличить время ожидания, задайте для переменной \"appservicedeploy.retrytimeout\" требуемое количество минут.",
+ "loc.messages.InvalidPollOption": "Указан недопустимый параметр опроса: %s.",
+ "loc.messages.MissingAppTypeWebConfigParameters": "Атрибут \"-appType\" отсутствует в параметрах Web.config. Допустимые значения для \"-appType\": \"python_Bottle\", \"python_Django\", \"python_Flask\", \"node\" и \"Go\". Например, \"-appType python_Bottle\" (без кавычек), если используется платформа Python Bottle.",
+ "loc.messages.AutoDetectDjangoSettingsFailed": "Не удалось обнаружить путь к файлу \"settings.py\" DJANGO_SETTINGS_MODULE. Убедитесь, что файл \"settings.py\" существует, или укажите правильный путь во входных данных параметра Web.config в следующем формате: \"-DJANGO_SETTINGS_MODULE <имя_папки>.settings\".",
+ "loc.messages.FailedToApplyTransformation": "Не удается применить преобразование для указанного пакета. Проверьте следующее.",
+ "loc.messages.FailedToApplyTransformationReason1": "1. Применено ли преобразование к созданному пакету MSBuild во время сборки. Если это так, удалите тег для каждой конфигурации в CSPROJ-файле и повторите сборку. ",
+ "loc.messages.FailedToApplyTransformationReason2": "2. Убедитесь, что файлы конфигурации и преобразования находятся в одной и той же папке в пакете.",
+ "loc.messages.AutoParameterizationMessage": "Атрибуты ConnectionString в Web.config параметризованы по умолчанию. Обратите внимание, что преобразование не влияет на атрибуты connectionString, так как значение переопределяется во время развертывания файлом \"Parameters.xml\" или \"SetParameters.xml\". Вы можете отключить автоматическую параметризацию, задав /p:AutoParameterizationWebConfigConnectionStrings=False во время создания пакета MSBuild.",
+ "loc.messages.UnsupportedAppType": "Тип приложения \"%s\" не поддерживается при создании Web.config. Допустимые значения для \"-appType\": \"python_Bottle\", \"python_Django\", \"python_Flask\" и \"node\".",
+ "loc.messages.UnableToFetchAuthorityURL": "Не удается получить URL-адрес центра.",
+ "loc.messages.UnableToFetchActiveDirectory": "Не удается получить идентификатор ресурса Active Directory.",
+ "loc.messages.SuccessfullyUpdatedRuntimeStackAndStartupCommand": "Стек времени выполнения и команда запуска успешно обновлены.",
+ "loc.messages.FailedToUpdateRuntimeStackAndStartupCommand": "Не удалось обновить стек времени выполнения и команду запуска. Ошибка: %s.",
+ "loc.messages.SuccessfullyUpdatedWebAppSettings": "Параметры приложения успешно обновлены.",
+ "loc.messages.FailedToUpdateAppSettingsInConfigDetails": "Не удалось обновить параметры приложения. Ошибка: %s.",
+ "loc.messages.UnableToGetAzureRMWebAppMetadata": "Не удалось получить метаданные AzureRM WebApp. Код ошибки: %s",
+ "loc.messages.UnableToUpdateAzureRMWebAppMetadata": "Не удалось обновить метаданные AzureRM WebApp. Код ошибки: %s",
+ "loc.messages.Unabletoretrieveazureregistrycredentials": "Не удалось получить учетные данные реестра контейнеров Azure. [Код состояния: \"%s\"]",
+ "loc.messages.UnableToReadResponseBody": "Не удалось прочитать текст ответа. Ошибка: %s",
+ "loc.messages.UnableToUpdateWebAppConfigDetails": "Не удалось обновить сведения о конфигурации WebApp. StatusCode: \"%s\"",
+ "loc.messages.AddingReleaseAnnotation": "Добавление примечаний к выпуску для ресурса Application Insights \"%s\"",
+ "loc.messages.SuccessfullyAddedReleaseAnnotation": "Примечания к выпуску успешно добавлены в Application Insights: %s",
+ "loc.messages.FailedAddingReleaseAnnotation": "Не удалось добавить примечания к выпуску. %s",
+ "loc.messages.RenameLockedFilesEnabled": "Переименование заблокированных файлов для службы приложений включено.",
+ "loc.messages.FailedToEnableRenameLockedFiles": "Не удалось включить переименование заблокированных файлов. Ошибка: %s",
+ "loc.messages.WebJobsInProgressIssue": "Невозможно удалить файлы в развертывании, так как запущено несколько веб-заданий. Отключите параметр \"Удалить дополнительные файлы в месте назначения\" или остановите непрерывные задания перед развертыванием.",
+ "loc.messages.FailedToFetchKuduAppSettings": "Не удалось получить параметры приложения Kudu. Ошибка: %s",
+ "loc.messages.FailedToCreatePath": "Не удалось создать путь \"%s\" из Kudu. Ошибка: %s",
+ "loc.messages.FailedToDeleteFile": "Не удалось удалить файл \"%s/%s\" из Kudu. Ошибка: %s",
+ "loc.messages.FailedToDeleteFolder": "Не удалось удалить папку \"%s\" из Kudu. Ошибка: %s.",
+ "loc.messages.FailedToUploadFile": "Не удалось отправить файл \"%s/%s\" из Kudu. Ошибка: %s",
+ "loc.messages.FailedToGetFileContent": "Не удалось получить содержимое файла \"%s/%s\" из Kudu. Ошибка: %s",
+ "loc.messages.FailedToListPath": "Не удалось получить список элементов для пути \"%s\" из Kudu. Ошибка: %s",
+ "loc.messages.RetryToDeploy": "Повторная попытка развертывания пакета.",
+ "loc.messages.FailedToGetAppServiceDetails": "Не удалось получить сведения о службе приложений \"%s\". Ошибка: %s",
+ "loc.messages.FailedToGetAppServicePublishingProfile": "Не удалось получить профиль публикации для службы приложений \"%s\". Ошибка: %s",
+ "loc.messages.FailedToUpdateAppServiceMetadata": "Не удалось обновить метаданные службы приложений \"%s\". Ошибка: %s",
+ "loc.messages.FailedToGetAppServiceMetadata": "Не удалось получить метаданные службы приложений \"%s\". Ошибка: %s",
+ "loc.messages.FailedToPatchAppServiceConfiguration": "Не удалось изменить конфигурацию службы приложений \"%s\". Ошибка: %s",
+ "loc.messages.FailedToUpdateAppServiceConfiguration": "Не удалось обновить конфигурацию службы приложений \"%s\". Ошибка: %s",
+ "loc.messages.FailedToGetAppServiceConfiguration": "Не удалось получить конфигурацию службы приложений \"%s\". Ошибка: %s",
+ "loc.messages.FailedToGetAppServicePublishingCredentials": "Не удалось получить учетные данные публикации для службы приложений \"%s\". Ошибка: %s",
+ "loc.messages.FailedToGetAppServiceApplicationSettings": "Не удалось получить параметры приложения для службы приложений \"%s\". Ошибка: %s",
+ "loc.messages.FailedToUpdateAppServiceApplicationSettings": "Не удалось обновить параметры приложения для службы приложений \"%s\". Ошибка: %s",
+ "loc.messages.UpdatingAppServiceConfigurationSettings": "Выполняется попытка изменить параметры конфигурации Службы приложений. Данные: %s",
+ "loc.messages.UpdatedAppServiceConfigurationSettings": "Параметры конфигурации службы приложений обновлены.",
+ "loc.messages.UpdatingAppServiceApplicationSettings": "Выполняется попытка изменить параметры приложения Службы приложений. Данные: %s",
+ "loc.messages.AppServiceApplicationSettingsAlreadyPresent": "Параметры приложения Службы приложений уже существуют.",
+ "loc.messages.AppServiceConnectionStringsAlreadyPresent": "Строки подключений Службы приложений уже существуют.",
+ "loc.messages.UpdatedAppServiceApplicationSettings": "Параметры приложений службы приложений и параметры приложений Kudu обновлены.",
+ "loc.messages.MultipleResourceGroupFoundForAppService": "Для службы приложений \"%s\" найдено несколько групп ресурсов.",
+ "loc.messages.PackageDeploymentUsingZipDeployFailed": "Не удалось выполнить развертывание пакета с помощью развертывания ZIP-файла. Дополнительные сведения см. в журналах.",
+ "loc.messages.PackageDeploymentInitiated": "Запущено развертывание пакета с помощью ZIP Deploy.",
+ "loc.messages.WarPackageDeploymentInitiated": "Запущено развертывание пакета с помощью WAR Deploy.",
+ "loc.messages.FailedToGetDeploymentLogs": "Не удалось получить журналы развертывания. Ошибка: %s",
+ "loc.messages.GoExeNameNotPresent": "Отсутствует имя EXE-файла Go",
+ "loc.messages.WarDeploymentRetry": "Повторяется попытка развертывания WAR-файла, так как он не был развернут раньше.",
+ "loc.messages.Updatemachinetoenablesecuretlsprotocol": "Компьютер должен использовать протокол TLS 1.2 или более поздней версии. Дополнительные сведения о том, как включить TLS на вашем компьютере: https://aka.ms/enableTlsv2.",
+ "loc.messages.CouldNotFetchAccessTokenforAzureStatusCode": "Не удалось получить маркер доступа для Azure. Код состояния: %s, сообщение о состоянии: %s",
+ "loc.messages.CouldNotFetchAccessTokenforMSIDueToMSINotConfiguredProperlyStatusCode": "Не удалось получить маркер доступа для управляемого субъекта-службы. Настройте управляемое удостоверение службы (MSI) для виртуальной машины \"https://aka.ms/azure-msi-docs\". Код состояния: %s; сообщения о состоянии: %s.",
+ "loc.messages.CouldNotFetchAccessTokenforMSIStatusCode": "Не удалось получить маркер доступа для управляемого субъекта-службы. Код состояния: %s, сообщение о состоянии: %s.",
+ "loc.messages.XmlParsingFailed": "Не удалось проанализировать файл publishProfileXML. Ошибка: %s",
+ "loc.messages.PropertyDoesntExistPublishProfile": "Свойство [%s] отсутствует в профиле публикации",
+ "loc.messages.InvalidConnectionType": "Недопустимый тип подключения к службе",
+ "loc.messages.InvalidImageSourceType": "Недопустимый тип источника образа",
+ "loc.messages.InvalidPublishProfile": "Недопустимый файл профиля публикации.",
+ "loc.messages.ASE_SSLIssueRecommendation": "Чтобы использовать сертификат в службе приложений, сертификат должен быть подписан доверенным центром сертификации. Если в веб-приложении появляются ошибки проверки сертификата, возможно, вы используете самозаверяющий сертификат и для устранения этих ошибок необходимо установить значение true для переменной VSTS_ARM_REST_IGNORE_SSL_ERRORS в конвейере сборки или выпуска",
+ "loc.messages.ZipDeployLogsURL": "Журналы развертывания из ZIP-файла можно просмотреть в %s",
+ "loc.messages.DeployLogsURL": "Журналы развертывания можно просмотреть в %s",
+ "loc.messages.AppServiceApplicationURL": "URL-адрес приложения службы приложений: %s",
+ "loc.messages.ASE_WebDeploySSLIssueRecommendation": "Чтобы использовать сертификат в службе приложений, сертификат должен быть подписан доверенным центром сертификации. Если в веб-приложении появляются ошибки проверки сертификата, возможно, вы используете самозаверяющий сертификат и для устранения этих ошибок необходимо передать -allowUntrusted в дополнительных аргументах параметра веб-развертывания.",
+ "loc.messages.FailedToGetResourceID": "Не удалось получить идентификатор ресурса для ресурса с типом \"%s\" и именем \"%s\". Ошибка: %s",
+ "loc.messages.JarPathNotPresent": "Отсутствует путь к jar-файлу Java.",
+ "loc.messages.FailedToUpdateApplicationInsightsResource": "Не удалось обновить ресурс Application Insights \"%s\". Ошибка: %s",
+ "loc.messages.RunFromZipPreventsFileInUseError": "Переход от веб-развертывания к запуску из пакета, что помогает избежать ошибки FILE_IN_USE. Обратите внимание, что запуск из пакета не поддерживает тип пакета msBuild. Измените формат пакета, чтобы использовать этот метод развертывания."
+}
\ No newline at end of file
diff --git a/_generated/AzureRmWebAppDeploymentV4/Strings/resources.resjson/zh-CN/resources.resjson b/_generated/AzureRmWebAppDeploymentV4/Strings/resources.resjson/zh-CN/resources.resjson
new file mode 100644
index 000000000000..99bb677d364e
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/Strings/resources.resjson/zh-CN/resources.resjson
@@ -0,0 +1,229 @@
+{
+ "loc.friendlyName": "Azure 应用服务部署",
+ "loc.helpMarkDown": "[详细了解此任务](https://aka.ms/azurermwebdeployreadme)",
+ "loc.description": "使用 Docker、Java、.NET、.NET Core、Node.js、PHP、Python 或 Ruby 向 Azure 应用服务部署 Web、移动或 API 应用",
+ "loc.instanceNameFormat": "Azure 应用服务部署: $(WebAppName)",
+ "loc.releaseNotes": "版本 4.* 中的新增功能 支持 Zip 部署、从包运行、War 部署[在此处获取详细信息](https://aka.ms/appServiceDeploymentMethods) 支持应用服务环境 改进了用于发现任务支持的不同应用服务类型的 UI 从包运行是首选的部署方法,它使 wwwroot 文件夹中的文件成为只读文件 单击[此处](https://aka.ms/azurermwebdeployreadme)以获取更多信息。",
+ "loc.group.displayName.FileTransformsAndVariableSubstitution": "文件转换和变量替换选项",
+ "loc.group.displayName.AdditionalDeploymentOptions": "其他部署选项",
+ "loc.group.displayName.PostDeploymentAction": "部署后操作",
+ "loc.group.displayName.ApplicationAndConfigurationSettings": "应用程序和配置设置",
+ "loc.input.label.ConnectionType": "连接类型",
+ "loc.input.help.ConnectionType": "选择要用于部署 Web 应用的服务连接类型。 选择发布配置文件以使用 Visual Studio 创建的发布配置文件。[更多信息](https://aka.ms/vsPublishProfile)。",
+ "loc.input.label.ConnectedServiceName": "Azure 订阅",
+ "loc.input.help.ConnectedServiceName": "为部署选择 Azure 资源管理器订阅。",
+ "loc.input.label.PublishProfilePath": "发布配置文件路径",
+ "loc.input.help.PublishProfilePath": "从 Visual Studio 中创建的发布配置文件的路径",
+ "loc.input.label.PublishProfilePassword": "发布配置文件密码",
+ "loc.input.help.PublishProfilePassword": "建议将密码存储在机密变量中,并在此处使用该变量,例如 $(Password)。",
+ "loc.input.label.WebAppKind": "应用服务类型",
+ "loc.input.help.WebAppKind": "从后列选项中选择: Windows 上的 Web 应用、Linux 上的 Web 应用、用于容器的 Web 应用、Linux 上的函数应用、用于容器和移动应用的函数应用。",
+ "loc.input.label.WebAppName": "应用服务名称",
+ "loc.input.help.WebAppName": "输入或选择现有 Azure 应用服务的名称。只会列出基于所选应用类型的应用服务。",
+ "loc.input.label.DeployToSlotOrASEFlag": "部署到槽或应用服务环境",
+ "loc.input.help.DeployToSlotOrASEFlag": "选择要部署到现有部署槽或 Azure 应用服务环境的选项。 对于这两个目标,任务需要资源组名称。 如果部署目标是槽,默认部署到生产槽。此外还可以提供任何其他现有的槽名称。 如果部署目标是 Azure 应用服务环境,则将槽名称保留为“生产”并指定资源组名称即可。",
+ "loc.input.label.ResourceGroupName": "资源组",
+ "loc.input.help.ResourceGroupName": "当部署目标是部署槽或应用服务环境时,需要资源组名称。 输入或选择包含上面指定的 Azure 应用服务的 Azure 资源组。",
+ "loc.input.label.SlotName": "槽",
+ "loc.input.help.SlotName": "输入或选择生产槽以外的现有槽。",
+ "loc.input.label.DockerNamespace": "注册表或命名空间",
+ "loc.input.help.DockerNamespace": "特定注册表或命名空间的全局唯一顶级域名。 注意: 完全限定的映像名称格式应为:“`<注册表或命名空间`>/`<存储库`>:`<标记`>”。例如,\"myregistry.azurecr.io/nginx:latest\"。",
+ "loc.input.label.DockerRepository": "映像",
+ "loc.input.help.DockerRepository": "用于存储容器映像的存储库的名称。 注意: 完全限定的映像名称格式应为:“`<注册表或命名空间`>/`<存储库`>:`<标记`>”。例如,\"myregistry.azurecr.io/nginx:latest\"。",
+ "loc.input.label.DockerImageTag": "标记",
+ "loc.input.help.DockerImageTag": "标记为可选项,它是注册表用以对 Docker 映像提供版本的机制。 注意: 完全限定的映射名称格式应为:“`/`:`”。例如,\"myregistry.azurecr.io/nginx:latest\"。",
+ "loc.input.label.VirtualApplication": "虚拟应用程序",
+ "loc.input.help.VirtualApplication": "指定 Azure 门户中已配置的虚拟应用程序的名称。对于以应用服务根目录为目标的部署,此选项并非必需。",
+ "loc.input.label.Package": "包或文件夹",
+ "loc.input.help.Package": "包的文件路径或一个包含由 MSBuild 生成的应用服务内容或压缩的 zip 或 war 文件的文件夹。 变量([生成](https://docs.microsoft.com/vsts/pipelines/build/variables) | [发布](https://docs.microsoft.com/vsts/pipelines/release/variables#default-variables)),支持通配符。 例如,$(System.DefaultWorkingDirectory)/\\*\\*/\\*.zip 或 $(System.DefaultWorkingDirectory)/\\*\\*/\\*.war。",
+ "loc.input.label.RuntimeStack": "运行时堆栈",
+ "loc.input.help.RuntimeStack": "选择框架和版本。",
+ "loc.input.label.RuntimeStackFunction": "运行时堆栈",
+ "loc.input.help.RuntimeStackFunction": "选择框架和版本。请查看[此文档](https://docs.microsoft.com/azure/azure-functions/functions-versions#languages),了解受支持的运行时版本。\"DOCKER|microsoft/azure-functions-*\" 等旧值已被弃用,请使用下拉列表中的新值。",
+ "loc.input.label.StartupCommand": "启动命令",
+ "loc.input.help.StartupCommand": "输入启动命令。例如 dotnet exec filename.dll dotnet filename.dll",
+ "loc.input.label.ScriptType": "部署脚本类型",
+ "loc.input.help.ScriptType": "任务成功完成部署后,通过提供可在 Azure 应用服务上运行的脚本自定义部署。例如 Node、PHP 和 Python 应用程序的还原包。[了解详细信息](https://go.microsoft.com/fwlink/?linkid=843471)。",
+ "loc.input.label.InlineScript": "内联脚本",
+ "loc.input.label.ScriptPath": "部署脚本路径",
+ "loc.input.label.WebConfigParameters": "生成适用于 Python、Node.js、Go 和 Java 应用的 web.config 参数",
+ "loc.input.help.WebConfigParameters": "如果应用程序中没有标准的 Web.config,系统将生成一个并将其部署到 Azure 应用服务。Web.config 中的值可进行编辑,并且可能因应用程序框架而异。例如,对于 node.js 应用程序,web.config 将包含启动文件和 iis_node module 模块值。此编辑功能仅适用于生成的 web.config。[了解详细信息](https://go.microsoft.com/fwlink/?linkid=843469)。",
+ "loc.input.label.AppSettings": "应用设置",
+ "loc.input.help.AppSettings": "按照语法 -key 值编辑 Web 应用应用程序设置。包含空格的值应括在双引号中。 示例: -Port 5000 -RequestTimeout -WEBSITE_TIME_ZONE \"Eastern Standard Time\"",
+ "loc.input.label.ConfigurationSettings": "配置设置",
+ "loc.input.help.ConfigurationSettings": "按照语法 -key 值编辑 Web 应用配置设置。包含空格的值应括在双引号中。 示例: -phpVersion 5.6 -linuxFxVersion: node|6.11",
+ "loc.input.label.UseWebDeploy": "选择部署方法",
+ "loc.input.help.UseWebDeploy": "如果未选中,将根据应用类型、包格式和其他参数自动检测最佳部署方法。 选择此选项以查看支持的部署方法,并选择一个用于部署应用。",
+ "loc.input.label.DeploymentType": "部署方法",
+ "loc.input.help.DeploymentType": "选择应用的部署方法。",
+ "loc.input.label.TakeAppOfflineFlag": "使应用脱机",
+ "loc.input.help.TakeAppOfflineFlag": "选择该选项,通过在同步操作开始前将 app_offline.htm 文件放入应用服务的根目录而使 Azure 应用服务脱机。同步操作成功完成后,将删除该文件。",
+ "loc.input.label.SetParametersFile": "SetParameters 文件",
+ "loc.input.help.SetParametersFile": "可选: 要使用的 SetParameters.xml 文件的位置。",
+ "loc.input.label.RemoveAdditionalFilesFlag": "删除目标中的其他文件",
+ "loc.input.help.RemoveAdditionalFilesFlag": "选择该选项可删除 Azure 应用服务上在应用服务包或文件夹中没有匹配文件的文件。
注意: 管線變數不在替代範圍內。",
+ "loc.messages.Invalidwebapppackageorfolderpathprovided": "提供的 App Service 套件或資料夾路徑無效: %s",
+ "loc.messages.SetParamFilenotfound0": "找不到設定參數檔案: %s",
+ "loc.messages.XDTTransformationsappliedsuccessfully": "已成功套用 XML 轉換",
+ "loc.messages.GotconnectiondetailsforazureRMWebApp0": "取得 Azure App Service 的服務連線詳細資料: '%s'",
+ "loc.messages.ErrorNoSuchDeployingMethodExists": "錯誤: 此類部署方法不存在",
+ "loc.messages.UnabletoretrieveconnectiondetailsforazureRMWebApp": "無法擷取 Azure App Service 的服務連線詳細資料 : %s。狀態碼: %s (%s)",
+ "loc.messages.UnabletoretrieveResourceID": "無法擷取 Azure 資源的服務連線詳細資料:'%s'。狀態碼: %s",
+ "loc.messages.Successfullyupdateddeploymenthistory": "已成功於 %s 更新部署歷程記錄",
+ "loc.messages.Failedtoupdatedeploymenthistory": "無法更新部署歷程記錄。錯誤: %s",
+ "loc.messages.WARNINGCannotupdatedeploymentstatusSCMendpointisnotenabledforthiswebsite": "警告: 無法更新部署狀態: 此網站未啟用 SCM 端點",
+ "loc.messages.Unabletoretrievewebconfigdetails": "無法擷取 App Service 組態詳細資料。狀態碼: '%s'",
+ "loc.messages.Unabletoretrievewebappsettings": "無法擷取 App Service 應用程式設定。[狀態碼: '%s',錯誤訊息: '%s']",
+ "loc.messages.Unabletoupdatewebappsettings": "無法更新 App Service 應用程式設定。狀態碼: '%s'",
+ "loc.messages.CannotupdatedeploymentstatusuniquedeploymentIdCannotBeRetrieved": "無法更新部署狀態: 無法擷取唯一部署識別碼",
+ "loc.messages.PackageDeploymentSuccess": "已成功將 Web 套件部署到 App Service。",
+ "loc.messages.PackageDeploymentFailed": "無法將 Web 套件部署到 App Service。",
+ "loc.messages.Runningcommand": "正在執行命令: %s",
+ "loc.messages.Deployingwebapplicationatvirtualpathandphysicalpath": "正於虛擬路徑 (實體路徑) 部署網頁套件 %s: %s (%s)",
+ "loc.messages.Successfullydeployedpackageusingkuduserviceat": "已成功使用 Kudu 服務部署套件 %s 於 %s ",
+ "loc.messages.Failedtodeploywebapppackageusingkuduservice": "無法部署使用 Kudu 服務的 App Service 套件: %s",
+ "loc.messages.Unabletodeploywebappresponsecode": "因以下錯誤碼而無法部署 App Service: %s",
+ "loc.messages.MSDeploygeneratedpackageareonlysupportedforWindowsplatform": "僅 Windows 平台支援 MSDeploy 產生的套件。",
+ "loc.messages.UnsupportedinstalledversionfoundforMSDeployversionshouldbeatleast3orabove": "發現對 MSDeploy 安裝了不受支援的版本: %s。版本至少應為 3 (含) 以上",
+ "loc.messages.UnabletofindthelocationofMSDeployfromregistryonmachineError": "電腦上的登錄找不到 MS 部署的位置 (錯誤: %s)",
+ "loc.messages.Nopackagefoundwithspecifiedpattern": "找不到具有指定模式的套件: %s 請確認工作中所提及的套件已在組建或上一個階段中發行為成品,並已在目前的作業中下載。",
+ "loc.messages.MorethanonepackagematchedwithspecifiedpatternPleaserestrainthesearchpattern": "有多個套件與指定模式相符: %s。請縮小搜尋模式範圍。",
+ "loc.messages.Trytodeploywebappagainwithappofflineoptionselected": "請先選取 [讓應用程式成為離線狀態] 選項,然後嘗試再次部署 App Service。",
+ "loc.messages.Trytodeploywebappagainwithrenamefileoptionselected": "請先選取 [重新命名鎖定的檔案] 選項,然後嘗試再次部署 App Service。",
+ "loc.messages.NOJSONfilematchedwithspecificpattern": "沒有符合特定模式 %s 的 JSON 檔案。",
+ "loc.messages.Configfiledoesntexists": "組態檔 %s 不存在。",
+ "loc.messages.Failedtowritetoconfigfilewitherror": "無法寫入組態檔 %s,錯誤為: %s",
+ "loc.messages.AppOfflineModeenabled": "已啟用 [應用程式離線] 模式。",
+ "loc.messages.Failedtoenableappofflinemode": "無法啟用 [應用程式離線] 模式。狀態碼: %s (%s)",
+ "loc.messages.AppOflineModedisabled": "已停用 [應用程式離線] 模式。",
+ "loc.messages.FailedtodisableAppOfflineMode": "無法停用 [應用程式離線] 模式。狀態碼: %s (%s)",
+ "loc.messages.CannotPerformXdtTransformationOnNonWindowsPlatform": "無法在非 Windows 平台執行 XML 轉換。",
+ "loc.messages.XdtTransformationErrorWhileTransforming": "轉換 %s (使用 %s) 時發生 XML 轉換錯誤。",
+ "loc.messages.PublishusingwebdeployoptionsaresupportedonlywhenusingWindowsagent": "僅限使用 Windows 代理程式時才可使用 webdeploy 選項發佈",
+ "loc.messages.Publishusingzipdeploynotsupportedformsbuildpackage": "msBuild 套件類型不支援使用 zip deploy 發佈的選項。",
+ "loc.messages.Publishusingzipdeploynotsupportedforvirtualapplication": "虛擬應用程式不支援使用 zip deploy 發佈的選項。",
+ "loc.messages.Publishusingzipdeploydoesnotsupportwarfile": "使用 zip deploy 或 RunFromZip 發佈的選項不支援 war 檔案部署。",
+ "loc.messages.Publishusingrunfromzipwithpostdeploymentscript": "如果使用 RunFromZip 發佈會對 wwwroot 進行變更,就可能會因為資料夾是唯讀的,而不支援部署後指令碼。",
+ "loc.messages.ResourceDoesntExist": "資源 '%s' 不存在。應具備資源才可部署。",
+ "loc.messages.EncodeNotSupported": "偵測到檔案 %s 的檔案編碼為 %s。檔案編碼 %s 不支援變數替代。支援的編碼為 UTF-8 及 UTF-16 LE。",
+ "loc.messages.UnknownFileEncodeError": "無法偵測檔案 %s 的編碼 (typeCode: %s)。支援的編碼為 UTF-8 及 UTF-16 LE。",
+ "loc.messages.ShortFileBufferError": "檔案緩衝區太短而無法偵測編碼類型: %s",
+ "loc.messages.FailedToUpdateAzureRMWebAppConfigDetails": "無法更新 App Service 組態詳細資料。錯誤: %s",
+ "loc.messages.SuccessfullyUpdatedAzureRMWebAppConfigDetails": "已成功更新 App Service 組態詳細資料",
+ "loc.messages.RequestedURLforkuduphysicalpath": "Kudu 實體路徑的要求 URL: %s",
+ "loc.messages.Physicalpathalreadyexists": "實體路徑 '%s' 已存在",
+ "loc.messages.KuduPhysicalpathCreatedSuccessfully": "已成功建立 Kudu 實體路徑: %s",
+ "loc.messages.FailedtocreateKuduPhysicalPath": "無法建立 Kudu 實體路徑。錯誤 : %s",
+ "loc.messages.FailedtocheckphysicalPath": "無法檢查 Kudu 實體路徑。錯誤碼: %s",
+ "loc.messages.VirtualApplicationDoesNotExist": "虛擬應用程式不存在: %s",
+ "loc.messages.JSONParseError": "無法剖析 JSON 檔案: %s。錯誤: %s",
+ "loc.messages.JSONvariablesubstitutionappliedsuccessfully": "已成功套用 JSON 變數替代。",
+ "loc.messages.XMLvariablesubstitutionappliedsuccessfully": "已成功套用替代的 XML 變數。",
+ "loc.messages.failedtoUploadFileToKudu": "無法將檔案 %s 上傳到 Kudu (%s)。狀態碼: %s",
+ "loc.messages.failedtoUploadFileToKuduError": "無法將檔案 %s 上傳到 Kudu (%s)。錯誤: %s",
+ "loc.messages.ExecuteScriptOnKudu": "正在於 Kudu 服務上執行指定的指令碼。",
+ "loc.messages.FailedToRunScriptOnKuduError": "無法在 Kudu 服務上執行指令碼。錯誤: %s",
+ "loc.messages.FailedToRunScriptOnKudu": "無法在 Kudu 上執行指令碼: %s。狀態碼: %s",
+ "loc.messages.ScriptExecutionOnKuduSuccess": "已成功在 Kudu 上執行指令碼。",
+ "loc.messages.ScriptExecutionOnKuduFailed": "執行的指令碼傳回了下列傳回碼: '%s'。錯誤: %s",
+ "loc.messages.FailedtoDeleteFileFromKudu": "無法從 Kudu (%s) 刪除檔案 %s。狀態碼: %s",
+ "loc.messages.FailedtoDeleteFileFromKuduError": "無法從下列 Kudu 刪除檔案 %s: %s。錯誤: %s",
+ "loc.messages.ScriptFileNotFound": "找不到指令碼檔案 '%s'。",
+ "loc.messages.InvalidScriptFile": "提供的指令檔 '%s' 無效。有效的副檔名為 .bat 與 .cmd (Windows),以及 .sh (Linux)",
+ "loc.messages.RetryForTimeoutIssue": "因為逾時,導致指令碼執行失敗。請重試。",
+ "loc.messages.stdoutFromScript": "指令碼的標準輸出:",
+ "loc.messages.stderrFromScript": "指令碼的標準錯誤:",
+ "loc.messages.WebConfigAlreadyExists": "已有 web.config 檔案。未產生任何檔案。",
+ "loc.messages.SuccessfullyGeneratedWebConfig": "已成功產生 web.config 檔案",
+ "loc.messages.FailedToGenerateWebConfig": "無法產生 web.config。%s",
+ "loc.messages.FailedToGetKuduFileContent": "無法取得檔案內容: %s。狀態碼: %s (%s)",
+ "loc.messages.FailedToGetKuduFileContentError": "無法取得檔案內容: %s。錯誤: %s",
+ "loc.messages.ScriptStatusTimeout": "因為逾時,所以無法擷取指令碼狀態。",
+ "loc.messages.PollingForFileTimeOut": "因為逾時,所以無法擷取指令碼狀態。您可以將 'appservicedeploy.retrytimeout' 變數設定為所需的分鐘數來提高逾時限制。",
+ "loc.messages.InvalidPollOption": "提供的輪詢選項無效: %s。",
+ "loc.messages.MissingAppTypeWebConfigParameters": "Web.config 參數中缺少屬性 '-appType'。'-appType' 的有效值為: 'python_Bottle'、'python_Django'、'python_Flask'、'node' 和 'Go'。 假如是 Python Bottle 架構,即為 '-appType python_Bottle' (不含括號)。",
+ "loc.messages.AutoDetectDjangoSettingsFailed": "偵測不到 DJANGO_SETTINGS_MODULE 'settings.py' 檔案路徑。請確定 'settings.py' 檔案存在,或依下列格式在 Web.config 參數輸入中提供正確的路徑: '-DJANGO_SETTINGS_MODULE <資料夾名稱>.settings'",
+ "loc.messages.FailedToApplyTransformation": "無法對指定的套件套用轉換。請確認下列事項。",
+ "loc.messages.FailedToApplyTransformationReason1": "1. 是否已對建置期間由 MSBuild 產生的套件套用轉換。若已套用,請移除 csproj 檔案中每項設定的 標記,然後重建。",
+ "loc.messages.FailedToApplyTransformationReason2": "2. 確認組態檔與轉換檔皆位於套件內的同一個資料夾中。",
+ "loc.messages.AutoParameterizationMessage": "根據預設,Web.config 中的 ConnectionString 屬性已經過參數化。請注意,轉換對 connectionString 屬性無效,因為 'Parameters.xml' 或 'SetParameters.xml' 檔案已於部署期間覆寫該值。您可在產生 MSBuild 套件期間設定 /p:AutoParameterizationWebConfigConnectionStrings=False,停用自動參數化。",
+ "loc.messages.UnsupportedAppType": "產生 Web.config 時不支援應用程式類型 '%s'。'-appType' 的有效值為: 'python_Bottle'、'python_Django'、'python_Flask' 與 'node'",
+ "loc.messages.UnableToFetchAuthorityURL": "無法擷取授權單位 URL。",
+ "loc.messages.UnableToFetchActiveDirectory": "無法擷取 Active Directory 資源識別碼。",
+ "loc.messages.SuccessfullyUpdatedRuntimeStackAndStartupCommand": "已成功更新執行階段堆疊與啟動命令。",
+ "loc.messages.FailedToUpdateRuntimeStackAndStartupCommand": "無法更新執行階段堆疊與啟動命令。錯誤: %s。",
+ "loc.messages.SuccessfullyUpdatedWebAppSettings": "已成功更新應用程式設定。",
+ "loc.messages.FailedToUpdateAppSettingsInConfigDetails": "無法更新應用程式設定。錯誤: %s。",
+ "loc.messages.UnableToGetAzureRMWebAppMetadata": "無法擷取 AzureRM WebApp 中繼資料。錯誤碼: %s",
+ "loc.messages.UnableToUpdateAzureRMWebAppMetadata": "無法更新 AzureRM WebApp 中繼資料。錯誤碼: %s",
+ "loc.messages.Unabletoretrieveazureregistrycredentials": "無法擷取 Azure Container Registry 認證。[狀態碼: '%s']",
+ "loc.messages.UnableToReadResponseBody": "無法讀取回應主體。錯誤: %s",
+ "loc.messages.UnableToUpdateWebAppConfigDetails": "無法更新 WebApp 組態詳細資料。StatusCode: '%s'",
+ "loc.messages.AddingReleaseAnnotation": "正在新增 Application Insights 資源 '%s' 的版本註釋",
+ "loc.messages.SuccessfullyAddedReleaseAnnotation": "已成功將版本註釋新增至 Application Insights: %s",
+ "loc.messages.FailedAddingReleaseAnnotation": "無法新增版本註釋。%s",
+ "loc.messages.RenameLockedFilesEnabled": "將為 App Service 啟用的已鎖定檔案重新命名。",
+ "loc.messages.FailedToEnableRenameLockedFiles": "無法允許已鎖定重新命名的檔案。錯誤: %s",
+ "loc.messages.WebJobsInProgressIssue": "有幾個處於執行狀態的 WebJob 導致部署無法移除檔案。您可以在部署前停用 [移除目的地的其他檔案] 選項或停止連續的作業。",
+ "loc.messages.FailedToFetchKuduAppSettings": "無法擷取 Kudu 應用程式設定。錯誤: %s",
+ "loc.messages.FailedToCreatePath": "無法從 Kudu 建立路徑 '%s'。錯誤: %s",
+ "loc.messages.FailedToDeleteFile": "無法從 Kudu 刪除檔案 '%s/%s'。錯誤: %s",
+ "loc.messages.FailedToDeleteFolder": "無法從 Kudu 刪除資料夾 '%s'。錯誤: %s",
+ "loc.messages.FailedToUploadFile": "無法從 Kudu 上傳檔案 '%s/%s'。錯誤: %s",
+ "loc.messages.FailedToGetFileContent": "無法從 Kudu 取得檔案內容 '%s/%s'。錯誤: %s",
+ "loc.messages.FailedToListPath": "無法從 Kudu 列出路徑 '%s'。錯誤: %s",
+ "loc.messages.RetryToDeploy": "正在重試部署套件。",
+ "loc.messages.FailedToGetAppServiceDetails": "無法擷取 App Service '%s' 詳細資料。錯誤: %s",
+ "loc.messages.FailedToGetAppServicePublishingProfile": "無法擷取 App Service '%s' 發佈設定檔。錯誤: %s",
+ "loc.messages.FailedToUpdateAppServiceMetadata": "無法更新 App Service '%s' 中繼資料。錯誤: %s",
+ "loc.messages.FailedToGetAppServiceMetadata": "無法取得 App Service '%s' 中繼資料。錯誤: %s",
+ "loc.messages.FailedToPatchAppServiceConfiguration": "無法修補 App Service '%s' 組態。錯誤: %s",
+ "loc.messages.FailedToUpdateAppServiceConfiguration": "無法更新 App Service '%s' 組態。錯誤: %s",
+ "loc.messages.FailedToGetAppServiceConfiguration": "無法取得 App Service '%s' 組態。錯誤: %s",
+ "loc.messages.FailedToGetAppServicePublishingCredentials": "無法擷取 App Service '%s' 發佈認證。錯誤: %s",
+ "loc.messages.FailedToGetAppServiceApplicationSettings": "無法取得 App Service '%s' 應用程式設定。錯誤: %s",
+ "loc.messages.FailedToUpdateAppServiceApplicationSettings": "無法更新 App Service '%s' 應用程式設定。錯誤: %s",
+ "loc.messages.UpdatingAppServiceConfigurationSettings": "正在嘗試更新 App Service 組態設定。資料: %s",
+ "loc.messages.UpdatedAppServiceConfigurationSettings": "已更新 App Service 組態設定。",
+ "loc.messages.UpdatingAppServiceApplicationSettings": "正在嘗試更新 App Service 應用程式設定。資料: %s",
+ "loc.messages.AppServiceApplicationSettingsAlreadyPresent": "App Service 應用程式設定已存在。",
+ "loc.messages.AppServiceConnectionStringsAlreadyPresent": "App Service 連接字串已存在。",
+ "loc.messages.UpdatedAppServiceApplicationSettings": "已更新 App Service 應用程式設定與 Kudu 應用程式設定。",
+ "loc.messages.MultipleResourceGroupFoundForAppService": "找到 App Service '%s' 的多個資源群組。",
+ "loc.messages.PackageDeploymentUsingZipDeployFailed": "使用 ZIP Deploy 的套件部署失敗。如需詳細資料,請查看記錄。",
+ "loc.messages.PackageDeploymentInitiated": "已起始使用 ZIP Deploy 部署套件。",
+ "loc.messages.WarPackageDeploymentInitiated": "已開始使用 WAR Deploy 部署套件。",
+ "loc.messages.FailedToGetDeploymentLogs": "無法取得部署記錄。錯誤: %s",
+ "loc.messages.GoExeNameNotPresent": "沒有 Go 可執行檔的名稱",
+ "loc.messages.WarDeploymentRetry": "因為 war 檔案稍早未成功展開,所以正在重試其部署。",
+ "loc.messages.Updatemachinetoenablesecuretlsprotocol": "請確定電腦目前使用 TLS 1.2 通訊協定或更高的版本。請查看 https://aka.ms/enableTlsv2,以取得如何於您的電腦上啟用 TLS 的詳細資訊。",
+ "loc.messages.CouldNotFetchAccessTokenforAzureStatusCode": "無法擷取 Azure 的存取權杖。狀態碼: %s,狀態訊息: %s",
+ "loc.messages.CouldNotFetchAccessTokenforMSIDueToMSINotConfiguredProperlyStatusCode": "無法擷取受控服務主體的存取權杖。請設定虛擬機器的受控服務識別 (MSI) (https://aka.ms/azure-msi-docs)。狀態碼: %s,狀態訊息: %s",
+ "loc.messages.CouldNotFetchAccessTokenforMSIStatusCode": "無法擷取受控服務主體的存取權杖。狀態碼: %s,狀態訊息: %s",
+ "loc.messages.XmlParsingFailed": "無法剖析 publishProfileXML 檔案,錯誤: %s",
+ "loc.messages.PropertyDoesntExistPublishProfile": "[%s] 屬性不存在於發佈設定檔中",
+ "loc.messages.InvalidConnectionType": "服務連線類型無效",
+ "loc.messages.InvalidImageSourceType": "映像來源類型無效",
+ "loc.messages.InvalidPublishProfile": "發佈設定檔的檔案無效。",
+ "loc.messages.ASE_SSLIssueRecommendation": "若要在 App Service 中使用憑證,該憑證必須經過信任的憑證授權單位所簽署。若您的 Web 應用程式顯示憑證驗證錯誤,可能是您使用了自我簽署憑證。若要解決這些錯誤,您必須在建置或發行管線中將名為 VSTS_ARM_REST_IGNORE_SSL_ERRORS 的變數設為 true 值",
+ "loc.messages.ZipDeployLogsURL": "可於 %s 檢視 Zip 部署記錄",
+ "loc.messages.DeployLogsURL": "在 %s 可檢視部署記錄檔",
+ "loc.messages.AppServiceApplicationURL": "App Service 應用程式 URL: %s",
+ "loc.messages.ASE_WebDeploySSLIssueRecommendation": "若要在 App Service 中使用憑證,該憑證必須經過信任的憑證授權單位所簽署。若您的 Web 應用程式顯示憑證驗證錯誤,可能是您使用了自我簽署憑證。若要解決這些錯誤,您必須在 Web 部署選項的其他引數中傳遞 -allowUntrusted。",
+ "loc.messages.FailedToGetResourceID": "無法取得資源類型 '%s' 和資源名稱 '%s' 的資源識別碼。錯誤: %s",
+ "loc.messages.JarPathNotPresent": "沒有 Java 的 jar 路徑",
+ "loc.messages.FailedToUpdateApplicationInsightsResource": "無法更新 Application Insights '%s' 資源。錯誤: %s",
+ "loc.messages.RunFromZipPreventsFileInUseError": "從 Web Deploy 移至 RunFrom Package 可協助避免 FILE_IN_USE 錯誤。請注意,Run From Package 不支援 msBuild 套件類型。請變更您的套件格式以使用此部署方法。"
+}
\ No newline at end of file
diff --git a/_generated/AzureRmWebAppDeploymentV4/Tests/AzureRmWebAppDeploymentProviderL0Tests.ts b/_generated/AzureRmWebAppDeploymentV4/Tests/AzureRmWebAppDeploymentProviderL0Tests.ts
new file mode 100644
index 000000000000..5737c680118f
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/Tests/AzureRmWebAppDeploymentProviderL0Tests.ts
@@ -0,0 +1,69 @@
+import tl = require('azure-pipelines-task-lib');
+import { AzureRmWebAppDeploymentProvider } from '../deploymentProvider/AzureRmWebAppDeploymentProvider'
+import { TaskParametersUtility, TaskParameters } from '../operations/TaskParameters';
+import { getMockEndpoint } from '../node_modules/azure-pipelines-tasks-azure-arm-rest/Tests/mock_utils';
+import { mockAzureARMPreDeploymentSteps } from "./mock_utils";
+
+getMockEndpoint();
+mockAzureARMPreDeploymentSteps();
+
+export class AzureRmWebAppDeploymentProviderL0Tests {
+
+ public static async startAzureRmWebAppDeploymentProviderL0Tests() {
+ await AzureRmWebAppDeploymentProviderL0Tests.testForPreDeploymentSteps();
+ await AzureRmWebAppDeploymentProviderL0Tests.testForPreDeploymentStepsWithSlotEnabled();
+ await AzureRmWebAppDeploymentProviderL0Tests.testForVirtualApplication();
+ await AzureRmWebAppDeploymentProviderL0Tests.testForUpdateDeploymentStatus();
+ }
+
+ public static async testForPreDeploymentSteps() {
+ try {
+ var taskParameters: TaskParameters = TaskParametersUtility.getParameters();
+ var azureRmWebAppDeploymentProvider : AzureRmWebAppDeploymentProvider = new AzureRmWebAppDeploymentProvider(taskParameters);
+ await azureRmWebAppDeploymentProvider.PreDeploymentStep();
+ } catch(error) {
+ tl.setResult(tl.TaskResult.Failed, 'PreDeployment steps should succeeded but failed with error');
+ }
+ }
+
+ public static async testForPreDeploymentStepsWithSlotEnabled() {
+ try {
+ var taskParameters: TaskParameters = TaskParametersUtility.getParameters();
+ taskParameters.DeployToSlotOrASEFlag = true;
+ taskParameters.ResourceGroupName = "MOCK_RESOURCE_GROUP_NAME";
+ var azureRmWebAppDeploymentProvider : AzureRmWebAppDeploymentProvider = new AzureRmWebAppDeploymentProvider(taskParameters);
+ await azureRmWebAppDeploymentProvider.PreDeploymentStep();
+ tl.setResult(tl.TaskResult.Succeeded, 'PreDeployment steps with slot enabled should succeeded');
+ } catch(error) {
+ tl.setResult(tl.TaskResult.Failed, 'PreDeployment steps with slot enabled failed with error');
+ }
+ }
+
+ public static async testForVirtualApplication() {
+ try {
+ var taskParameters: TaskParameters = TaskParametersUtility.getParameters();
+ taskParameters.DeployToSlotOrASEFlag = true;
+ taskParameters.ResourceGroupName = "MOCK_RESOURCE_GROUP_NAME";
+ taskParameters.VirtualApplication = "VirtualApplication";
+ var azureRmWebAppDeploymentProvider : AzureRmWebAppDeploymentProvider = new AzureRmWebAppDeploymentProvider(taskParameters);
+ await azureRmWebAppDeploymentProvider.PreDeploymentStep();
+ tl.setResult(tl.TaskResult.Succeeded, 'PreDeployment steps with virtual application should succeeded');
+ } catch(error) {
+ tl.setResult(tl.TaskResult.Failed, 'PreDeployment steps with virtual application failed with error');
+ }
+ }
+
+ public static async testForUpdateDeploymentStatus() {
+ try {
+ var taskParameters: TaskParameters = TaskParametersUtility.getParameters();
+ var azureRmWebAppDeploymentProvider : AzureRmWebAppDeploymentProvider = new AzureRmWebAppDeploymentProvider(taskParameters);
+ await azureRmWebAppDeploymentProvider.PreDeploymentStep();
+ await azureRmWebAppDeploymentProvider.UpdateDeploymentStatus(true);
+ } catch(error) {
+ tl.setResult(tl.TaskResult.Failed, 'UpdateDeploymentStatus steps should succeeded but failed with error');
+ }
+ }
+
+}
+
+AzureRmWebAppDeploymentProviderL0Tests.startAzureRmWebAppDeploymentProviderL0Tests();
diff --git a/_generated/AzureRmWebAppDeploymentV4/Tests/AzureRmWebAppDeploymentProviderTests.ts b/_generated/AzureRmWebAppDeploymentV4/Tests/AzureRmWebAppDeploymentProviderTests.ts
new file mode 100644
index 000000000000..0bf907fcc75e
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/Tests/AzureRmWebAppDeploymentProviderTests.ts
@@ -0,0 +1,41 @@
+import tl = require('azure-pipelines-task-lib');
+import tmrm = require('azure-pipelines-task-lib/mock-run');
+import ma = require('azure-pipelines-task-lib/mock-answer');
+import * as path from 'path';
+import { setEndpointData, setAgentsData, mockTaskArgument, mockTaskInputParameters } from './utils';
+
+export class AzureRmWebAppDeploymentProviderTests {
+
+ public static startAzureRmWebAppDeploymentProviderTests(){
+ let tp = path.join(__dirname, 'AzureRmWebAppDeploymentProviderL0Tests.js');
+ let tr : tmrm.TaskMockRunner = new tmrm.TaskMockRunner(tp);
+ mockTaskInputParameters(tr);
+ setEndpointData();
+ setAgentsData();
+
+ const kudu = {
+ updateDeployment : function(_) {
+ return "MOCK_DEPLOYMENT_ID";
+ }
+ };
+
+ const utility = {
+ getKuduService: function()
+ {
+ return Promise.resolve(kudu);
+ }
+ };
+
+ tr.registerMock('azure-pipelines-tasks-azure-arm-rest/azureAppServiceUtility', {
+ AzureAppServiceUtility: function(_) {
+ return utility;
+ }
+ });
+
+ tr.setAnswers(mockTaskArgument());
+ tr.run();
+ }
+
+}
+
+AzureRmWebAppDeploymentProviderTests.startAzureRmWebAppDeploymentProviderTests();
diff --git a/_generated/AzureRmWebAppDeploymentV4/Tests/BuiltInLinuxWebAppDeploymentProviderL0Tests.ts b/_generated/AzureRmWebAppDeploymentV4/Tests/BuiltInLinuxWebAppDeploymentProviderL0Tests.ts
new file mode 100644
index 000000000000..2029bd44bab3
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/Tests/BuiltInLinuxWebAppDeploymentProviderL0Tests.ts
@@ -0,0 +1,115 @@
+import tl = require('azure-pipelines-task-lib');
+import { BuiltInLinuxWebAppDeploymentProvider } from '../deploymentProvider/BuiltInLinuxWebAppDeploymentProvider'
+import { TaskParametersUtility, TaskParameters } from '../operations/TaskParameters';
+import { PackageType } from 'azure-pipelines-tasks-webdeployment-common/packageUtility';
+import { getMockEndpoint } from '../node_modules/azure-pipelines-tasks-azure-arm-rest/Tests/mock_utils';
+import { mockAzureARMPreDeploymentSteps, mockLinuxAppSettings } from "./mock_utils";
+
+getMockEndpoint();
+mockAzureARMPreDeploymentSteps();
+mockLinuxAppSettings();
+
+export class BuiltInLinuxWebAppDeploymentProviderL0Tests {
+
+ public static async startBuiltInLinuxWebAppDeploymentProviderL0Tests() {
+ await BuiltInLinuxWebAppDeploymentProviderL0Tests.testForPreDeploymentSteps_BuiltInLinuxWebApp();
+ await BuiltInLinuxWebAppDeploymentProviderL0Tests.testForPreDeploymentStepsWithSlotEnabled_BuiltInLinuxWebApp();
+ await BuiltInLinuxWebAppDeploymentProviderL0Tests.testForUpdateDeploymentStatus_BuiltInLinuxWebApp();
+ await BuiltInLinuxWebAppDeploymentProviderL0Tests.testForDeployWebAppStep_BuiltInLinuxWebApp_ZipPackage();
+ await BuiltInLinuxWebAppDeploymentProviderL0Tests.testForDeployWebAppStep_BuiltInLinuxWebApp_FolderPackage();
+ await BuiltInLinuxWebAppDeploymentProviderL0Tests.testForDeployWebAppStep_BuiltInLinuxWebApp_WarPackage();
+ await BuiltInLinuxWebAppDeploymentProviderL0Tests.testForDeployWebAppStep_BuiltInLinuxWebApp_JarPackage();
+ }
+
+ public static async testForPreDeploymentSteps_BuiltInLinuxWebApp() {
+ try {
+ var taskParameters: TaskParameters = TaskParametersUtility.getParameters();
+ var builtInLinuxWebAppDeploymentProvider : BuiltInLinuxWebAppDeploymentProvider = new BuiltInLinuxWebAppDeploymentProvider(taskParameters);
+ await builtInLinuxWebAppDeploymentProvider.PreDeploymentStep();
+ tl.setResult(tl.TaskResult.Succeeded, 'PreDeployment steps for built in linux web app should succeeded');
+ } catch(error) {
+ tl.setResult(tl.TaskResult.Failed, 'PreDeployment steps for built in linux web app failed with error');
+ }
+ }
+
+ public static async testForPreDeploymentStepsWithSlotEnabled_BuiltInLinuxWebApp() {
+ try {
+ var taskParameters: TaskParameters = TaskParametersUtility.getParameters();
+ taskParameters.DeployToSlotOrASEFlag = true;
+ taskParameters.ResourceGroupName = "MOCK_RESOURCE_GROUP_NAME";
+ var builtInLinuxWebAppDeploymentProvider : BuiltInLinuxWebAppDeploymentProvider = new BuiltInLinuxWebAppDeploymentProvider(taskParameters);
+ await builtInLinuxWebAppDeploymentProvider.PreDeploymentStep();
+ tl.setResult(tl.TaskResult.Succeeded, 'PreDeployment steps for built in linux web app with slot enabled should succeeded');
+ } catch(error) {
+ tl.setResult(tl.TaskResult.Failed, 'PreDeployment steps for built in linux web app with slot enabled failed with error');
+ }
+ }
+
+ public static async testForUpdateDeploymentStatus_BuiltInLinuxWebApp() {
+ try {
+ var taskParameters: TaskParameters = TaskParametersUtility.getParameters();
+ var builtInLinuxWebAppDeploymentProvider : BuiltInLinuxWebAppDeploymentProvider = new BuiltInLinuxWebAppDeploymentProvider(taskParameters);
+ await builtInLinuxWebAppDeploymentProvider.PreDeploymentStep();
+ await builtInLinuxWebAppDeploymentProvider.UpdateDeploymentStatus(true);
+ } catch(error) {
+ tl.setResult(tl.TaskResult.Failed, 'UpdateDeploymentStatus for built in linux web app steps should succeeded but failed with error');
+ }
+ }
+
+ public static async testForDeployWebAppStep_BuiltInLinuxWebApp_ZipPackage() {
+ try {
+ var taskParameters: TaskParameters = TaskParametersUtility.getParameters();
+ var builtInLinuxWebAppDeploymentProvider : BuiltInLinuxWebAppDeploymentProvider = new BuiltInLinuxWebAppDeploymentProvider(taskParameters);
+ await builtInLinuxWebAppDeploymentProvider.PreDeploymentStep();
+ await builtInLinuxWebAppDeploymentProvider.DeployWebAppStep();
+ tl.setResult(tl.TaskResult.Succeeded, 'DeployWebAppStep for built in linux web app steps with zip package succeeded');
+ } catch(error) {
+ tl.setResult(tl.TaskResult.Failed, 'DeployWebAppStep for built in linux web app steps with zip package should succeeded but failed with error');
+ }
+ }
+
+ public static async testForDeployWebAppStep_BuiltInLinuxWebApp_FolderPackage() {
+ try {
+ var taskParameters: TaskParameters = TaskParametersUtility.getParameters();
+ taskParameters.Package.getPackageType = () :PackageType => {return PackageType.folder};
+ taskParameters.Package.getPath = () :string => { return "webAppPkg" };
+ var builtInLinuxWebAppDeploymentProvider : BuiltInLinuxWebAppDeploymentProvider = new BuiltInLinuxWebAppDeploymentProvider(taskParameters);
+ await builtInLinuxWebAppDeploymentProvider.PreDeploymentStep();
+ await builtInLinuxWebAppDeploymentProvider.DeployWebAppStep();
+ tl.setResult(tl.TaskResult.Succeeded, 'DeployWebAppStep for built in linux web app steps with folder package succeeded');
+ } catch(error) {
+ tl.setResult(tl.TaskResult.Failed, 'DeployWebAppStep for built in linux web app steps with folder package should succeeded but failed with error');
+ }
+ }
+
+ public static async testForDeployWebAppStep_BuiltInLinuxWebApp_WarPackage() {
+ try {
+ var taskParameters: TaskParameters = TaskParametersUtility.getParameters();
+ taskParameters.Package.getPackageType = () :PackageType => {return PackageType.war};
+ taskParameters.Package.getPath = () :string => { return "webAppPkg.war" };
+ var builtInLinuxWebAppDeploymentProvider : BuiltInLinuxWebAppDeploymentProvider = new BuiltInLinuxWebAppDeploymentProvider(taskParameters);
+ await builtInLinuxWebAppDeploymentProvider.PreDeploymentStep();
+ await builtInLinuxWebAppDeploymentProvider.DeployWebAppStep();
+ tl.setResult(tl.TaskResult.Succeeded, 'DeployWebAppStep for built in linux web app steps with war package succeeded');
+ } catch(error) {
+ tl.setResult(tl.TaskResult.Failed, 'DeployWebAppStep for built in linux web app steps with war package should succeeded but failed with error');
+ }
+ }
+
+ public static async testForDeployWebAppStep_BuiltInLinuxWebApp_JarPackage() {
+ try {
+ var taskParameters: TaskParameters = TaskParametersUtility.getParameters();
+ taskParameters.Package.getPackageType = () :PackageType => {return PackageType.jar};
+ taskParameters.Package.getPath = () :string => { return "webAppPkg.jar" };
+ var builtInLinuxWebAppDeploymentProvider : BuiltInLinuxWebAppDeploymentProvider = new BuiltInLinuxWebAppDeploymentProvider(taskParameters);
+ await builtInLinuxWebAppDeploymentProvider.PreDeploymentStep();
+ await builtInLinuxWebAppDeploymentProvider.DeployWebAppStep();
+ tl.setResult(tl.TaskResult.Succeeded, 'DeployWebAppStep for built in linux web app steps with jar package succeeded');
+ } catch(error) {
+ tl.setResult(tl.TaskResult.Failed, 'DeployWebAppStep for built in linux web app steps with jar package should succeeded but failed with error');
+ }
+ }
+
+}
+
+BuiltInLinuxWebAppDeploymentProviderL0Tests.startBuiltInLinuxWebAppDeploymentProviderL0Tests();
diff --git a/_generated/AzureRmWebAppDeploymentV4/Tests/BuiltInLinuxWebAppDeploymentProviderTests.ts b/_generated/AzureRmWebAppDeploymentV4/Tests/BuiltInLinuxWebAppDeploymentProviderTests.ts
new file mode 100644
index 000000000000..3995adce9d91
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/Tests/BuiltInLinuxWebAppDeploymentProviderTests.ts
@@ -0,0 +1,80 @@
+import tmrm = require('azure-pipelines-task-lib/mock-run');
+import * as path from 'path';
+import { setEndpointData, setAgentsData, mockTaskArgument, mockTaskInputParameters } from './utils';
+
+export class BuiltInLinuxWebAppDeploymentProviderTests {
+
+ public static startBuiltInLinuxWebAppDeploymentProviderTests(){
+ let tp = path.join(__dirname, 'BuiltInLinuxWebAppDeploymentProviderL0Tests.js');
+ let tr : tmrm.TaskMockRunner = new tmrm.TaskMockRunner(tp);
+ mockTaskInputParameters(tr);
+ setEndpointData();
+ setAgentsData();
+
+
+ const kudu = {
+ updateDeployment : function(D) {
+ return "MOCK_DEPLOYMENT_ID";
+ },
+ getAppSettings : function() {
+ var map: Map = new Map();
+ map.set('MSDEPLOY_RENAME_LOCKED_FILES', '1');
+ map.set('ScmType', 'ScmType');
+ return map;
+ },
+ zipDeploy: function(E, F) {
+ return '{id: "ZIP_DEPLOY_FAILED_ID", status: 3, deployer: "VSTS_ZIP_DEPLOY", author: "VSTS USER"}';
+ },
+ warDeploy: function(G, H) {
+ return '{id: "ZIP_DEPLOY_FAILED_ID", status: 3, deployer: "VSTS_ZIP_DEPLOY", author: "VSTS USER"}';
+ },
+ getDeploymentDetails: function(I) {
+ return "{ type: 'Deployment',url: 'http://MOCK_SCM_WEBSITE/api/deployments/MOCK_DEPLOYMENT_ID'}";
+ }
+ };
+
+ const utility = {
+ getKuduService: function()
+ {
+ return Promise.resolve(kudu);
+ }
+ };
+
+ tr.registerMock('azure-pipelines-tasks-azure-arm-rest/azureAppServiceUtility', {
+ AzureAppServiceUtility: function(_) {
+ return utility;
+ }
+ });
+
+ tr.registerMock('azure-pipelines-tasks-webdeployment-common/utility.js', {
+ generateTemporaryFolderForDeployment: function () {
+ return "webAppPkg";
+ },
+ archiveFolderForDeployment: function() {
+ return {
+ "webDeployPkg": "webAppPkg",
+ "tempPackagePath": "webAppPkg"
+ };
+ },
+ getFileNameFromPath: function(A, B) {
+ return "webAppPkg";
+ },
+ generateTemporaryFolderOrZipPath: function(C, D) {
+ return "webAppPkg.zip";
+ }
+ });
+
+ tr.registerMock('azure-pipelines-tasks-webdeployment-common/ziputility.js', {
+ archiveFolder: function(A, B){
+ return "webAppPkg.zip";
+ }
+ });
+
+ tr.setAnswers(mockTaskArgument());
+ tr.run();
+ }
+
+
+}
+
+BuiltInLinuxWebAppDeploymentProviderTests.startBuiltInLinuxWebAppDeploymentProviderTests();
diff --git a/_generated/AzureRmWebAppDeploymentV4/Tests/ContainerWebAppDeploymentProviderL0Tests.ts b/_generated/AzureRmWebAppDeploymentV4/Tests/ContainerWebAppDeploymentProviderL0Tests.ts
new file mode 100644
index 000000000000..6cc81a9913d1
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/Tests/ContainerWebAppDeploymentProviderL0Tests.ts
@@ -0,0 +1,70 @@
+import tl = require('azure-pipelines-task-lib');
+import { ContainerWebAppDeploymentProvider } from '../deploymentProvider/ContainerWebAppDeploymentProvider'
+import { TaskParametersUtility, TaskParameters } from '../operations/TaskParameters';
+import { getMockEndpoint } from '../node_modules/azure-pipelines-tasks-azure-arm-rest/Tests/mock_utils';
+import { mockAzureARMPreDeploymentSteps, mockContainerDeploySettings } from "./mock_utils";
+
+getMockEndpoint();
+mockAzureARMPreDeploymentSteps();
+mockContainerDeploySettings();
+
+export class ContainerWebAppDeploymentProviderL0Tests {
+
+ public static async startContainerWebAppDeploymentProviderL0Tests() {
+ await ContainerWebAppDeploymentProviderL0Tests.testForPreDeploymentSteps_ContainerWebApp();
+ await ContainerWebAppDeploymentProviderL0Tests.testForPreDeploymentStepsWithSlotEnabled_ContainerWebApp();
+ await ContainerWebAppDeploymentProviderL0Tests.testForUpdateDeploymentStatus_ContainerWebApp();
+ await ContainerWebAppDeploymentProviderL0Tests.testForDeployWebSteps_ContainerWebApp();
+ }
+
+ public static async testForPreDeploymentSteps_ContainerWebApp() {
+ try {
+ var taskParameters: TaskParameters = TaskParametersUtility.getParameters();
+ var containerWebAppDeploymentProvider : ContainerWebAppDeploymentProvider = new ContainerWebAppDeploymentProvider(taskParameters);
+ await containerWebAppDeploymentProvider.PreDeploymentStep();
+ tl.setResult(tl.TaskResult.Succeeded, 'PreDeployment steps for container web app should succeeded');
+ } catch(error) {
+ tl.setResult(tl.TaskResult.Failed, 'PreDeployment steps for container web app failed with error');
+ }
+ }
+
+ public static async testForPreDeploymentStepsWithSlotEnabled_ContainerWebApp() {
+ try {
+ var taskParameters: TaskParameters = TaskParametersUtility.getParameters();
+ taskParameters.DeployToSlotOrASEFlag = true;
+ taskParameters.ResourceGroupName = "MOCK_RESOURCE_GROUP_NAME";
+ var containerWebAppDeploymentProvider : ContainerWebAppDeploymentProvider = new ContainerWebAppDeploymentProvider(taskParameters);
+ await containerWebAppDeploymentProvider.PreDeploymentStep();
+ tl.setResult(tl.TaskResult.Succeeded, 'PreDeployment steps for container web app with slot enabled should succeeded');
+ } catch(error) {
+ tl.setResult(tl.TaskResult.Failed, 'PreDeployment steps for container web app with slot enabled failed with error');
+ }
+ }
+
+ public static async testForUpdateDeploymentStatus_ContainerWebApp() {
+ try {
+ var taskParameters: TaskParameters = TaskParametersUtility.getParameters();
+ var containerWebAppDeploymentProvider : ContainerWebAppDeploymentProvider = new ContainerWebAppDeploymentProvider(taskParameters);
+ await containerWebAppDeploymentProvider.PreDeploymentStep();
+ await containerWebAppDeploymentProvider.UpdateDeploymentStatus(true);
+ } catch(error) {
+ tl.setResult(tl.TaskResult.Failed, 'UpdateDeploymentStatus for container web app steps should succeeded but failed with error');
+ }
+ }
+
+ public static async testForDeployWebSteps_ContainerWebApp() {
+ try {
+ var taskParameters: TaskParameters = TaskParametersUtility.getParameters();
+ taskParameters.ScriptType = null;
+ var containerWebAppDeploymentProvider : ContainerWebAppDeploymentProvider = new ContainerWebAppDeploymentProvider(taskParameters);
+ await containerWebAppDeploymentProvider.PreDeploymentStep();
+ await containerWebAppDeploymentProvider.DeployWebAppStep();
+ tl.setResult(tl.TaskResult.Succeeded, 'Web app Deployment steps for container should succeeded');
+ } catch(error) {
+ tl.setResult(tl.TaskResult.Failed, 'Deployment web app steps for container failed with error');
+ }
+ }
+
+}
+
+ContainerWebAppDeploymentProviderL0Tests.startContainerWebAppDeploymentProviderL0Tests();
diff --git a/_generated/AzureRmWebAppDeploymentV4/Tests/ContainerWebAppDeploymentProviderTests.ts b/_generated/AzureRmWebAppDeploymentV4/Tests/ContainerWebAppDeploymentProviderTests.ts
new file mode 100644
index 000000000000..fb1d790687ac
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/Tests/ContainerWebAppDeploymentProviderTests.ts
@@ -0,0 +1,43 @@
+import tmrm = require('azure-pipelines-task-lib/mock-run');
+import * as path from 'path';
+import { setEndpointData, setAgentsData, mockTaskArgument, mockTaskInputParameters } from './utils';
+
+export class ContainerWebAppDeploymentProviderTests {
+
+ public static startContainerWebAppDeploymentProviderTests(){
+ let tp = path.join(__dirname, 'ContainerWebAppDeploymentProviderL0Tests.js');
+ let tr : tmrm.TaskMockRunner = new tmrm.TaskMockRunner(tp);
+ mockTaskInputParameters(tr);
+ tr.setInput("DockerNamespace", "DockerNamespace");
+ tr.setInput("DockerRepository", "DockerRepository");
+ tr.setInput("DockerImageTag","DockerImageTag");
+ setEndpointData();
+ setAgentsData();
+
+ const kudu = {
+ updateDeployment : function(_) {
+ return "MOCK_DEPLOYMENT_ID";
+ }
+ };
+
+ const utility = {
+ getKuduService: function()
+ {
+ return Promise.resolve(kudu);
+ }
+ };
+
+ tr.registerMock('azure-pipelines-tasks-azure-arm-rest/azureAppServiceUtility', {
+ AzureAppServiceUtility: function(_) {
+ return utility;
+ }
+ });
+
+ tr.setAnswers(mockTaskArgument());
+ tr.run();
+
+ }
+
+}
+
+ContainerWebAppDeploymentProviderTests.startContainerWebAppDeploymentProviderTests();
diff --git a/_generated/AzureRmWebAppDeploymentV4/Tests/DeploymentFactoryL0Tests.ts b/_generated/AzureRmWebAppDeploymentV4/Tests/DeploymentFactoryL0Tests.ts
new file mode 100644
index 000000000000..552c63e6d0fe
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/Tests/DeploymentFactoryL0Tests.ts
@@ -0,0 +1,177 @@
+import tl = require('azure-pipelines-task-lib');
+import { DeploymentFactory } from '../deploymentProvider/DeploymentFactory';
+import { IWebAppDeploymentProvider } from '../deploymentProvider/IWebAppDeploymentProvider';
+import { TaskParametersUtility, TaskParameters, DeploymentType } from '../operations/TaskParameters';
+import { PackageType } from 'azure-pipelines-tasks-webdeployment-common/packageUtility';
+
+export class DeploymentFactoryL0Tests {
+
+ public static async startDeploymentFactoryL0Tests() {
+ await DeploymentFactoryL0Tests.testForLinuxWebDeploymentProvider();
+ await DeploymentFactoryL0Tests.testForWindowsWebAppRunFromZipProvider();
+ await DeploymentFactoryL0Tests.testForWindowsWebAppWarDeployProvider();
+ await DeploymentFactoryL0Tests.testForWindowsWebAppZipDeployProvider()
+ await DeploymentFactoryL0Tests.testForPublishProfileProvider();
+ await DeploymentFactoryL0Tests.testForContainerWebAppDeploymentProvider();
+ await DeploymentFactoryL0Tests.testForWindowsWebAppZipDeployProvider_UserSelected();
+ await DeploymentFactoryL0Tests.testForWindowsWebAppRunFromZipProvider_UserSelected();
+ await DeploymentFactoryL0Tests.testForWindowsWebAppWebDeployProvider_UserSelected()
+ }
+
+ public static async testForLinuxWebDeploymentProvider() {
+ try {
+ var taskParameters: TaskParameters = TaskParametersUtility.getParameters();
+ var deploymentFactory: DeploymentFactory = new DeploymentFactory(taskParameters);
+ var linuxWebAppDeploymentProvider: IWebAppDeploymentProvider = await new DeploymentFactory(taskParameters).GetDeploymentProvider();
+ if(linuxWebAppDeploymentProvider.constructor.name === "BuiltInLinuxWebAppDeploymentProvider") {
+ tl.setResult(tl.TaskResult.Succeeded, 'LinuxWebAppDeploymentProvider should be excepted.');
+ } else {
+ tl.setResult(tl.TaskResult.Failed, 'LinuxWebAppDeploymentProvider should be excepted but failed.');
+ }
+ } catch(error) {
+ tl.setResult(tl.TaskResult.Failed, 'LinuxWebAppDeploymentProvider should be excepted but failed with error.'+error);
+ }
+ }
+
+ public static async testForWindowsWebAppRunFromZipProvider() {
+ try {
+ var taskParameters: TaskParameters = TaskParametersUtility.getParameters();
+ taskParameters.isLinuxApp = false;
+ taskParameters.Package.isMSBuildPackage = () :Promise => {return Promise.resolve(false)};
+ var deploymentFactory: DeploymentFactory = new DeploymentFactory(taskParameters);
+ var windowsWebAppZipDeployProvider: IWebAppDeploymentProvider = await deploymentFactory.GetDeploymentProvider();
+ if(windowsWebAppZipDeployProvider.constructor.name === "WindowsWebAppRunFromZipProvider"){
+ tl.setResult(tl.TaskResult.Succeeded, 'WindowsWebAppRunFromZipProvider should be excepted.');
+ } else {
+ tl.setResult(tl.TaskResult.Failed, 'WindowsWebAppRunFromZipProvider should be excepted but failed.');
+ }
+ } catch(error) {
+ tl.setResult(tl.TaskResult.Failed, 'WindowsWebAppRunFromZipProvider should be excepted but failed with error.');
+ }
+ }
+
+ public static async testForWindowsWebAppWarDeployProvider() {
+ try {
+ var taskParameters: TaskParameters = TaskParametersUtility.getParameters();
+ taskParameters.isLinuxApp = false;
+ taskParameters.Package.getPackageType = () :PackageType => {return PackageType.war};
+ var deploymentFactory: DeploymentFactory = new DeploymentFactory(taskParameters);
+ var windowsWebAppWarDeployProvider: IWebAppDeploymentProvider = await deploymentFactory.GetDeploymentProvider();
+ if(windowsWebAppWarDeployProvider.constructor.name === "WindowsWebAppWarDeployProvider"){
+ tl.setResult(tl.TaskResult.Succeeded, 'WindowsWebAppWarDeployProvider should be excepted.');
+ } else {
+ tl.setResult(tl.TaskResult.Failed, 'WindowsWebAppWarDeployProvider should be excepted but failed.');
+ }
+ } catch(error) {
+ tl.setResult(tl.TaskResult.Failed, 'WindowsWebAppWarDeployProvider should be excepted but failed with error.');
+ }
+ }
+
+ public static async testForWindowsWebAppZipDeployProvider() {
+ try {
+ var taskParameters: TaskParameters = TaskParametersUtility.getParameters();
+ taskParameters.isLinuxApp = false;
+ taskParameters.Package.getPackageType = () :PackageType => {return PackageType.jar};
+ var deploymentFactory: DeploymentFactory = new DeploymentFactory(taskParameters);
+ var windowsWebAppZipDeployProvider: IWebAppDeploymentProvider = await deploymentFactory.GetDeploymentProvider();
+ if(windowsWebAppZipDeployProvider.constructor.name === "WindowsWebAppZipDeployProvider"){
+ tl.setResult(tl.TaskResult.Succeeded, 'WindowsWebAppZipDeployProvider should be excepted.');
+ } else {
+ tl.setResult(tl.TaskResult.Failed, 'WindowsWebAppZipDeployProvider should be excepted but failed.');
+ }
+ } catch(error) {
+ tl.setResult(tl.TaskResult.Failed, 'WindowsWebAppZipDeployProvider should be excepted but failed with error.');
+ }
+ }
+
+ public static async testForWindowsWebAppWebDeployProvider_UserSelected() {
+ try {
+ var taskParameters: TaskParameters = TaskParametersUtility.getParameters();
+ taskParameters.isLinuxApp = false;
+ taskParameters.UseWebDeploy = true;
+ taskParameters.DeploymentType = DeploymentType.webDeploy;
+ var deploymentFactory: DeploymentFactory = new DeploymentFactory(taskParameters);
+ var windowsWebAppWebDeployProvider: IWebAppDeploymentProvider = await deploymentFactory.GetDeploymentProvider();
+ if(windowsWebAppWebDeployProvider.constructor.name === "WindowsWebAppWebDeployProvider"){
+ tl.setResult(tl.TaskResult.Succeeded, 'WindowsWebAppWebDeployProvider for user selected should be excepted.');
+ } else {
+ tl.setResult(tl.TaskResult.Failed, 'WindowsWebAppWebDeployProvider for user selected should be excepted but failed.');
+ }
+ } catch(error) {
+ tl.setResult(tl.TaskResult.Failed, 'WindowsWebAppWebDeployProvider for user selected should be excepted but failed with error.');
+ }
+ }
+
+ public static async testForWindowsWebAppZipDeployProvider_UserSelected() {
+ try {
+ var taskParameters: TaskParameters = TaskParametersUtility.getParameters();
+ taskParameters.isLinuxApp = false;
+ taskParameters.UseWebDeploy = true;
+ taskParameters.DeploymentType = DeploymentType.zipDeploy;
+ var deploymentFactory: DeploymentFactory = new DeploymentFactory(taskParameters);
+ var windowsWebAppZipDeployProvider: IWebAppDeploymentProvider = await deploymentFactory.GetDeploymentProvider();
+ if(windowsWebAppZipDeployProvider.constructor.name === "WindowsWebAppZipDeployProvider"){
+ tl.setResult(tl.TaskResult.Succeeded, 'WindowsWebAppZipDeployProvider for user selected should be excepted.');
+ } else {
+ tl.setResult(tl.TaskResult.Failed, 'WindowsWebAppZipDeployProvider for user selected should be excepted but failed.');
+ }
+ } catch(error) {
+ tl.setResult(tl.TaskResult.Failed, 'WindowsWebAppZipDeployProvider for user selected should be excepted but failed with error.');
+ }
+ }
+
+ public static async testForWindowsWebAppRunFromZipProvider_UserSelected() {
+ try {
+ var taskParameters: TaskParameters = TaskParametersUtility.getParameters();
+ taskParameters.isLinuxApp = false;
+ taskParameters.UseWebDeploy = true;
+ taskParameters.DeploymentType = DeploymentType.runFromZip;
+ var deploymentFactory: DeploymentFactory = new DeploymentFactory(taskParameters);
+ var windowsWebAppRunFromZipProvider: IWebAppDeploymentProvider = await deploymentFactory.GetDeploymentProvider();
+ if(windowsWebAppRunFromZipProvider.constructor.name === "WindowsWebAppRunFromZipProvider"){
+ tl.setResult(tl.TaskResult.Succeeded, 'WindowsWebAppRunFromZipProvider for user selected should be excepted.');
+ } else {
+ tl.setResult(tl.TaskResult.Failed, 'WindowsWebAppRunFromZipProvider for user selected should be excepted but failed.');
+ }
+ } catch(error) {
+ tl.setResult(tl.TaskResult.Failed, 'WindowsWebAppRunFromZipProvider for user selected should be excepted but failed with error.');
+ }
+ }
+
+ public static async testForPublishProfileProvider() {
+ try {
+ var taskParameters: TaskParameters = TaskParametersUtility.getParameters();
+ taskParameters.ConnectionType = "PublishProfile";
+ var deploymentFactory: DeploymentFactory = new DeploymentFactory(taskParameters);
+ var publishProfileProvider : IWebAppDeploymentProvider = await deploymentFactory.GetDeploymentProvider();
+ if(publishProfileProvider.constructor.name === "PublishProfileWebAppDeploymentProvider") {
+ tl.setResult(tl.TaskResult.Succeeded, 'PublishProfileWebAppDeploymentProvider should be excepted.');
+ } else {
+ tl.setResult(tl.TaskResult.Failed, 'PublishProfileWebAppDeploymentProvider should be excepted but failed.');
+ }
+ } catch(error) {
+ tl.setResult(tl.TaskResult.Failed, 'PublishProfileWebAppDeploymentProvider should be excepted but failed with error.');
+ }
+ }
+
+ public static async testForContainerWebAppDeploymentProvider() {
+ try {
+ var taskParameters: TaskParameters = TaskParametersUtility.getParameters();
+ taskParameters.isLinuxApp = true;
+ taskParameters.isBuiltinLinuxWebApp = false;
+ taskParameters.isContainerWebApp = true;
+ var deploymentFactory: DeploymentFactory = new DeploymentFactory(taskParameters);
+ var containerWebAppDeploymentProvider : IWebAppDeploymentProvider = await deploymentFactory.GetDeploymentProvider();
+ if(containerWebAppDeploymentProvider.constructor.name === "ContainerWebAppDeploymentProvider") {
+ tl.setResult(tl.TaskResult.Succeeded, 'ContainerWebAppDeploymentProvider should be excepted.');
+ } else {
+ tl.setResult(tl.TaskResult.Failed, 'ContainerWebAppDeploymentProvider should be excepted but failed.');
+ }
+ } catch(error) {
+ tl.setResult(tl.TaskResult.Failed, 'ContainerWebAppDeploymentProvider should be excepted but failed with error.');
+ }
+ }
+
+}
+
+DeploymentFactoryL0Tests.startDeploymentFactoryL0Tests();
diff --git a/_generated/AzureRmWebAppDeploymentV4/Tests/DeploymentFactoryTests.ts b/_generated/AzureRmWebAppDeploymentV4/Tests/DeploymentFactoryTests.ts
new file mode 100644
index 000000000000..6cbde3e31e5a
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/Tests/DeploymentFactoryTests.ts
@@ -0,0 +1,19 @@
+import tmrm = require('azure-pipelines-task-lib/mock-run');
+import * as path from 'path';
+import { setAgentsData, mockTaskArgument, mockTaskInputParameters } from './utils';
+
+export class DeploymentFactoryTests {
+
+ public static startDeploymentFactoryTests() {
+ let tp = path.join(__dirname, 'DeploymentFactoryL0Tests.js');
+ let tr : tmrm.TaskMockRunner = new tmrm.TaskMockRunner(tp);
+ mockTaskInputParameters(tr);
+ setAgentsData();
+
+ tr.setAnswers(mockTaskArgument());
+ tr.run();
+ }
+
+}
+
+DeploymentFactoryTests.startDeploymentFactoryTests();
diff --git a/_generated/AzureRmWebAppDeploymentV4/Tests/L0.ts b/_generated/AzureRmWebAppDeploymentV4/Tests/L0.ts
new file mode 100644
index 000000000000..b2eb464a706f
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/Tests/L0.ts
@@ -0,0 +1,236 @@
+import * as path from "path";
+import * as assert from "assert";
+import * as ttm from "azure-pipelines-task-lib/mock-test";
+import tl = require('azure-pipelines-task-lib');
+
+var AppServiceTests = require("../node_modules/azure-pipelines-tasks-azure-arm-rest/Tests/L0-azure-arm-app-service.js");
+var KuduServiceTests = require("../node_modules/azure-pipelines-tasks-azure-arm-rest/Tests/L0-azure-arm-app-service-kudu-tests.js");
+var ApplicationInsightsTests = require("../node_modules/azure-pipelines-tasks-azure-arm-rest/Tests/L0-azure-arm-appinsights-tests.js");
+var ResourcesTests = require("../node_modules/azure-pipelines-tasks-azure-arm-rest/Tests/L0-azure-arm-resource-tests.js");
+
+const tmpDir = path.join(__dirname, 'temp');
+
+describe('AzureRmWebAppDeployment Suite', function() {
+ this.timeout(60000);
+ this.beforeAll(done => {
+ tl.mkdirP(tmpDir);
+ done();
+ });
+ this.afterAll(done => {
+ tl.rmRF(tmpDir);
+ done();
+ });
+
+ before((done) => {
+ if(!tl.exist(path.join(__dirname, '..', 'node_modules/azure-pipelines-tasks-azure-arm-rest/Tests/node_modules'))) {
+ tl.cp(path.join( __dirname, 'node_modules'), path.join(__dirname, '..', 'node_modules/azure-pipelines-tasks-azure-arm-rest/Tests'), '-rf', true);
+ }
+
+ done();
+ });
+
+ ApplicationInsightsTests.ApplicationInsightsTests();
+ AppServiceTests.AzureAppServiceMockTests();
+ KuduServiceTests.KuduServiceTests();
+ ResourcesTests.ResourcesTests();
+
+ it('AzureRmWebAppDeploymentV4 DeploymentFactoryTests', (done: MochaDone) => {
+ let tp = path.join(__dirname,'DeploymentFactoryTests.js');
+ let tr : ttm.MockTestRunner = new ttm.MockTestRunner(tp);
+ try {
+ tr.run();
+ assert(tr.stdOutContained('LinuxWebAppDeploymentProvider should be excepted.'), 'Should have printed: LinuxWebAppDeploymentProvider should be expected.');
+ assert(tr.stdOutContained('WindowsWebAppRunFromZipProvider should be excepted.'), 'Should have printed: WindowsWebAppRunFromZipProvider should be expected.');
+ assert(tr.stdOutContained('WindowsWebAppWarDeployProvider should be excepted.'), 'Should have printed: WindowsWebAppWarDeployProvider should be expected.');
+ assert(tr.stdOutContained('WindowsWebAppZipDeployProvider should be excepted.'), 'Should have printed: WindowsWebAppZipDeployProvider should be expected.');
+ assert(tr.stdOutContained('PublishProfileWebAppDeploymentProvider should be excepted.'), 'Should have printed: PublishProfileWebAppDeploymentProvider should be excepted.');
+ assert(tr.stdOutContained('ContainerWebAppDeploymentProvider should be excepted.'), 'Should have printed: ContainerWebAppDeploymentProvider should be excepted.');
+ assert(tr.stdOutContained('WindowsWebAppRunFromZipProvider for user selected should be excepted.'), 'Should have printed: WindowsWebAppRunFromZipProvider for user selected should be excepted.');
+ assert(tr.stdOutContained('WindowsWebAppZipDeployProvider for user selected should be excepted.'), 'Should have printed: WindowsWebAppZipDeployProvider for user selected should be excepted.');
+ assert(tr.stdOutContained('WindowsWebAppWebDeployProvider for user selected should be excepted.'), 'Should have printed: WindowsWebAppWebDeployProvider for user selected should be excepted.');
+ done();
+ }
+ catch(error) {
+ done(error);
+ }
+ });
+
+ it('AzureRmWebAppDeploymentV4 AzureRmWebAppDeploymentProviderTests', (done: MochaDone) => {
+ let tp = path.join(__dirname,'AzureRmWebAppDeploymentProviderTests.js');
+ let tr : ttm.MockTestRunner = new ttm.MockTestRunner(tp);
+ try {
+ tr.run();
+ assert(tr.stdOutContained('Resource Group: MOCK_RESOURCE_GROUP_NAME'), 'Should have printed: Resource Group: MOCK_RESOURCE_GROUP_NAME');
+ assert(tr.stdOutContained('PreDeployment steps with slot enabled should succeeded'), 'Should have printed: PreDeployment steps withSlotEnabled should succeeded');
+ assert(tr.stdOutContained('Active DeploymentId :MOCK_DEPLOYMENT_ID'), 'Should have printed: Active DeploymentId :MOCK_DEPLOYMENT_ID.');
+ assert(tr.stdOutContained('PreDeployment steps with virtual application should succeeded'), 'Should have printed: PreDeployment steps with slot enabled should succeeded');
+ done();
+ }
+ catch(error) {
+ done(error);
+ }
+ });
+
+ it('AzureRmWebAppDeploymentV4 BuiltInLinuxWebAppDeploymentProviderTests', (done: MochaDone) => {
+ let tp = path.join(__dirname,'BuiltInLinuxWebAppDeploymentProviderTests.js');
+ let tr : ttm.MockTestRunner = new ttm.MockTestRunner(tp);
+ try {
+ tr.run();
+ assert(tr.stdOutContained('PreDeployment steps for built in linux web app should succeeded'), 'Should have printed: PreDeployment steps for built in linux web app should succeeded');
+ assert(tr.stdOutContained('PreDeployment steps for built in linux web app with slot enabled should succeeded'), 'Should have printed: PreDeployment steps for built in linux web app withSlotEnabled should succeeded');
+ assert(tr.stdOutContained('set AppServiceApplicationUrl=http://mytestapp.azurewebsites.net'), 'Should have printed: set AppServiceApplicationUrl=http://mytestapp.azurewebsites.net');
+ assert(tr.stdOutContained('Active DeploymentId :MOCK_DEPLOYMENT_ID'), 'Should have printed: Active DeploymentId :MOCK_DEPLOYMENT_ID.');
+ assert(tr.stdOutContained('loc_mock_PackageDeploymentSuccess'), 'Should have printed: loc_mock_PackageDeploymentSuccess');
+ assert(tr.stdOutContained('Skipped updating the SCM value'), 'Should have printed: Skipped updating the SCM value');
+ assert(tr.stdOutContained('DeployWebAppStep for built in linux web app steps with zip package succeeded'), 'Should have printed: DeployWebAppStep for built in linux web app steps with zip package succeeded');
+ assert(tr.stdOutContained('DeployWebAppStep for built in linux web app steps with folder package succeeded'), 'Should have printed: DeployWebAppStep for built in linux web app steps with folder package succeeded');
+ assert(tr.stdOutContained('DeployWebAppStep for built in linux web app steps with war package succeeded'), 'Should have printed: DeployWebAppStep for built in linux web app steps with war package succeeded');
+ assert(tr.stdOutContained('DeployWebAppStep for built in linux web app steps with jar package succeeded'), 'Should have printed: DeployWebAppStep for built in linux web app steps with jar package succeeded');
+ done();
+ }
+ catch(error) {
+ done(error);
+ }
+ });
+
+ it('AzureRmWebAppDeploymentV4 ContainerWebAppDeploymentProviderTests', (done: MochaDone) => {
+ let tp = path.join(__dirname,'ContainerWebAppDeploymentProviderTests.js');
+ let tr : ttm.MockTestRunner = new ttm.MockTestRunner(tp);
+ try {
+ tr.run();
+ assert(tr.stdOutContained('PreDeployment steps for container web app should succeeded'), 'Should have printed: PreDeployment steps for container web app should succeeded');
+ assert(tr.stdOutContained('PreDeployment steps for container web app with slot enabled should succeeded'), 'Should have printed: PreDeployment steps for container web app withSlotEnabled should succeeded');
+ assert(tr.stdOutContained('Resource Group: MOCK_RESOURCE_GROUP_NAME'), 'Should have printed: Resource Group: MOCK_RESOURCE_GROUP_NAME');
+ assert(tr.stdOutContained('Active DeploymentId :MOCK_DEPLOYMENT_ID'), 'Should have printed: Active DeploymentId :MOCK_DEPLOYMENT_ID.');
+ assert(tr.stdOutContained('loc_mock_UpdatingAppServiceConfigurationSettings {"linuxFxVersion":"DOCKER|dockernamespace/dockerrepository:DockerImageTag"}'), 'Should have printed: loc_mock_UpdatingAppServiceConfigurationSettings {"linuxFxVersion":"DOCKER|dockernamespace/dockerrepository:DockerImageTag"}');
+ assert(tr.stdOutContained('loc_mock_UpdatedAppServiceConfigurationSettings'), 'Should have printed: loc_mock_UpdatedAppServiceConfigurationSettings');
+ assert(tr.stdOutContained('loc_mock_UpdatedAppServiceApplicationSettings') || tr.stdOutContained('loc_mock_AppServiceApplicationSettingsAlreadyPresent'), 'Should have printed: loc_mock_UpdatedAppServiceApplicationSettings or loc_mock_AppServiceApplicationSettingsAlreadyPresent');
+ assert(tr.stdOutContained('Web app Deployment steps for container should succeeded'), 'Should have printed: Web app Deployment steps for container should succeeded');
+ done();
+ }
+ catch(error) {
+ done(error);
+ }
+ });
+
+ it('AzureRmWebAppDeploymentV4 WindowsWebAppRunFromZipProviderTests', (done: MochaDone) => {
+ let tp = path.join(__dirname,'WindowsWebAppRunFromZipProviderTests.js');
+ let tr : ttm.MockTestRunner = new ttm.MockTestRunner(tp);
+ try {
+ tr.run();
+ assert(tr.stdOutContained('PreDeployment steps for run from zip should succeeded'), 'Should have printed: PreDeployment steps for run from zip should succeeded');
+ assert(tr.stdOutContained('PreDeployment steps for run from zip with slot enabled should succeeded'), 'Should have printed: PreDeployment steps for run from zip with slot enabled should succeeded');
+ assert(tr.stdOutContained('set AppServiceApplicationUrl=http://mytestapp.azurewebsites.net'), 'Should have printed: set AppServiceApplicationUrl=http://mytestapp.azurewebsites.net');
+ assert(tr.stdOutContained('Active DeploymentId :MOCK_DEPLOYMENT_ID'), 'Should have printed: Active DeploymentId :MOCK_DEPLOYMENT_ID.');
+ assert(tr.stdOutContained('DeployWebAppStep for run from zip steps with zip package succeeded'), 'Should have printed: DeployWebAppStep for run from zip steps with zip package succeeded.')
+ assert(tr.stdOutContained('DeployWebAppStep for run from zip steps with zip package succeeded'), 'Should have printed: DeployWebAppStep for run from zip steps with zip package succeeded.');
+ assert(tr.stdOutContained('loc_mock_UpdatingAppServiceApplicationSettings {"WEBSITE_RUN_FROM_PACKAGE":"1"}'), 'Should have printed: loc_mock_UpdatingAppServiceApplicationSettings {"WEBSITE_RUN_FROM_PACKAGE":"1"}');
+ assert(tr.stdOutContained('loc_mock_UpdatedAppServiceApplicationSettings') || tr.stdOutContained('loc_mock_AppServiceApplicationSettingsAlreadyPresent'), 'Should have printed: loc_mock_UpdatedAppServiceApplicationSettings or loc_mock_AppServiceApplicationSettingsAlreadyPresent');
+ assert(tr.stdOutContained('loc_mock_PackageDeploymentSuccess'), 'Should have printed: loc_mock_PackageDeploymentSuccess.');
+ assert(tr.stdOutContained('Compressed folder into zip webAppPkg.zip'), 'Should have printed: Compressed folder into zip webAppPkg.zip.');
+ assert(tr.stdOutContained('DeployWebAppStep for run from zip steps with folder package succeeded'), 'Should have printed: DeployWebAppStep for run from zip steps with folder package succeeded.');
+ done();
+ }
+ catch(error) {
+ done(error);
+ }
+ });
+
+ it('AzureRmWebAppDeploymentV4 WindowsWebAppWarDeployProviderTests', (done: MochaDone) => {
+ let tp = path.join(__dirname,'WindowsWebAppWarDeployProviderTests.js');
+ let tr : ttm.MockTestRunner = new ttm.MockTestRunner(tp);
+ try {
+ tr.run();
+ assert(tr.stdOutContained('PreDeployment steps for war deploy should succeeded'), 'Should have printed: PreDeployment steps for war deploy should succeeded');
+ assert(tr.stdOutContained('PreDeployment steps for war deploy with slot enabled should succeeded'), 'Should have printed: PreDeployment steps for war deploy with slot enabled should succeeded');
+ assert(tr.stdOutContained('set AppServiceApplicationUrl=http://mytestapp.azurewebsites.net'), 'Should have printed: set AppServiceApplicationUrl=http://mytestapp.azurewebsites.net');
+ assert(tr.stdOutContained('Active DeploymentId :MOCK_DEPLOYMENT_ID'), 'Should have printed: Active DeploymentId :MOCK_DEPLOYMENT_ID.');
+ assert(tr.stdOutContained('DeployWebAppStep for war deploy steps with war package succeeded'), 'Should have printed: DeployWebAppStep for war deploy steps with war package succeeded.')
+ assert(tr.stdOutContained('loc_mock_AppServiceApplicationURL http://mytestapp.azurewebsites.net'), 'Should have printed: loc_mock_AppServiceApplicationURL http://mytestapp.azurewebsites.net');
+ assert(tr.stdOutContained('loc_mock_WarPackageDeploymentInitiated'), 'Should have printed: loc_mock_WarPackageDeploymentInitiated.');
+ assert(tr.stdOutContained('loc_mock_PackageDeploymentSuccess'), 'Should have printed: loc_mock_PackageDeploymentSuccess.');
+ done();
+ }
+ catch(error) {
+ done(error);
+ }
+ });
+
+ it('AzureRmWebAppDeploymentV4 WindowsWebAppZipDeployProviderTests', (done: MochaDone) => {
+ let tp = path.join(__dirname,'WindowsWebAppZipDeployProviderTests.js');
+ let tr : ttm.MockTestRunner = new ttm.MockTestRunner(tp);
+ try {
+ tr.run();
+ assert(tr.stdOutContained('PreDeployment steps for zip deploy should succeeded'), 'Should have printed: PreDeployment steps for zip deploy should succeeded');
+ assert(tr.stdOutContained('PreDeployment steps for zip deploy with slot enabled should succeeded'), 'Should have printed: PreDeployment steps for zip deploy with slot enabled should succeeded');
+ assert(tr.stdOutContained('set AppServiceApplicationUrl=http://mytestapp.azurewebsites.net'), 'Should have printed: set AppServiceApplicationUrl=http://mytestapp.azurewebsites.net');
+ assert(tr.stdOutContained('Active DeploymentId :MOCK_DEPLOYMENT_ID'), 'Should have printed: Active DeploymentId :MOCK_DEPLOYMENT_ID.');
+ assert(tr.stdOutContained('DeployWebAppStep for zip deploy steps with zip package succeeded'), 'Should have printed: DeployWebAppStep for zip deploy steps with zip package succeeded.')
+ assert(tr.stdOutContained('loc_mock_GotconnectiondetailsforazureRMWebApp0 mytestapp'), 'Should have printed: loc_mock_GotconnectiondetailsforazureRMWebApp0 mytestapp');
+ assert(tr.stdOutContained('loc_mock_PackageDeploymentSuccess'), 'Should have printed: loc_mock_PackageDeploymentSuccess.');
+ assert(tr.stdOutContained('DeployWebAppStep for zip deploy steps with folder package succeeded'), 'Should have printed: DeployWebAppStep for zip deploy steps with folder package succeeded.');
+ assert(tr.stdOutContained('Compressed folder into zip webAppPkg.zip'), 'Should have printed: Compressed folder into zip webAppPkg.zip.');
+ done();
+ }
+ catch(error) {
+ done(error);
+ }
+ });
+
+
+ it('AzureRmWebAppDeploymentV4 WindowsWebAppWebDeployProviderTests', (done: MochaDone) => {
+ let tp = path.join(__dirname,'WindowsWebAppWebDeployProviderTests.js');
+ let tr : ttm.MockTestRunner = new ttm.MockTestRunner(tp);
+ try {
+ tr.run();
+ assert(tr.stdOutContained('PreDeployment steps for web deploy should succeeded'), 'Should have printed: PreDeployment steps for web deploy should succeeded');
+ assert(tr.stdOutContained('PreDeployment steps for web deploy with slot enabled should succeeded'), 'Should have printed: PreDeployment steps for web deploy with slot enabled should succeeded');
+ assert(tr.stdOutContained('set AppServiceApplicationUrl=http://mytestapp.azurewebsites.net'), 'Should have printed: set AppServiceApplicationUrl=http://mytestapp.azurewebsites.net');
+ assert(tr.stdOutContained('Active DeploymentId :MOCK_DEPLOYMENT_ID'), 'Should have printed: Active DeploymentId :MOCK_DEPLOYMENT_ID.');
+ assert(tr.stdOutContained('DeployWebAppStep for web deploy steps with zip package succeeded'), 'Should have printed: DeployWebAppStep for web deploy steps with zip package succeeded.');
+ assert(tr.stdOutContained('DeployWebAppStep for web deploy steps with zip package succeeded'), 'Should have printed: DeployWebAppStep for web deploy steps with zip package succeeded.');
+ assert(tr.stdOutContained('loc_mock_GotconnectiondetailsforazureRMWebApp0 mytestapp'), 'Should have printed: loc_mock_GotconnectiondetailsforazureRMWebApp0 mytestapp');
+ assert(tr.stdOutContained('loc_mock_AppServiceApplicationURL http://mytestapp.azurewebsites.net'), 'Should have printed: loc_mock_AppServiceApplicationURL http://mytestapp.azurewebsites.net.');
+ assert(tr.stdOutContained('loc_mock_Successfullydeployedpackageusingkuduserviceat webAppPkg.zip /site/wwwroot'), 'Should have printed: loc_mock_Successfullydeployedpackageusingkuduserviceat webAppPkg.zip /site/wwwroot.');
+ assert(tr.stdOutContained('loc_mock_Successfullydeployedpackageusingkuduserviceat webAppPkg.zip physicalPath'), 'Should have printed: loc_mock_Successfullydeployedpackageusingkuduserviceat webAppPkg.zip physicalPath');
+ assert(tr.stdOutContained('DeployWebAppStep for web deploy steps with virtual application with zip package succeeded'), 'Should have printed: DeployWebAppStep for web deploy steps with virtual application with zip package succeeded');
+ done();
+ }
+ catch(error) {
+ done(error);
+ }
+ });
+
+ it('AzureRmWebAppDeploymentV4 PublishProfileWebAppDeploymentProviderTests', (done: MochaDone) => {
+ let tp = path.join(__dirname,'PublishProfileWebAppDeploymentProviderTests.js');
+ let tr : ttm.MockTestRunner = new ttm.MockTestRunner(tp);
+ try {
+ tr.run();
+ assert(tr.stdOutContained('PreDeployment steps for publish profile should succeeded'), 'Should have printed: PreDeployment steps for publish profile should succeeded');
+ assert(tr.stdOutContained('set AppServiceApplicationUrl=SiteUrl'), 'Should have printed: set AppServiceApplicationUrl=SiteUrl');
+ assert(tr.stdOutContained('UpdateDeploymentStatus for publish profile steps should succeeded'), 'Should have printed: UpdateDeploymentStatus for publish profile steps should succeeded');
+ assert(tr.stdOutContained('DeployWebAppStep for publish profile steps steps failed with errorError: loc_mock_PublishusingwebdeployoptionsaresupportedonlywhenusingWindowsagent'), 'Should have printed: DeployWebAppStep for publish profile steps steps failed with errorError: loc_mock_PublishusingwebdeployoptionsaresupportedonlywhenusingWindowsagent');
+ done();
+ }
+ catch(error) {
+ done(error);
+ }
+ });
+
+ it('AzureRmWebAppDeploymentV4 Validate TaskParameters', (done: MochaDone) => {
+ let tp = path.join(__dirname,'TaskParametersTests.js');
+ let tr : ttm.MockTestRunner = new ttm.MockTestRunner(tp);
+ try {
+ tr.run();
+ assert(tr.stdOutContained('SCM_COMMAND_IDLE_TIMEOUT variable PRESENT'), 'Should have printed: SCM_COMMAND_IDLE_TIMEOUT variable PRESENT');
+ assert(tr.stdOutContained('msbuild package PRESENT'), 'Should have printed: msbuild package PRESENT');
+ done();
+ }
+ catch(error) {
+ console.log(tr.stdout);
+ console.log(tr.stderr);
+ done(error);
+ }
+ });
+
+});
\ No newline at end of file
diff --git a/_generated/AzureRmWebAppDeploymentV4/Tests/L0GenerateWebConfigForNode.ts b/_generated/AzureRmWebAppDeploymentV4/Tests/L0GenerateWebConfigForNode.ts
new file mode 100644
index 000000000000..1e1459c9eec6
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/Tests/L0GenerateWebConfigForNode.ts
@@ -0,0 +1,283 @@
+import ma = require('azure-pipelines-task-lib/mock-answer');
+import tmrm = require('azure-pipelines-task-lib/mock-run');
+import path = require('path');
+
+let taskPath = path.join(__dirname, '..', 'azurermwebappdeployment.js');
+let tr: tmrm.TaskMockRunner = new tmrm.TaskMockRunner(taskPath);
+tr.setInput('ConnectedServiceName', 'AzureRMSpn');
+tr.setInput('WebAppName', 'mytestapp');
+tr.setInput('Package', 'webAppPkg.zip');
+tr.setInput('UseWebDeploy', 'true');
+tr.setInput('GenerateWebConfig','true');
+tr.setInput('WebConfigParameters','-appType node -Handler iisnode -NodeStartFile server.js');
+process.env['TASK_TEST_TRACE'] = "1";
+process.env["ENDPOINT_AUTH_AzureRMSpn"] = "{\"parameters\":{\"serviceprincipalid\":\"spId\",\"serviceprincipalkey\":\"spKey\",\"tenantid\":\"tenant\"},\"scheme\":\"ServicePrincipal\"}";
+process.env["ENDPOINT_AUTH_PARAMETER_AzureRMSpn_SERVICEPRINCIPALID"] = "spId";
+process.env["ENDPOINT_AUTH_PARAMETER_AzureRMSpn_SERVICEPRINCIPALKEY"] = "spKey";
+process.env["ENDPOINT_AUTH_PARAMETER_AzureRMSpn_TENANTID"] = "tenant";
+process.env["ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONNAME"] = "sName";
+process.env["ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONID"] = "sId";
+process.env["AZURE_HTTP_USER_AGENT"] = "TFS_useragent";
+process.env["SYSTEM_DEFAULTWORKINGDIRECTORY"] = "DefaultWorkingDirectory";
+process.env["BUILD_SOURCEVERSION"] = "46da24f35850f455185b9188b4742359b537076f";
+process.env["BUILD_BUILDID"] = "1",
+process.env["RELEASE_RELEASEID"] = "1";
+process.env["BUILD_BUILDNUMBER"] = "1";
+process.env["RELEASE_RELEASENAME"] = "Release-1";
+process.env["BUILD_REPOSITORY_PROVIDER"] = "TfsGit";
+process.env["BUILD_REPOSITORY_NAME"] = "MyFirstProject";
+process.env["SYSTEM_TEAMFOUNDATIONCOLLECTIONURI"] = "https://abc.visualstudio.com/";
+process.env["SYSTEM_TEAMPROJECT"] = "MyFirstProject";
+process.env["BUILD_SOURCEVERISONAUTHOR"] = "author";
+process.env["RELEASE_RELEASEURI"] = "vstfs:///ReleaseManagement/Release/1";
+process.env["AGENT_NAME"] = "author";
+
+// provide answers for task mock
+let a: ma.TaskLibAnswers = {
+ "which": {
+ "msdeploy": "msdeploy"
+ },
+ "stats": {
+ "webAppPkg.zip": {
+ "isFile": true
+ }
+ },
+ "osType": {
+ "osType": "Windows"
+ },
+ "checkPath": {
+ "webAppPkg.zip": true,
+ "webAppPkg": true,
+ "msdeploy": true
+ },
+ "exec": {
+ "msdeploy -verb:getParameters -source:package=\'DefaultWorkingDirectory\\temp_web_package.zip\'": {
+ "code": 0,
+ "stdout": "Executed Successfully"
+ },
+ "msdeploy -verb:sync -source:package=\'DefaultWorkingDirectory\\temp_web_package.zip\' -dest:auto,ComputerName=\'https://mytestappKuduUrl/msdeploy.axd?site=mytestapp\',UserName=\'$mytestapp\',Password=\'mytestappPwd\',AuthType=\'Basic\' -setParam:name=\'IIS Web Application Name\',value=\'mytestapp\' -enableRule:DoNotDeleteRule -userAgent:TFS_useragent": {
+ "code": 0,
+ "stdout": "Executed Successfully"
+ }
+ },
+ "rmRF": {
+ "temp_web_package_random_path": {
+ "success": true
+ },
+ "DefaultWorkingDirectory\\temp_web_package.zip": {
+ "success": true
+ }
+ },
+ "exist": {
+ "webAppPkg.zip": true,
+ "webAppPkg": true,
+ "temp_web_package_random_path/web.config": false
+ },
+ "glob": {
+ "webAppPkgPattern" : ["webAppPkg1", "webAppPkg2"],
+ "Invalid_webAppPkg" : [],
+ "webAppPkg.zip": ["webAppPkg.zip"],
+ "webAppPkg": ["webAppPkg"]
+ },
+ "getVariable": {
+ "ENDPOINT_AUTH_AzureRMSpn": "{\"parameters\":{\"serviceprincipalid\":\"spId\",\"serviceprincipalkey\":\"spKey\",\"tenantid\":\"tenant\"},\"scheme\":\"ServicePrincipal\"}",
+ "ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONNAME": "sName",
+ "ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONID": "sId",
+ "AZURE_HTTP_USER_AGENT": "TFS_useragent",
+ "System.DefaultWorkingDirectory": "DefaultWorkingDirectory",
+ "build.sourceVersion": "46da24f35850f455185b9188b4742359b537076f",
+ "build.buildId": 1,
+ "release.releaseId": 1,
+ "build.buildNumber": 1,
+ "release.releaseName": "Release-1",
+ "build.repository.provider": "TfsGit",
+ "build.repository.name": "MyFirstProject",
+ "system.TeamFoundationCollectionUri": "https://abc.visualstudio.com/",
+ "system.teamProject": "MyFirstProject",
+ "build.sourceVersionAuthor": "author",
+ "release.releaseUri": "vstfs:///ReleaseManagement/Release/1",
+ "agent.name": "agent"
+ }
+}
+
+import mockTask = require('azure-pipelines-task-lib/mock-task');
+tr.registerMock('azure-pipelines-tasks-webdeployment-common/ziputility.js', {
+ getArchivedEntries: function(webDeployPkg) {
+ return {
+ "entries":[
+ "systemInfo.xml",
+ "parameters.xml"
+ ]
+ };
+ }
+});
+var kuduDeploymentLog = require('azurerest-common/kududeploymentstatusutility.js');
+var msDeployUtility = require('azure-pipelines-tasks-webdeployment-common/msdeployutility.js');
+
+tr.registerMock('./msdeployutility.js', {
+ getMSDeployCmdArgs : msDeployUtility.getMSDeployCmdArgs,
+ getMSDeployFullPath : function() {
+ var msDeployFullPath = "msdeploypath\\msdeploy.exe";
+ return msDeployFullPath;
+ }
+});
+
+tr.registerMock('azurerest-common/azurerestutility.js', {
+ testAzureWebAppAvailability: function() {
+ console.log('App Service availability check.');
+ },
+ getAzureRMWebAppPublishProfile: function(SPN, webAppName, resourceGroupName, deployToSlotFlag, slotName) {
+ var mockPublishProfile = {
+ profileName: 'mytestapp - Web Deploy',
+ publishMethod: 'MSDeploy',
+ publishUrl: 'mytestappKuduUrl',
+ msdeploySite: 'mytestapp',
+ userName: '$mytestapp',
+ userPWD: 'mytestappPwd',
+ destinationAppUrl: 'mytestappUrl',
+ SQLServerDBConnectionString: '',
+ mySQLDBConnectionString: '',
+ hostingProviderForumLink: '',
+ controlPanelLink: '',
+ webSystem: 'WebSites'
+ };
+ if(deployToSlotFlag) {
+ mockPublishProfile.profileName = 'mytestapp-' + slotName + ' - Web Deploy';
+ mockPublishProfile.publishUrl = 'mytestappKuduUrl-' + slotName;
+ mockPublishProfile.msdeploySite = 'mytestapp__' + slotName;
+ mockPublishProfile.userName = '$mytestapp__' + slotName;
+ mockPublishProfile.userPWD = 'mytestappPwd';
+ mockPublishProfile.destinationAppUrl = 'mytestappUrl-' + slotName;
+ }
+ return mockPublishProfile;
+ },
+ getAzureRMWebAppConfigDetails: function(SPN, webAppName, resourceGroupName, deployToSlotFlag, slotName) {
+ var config = {
+ id: 'appid',
+ properties: {
+ virtualApplications: [ ['Object'], ['Object'], ['Object'] ],
+ scmType: "None"
+ }
+ }
+
+ return config;
+ },
+ updateDeploymentStatus: function(publishingProfile, isDeploymentSuccess, customMessage) {
+ if(isDeploymentSuccess) {
+ console.log('Updated history to kudu');
+ }
+ else {
+ console.log('Failed to update history to kudu');
+ }
+ var webAppPublishKuduUrl = publishingProfile.publishUrl;
+ var requestDetails = kuduDeploymentLog.getUpdateHistoryRequest(webAppPublishKuduUrl, isDeploymentSuccess, customMessage);
+ requestDetails["requestBody"].author = 'author';
+ console.log("kudu log requestBody is:" + JSON.stringify(requestDetails["requestBody"]));
+ },
+ getResourceGroupName: function (SPN, webAppName) {
+ return "foobar";
+ },
+ getWebAppAppSettings : function (SPN, webAppName: string, resourceGroupName: string, deployToSlotFlag: boolean, slotName: string){
+ var appSettings = {
+ properties : {
+ MSDEPLOY_RENAME_LOCKED_FILES : '1'
+ }
+ };
+ return appSettings;
+ },
+ updateWebAppAppSettings : function (){
+ return true;
+ },
+ updateAzureRMWebAppConfigDetails: function() {
+ console.log("Successfully updated scmType to VSTSRM");
+ },
+ getAzureRMWebAppMetadata: function() {
+ return {
+ properties: {}
+ }
+ },
+ updateAzureRMWebAppMetadata: function() {
+ console.log("Successfully updated Web App metadata");
+ }
+});
+
+tr.registerMock('azure-pipelines-tasks-webdeployment-common/ziputility.js', {
+ getArchivedEntries: function(webDeployPkg) {
+ return {
+ "entries":[
+ "systemInfo.xml",
+ "parameters.xml"
+ ]
+ };
+ }
+});
+
+tr.registerMock('azure-pipelines-tasks-webdeployment-common/utility.js', {
+ isInputPkgIsFolder: function() {
+ return false;
+ },
+ fileExists: function() {
+ return true;
+ },
+ canUseWebDeploy: function() {
+ return true;
+ },
+ findfiles: function() {
+ return ['webDeployPkg']
+ },
+ generateTemporaryFolderForDeployment: function() {
+ return 'temp_web_package_random_path';
+ },
+ archiveFolderForDeployment: function() {
+ return {
+ "webDeployPkg": "DefaultWorkingDirectory\\temp_web_package.zip",
+ "tempPackagePath": "DefaultWorkingDirectory\\temp_web_package.zip"
+ };
+ }
+});
+
+tr.registerMock('./ParameterParserUtility', {
+ parse: function (data) {
+ return {
+ "appType": {
+ "value": "node"
+ },
+ "Handler": {
+ "value": "iisnode"
+ },
+ "NodeStartFile": {
+ "value": "server.js"
+ }
+ }
+ }
+});
+
+var fs = require('fs');
+tr.registerMock('fs', {
+ createWriteStream: function (filePath, options) {
+ return {
+ "isWriteStreamObj": true,
+ "on": (event) => {
+ console.log("event: " + event + " has occurred");
+ },
+ "end" : () => { return true }
+ };
+ },
+ ReadStream: fs.ReadStream,
+ WriteStream: fs.WriteStream,
+ readFileSync: function(webConfigPath,options) {
+ return "";
+ },
+ openSync: function (fd, options) {
+ return true;
+ },
+ closeSync: function (fd) {
+ return true;
+ },
+ fsyncSync: function(fd) {
+ return true;
+ }
+});
+
+tr.setAnswers(a);
+tr.run();
\ No newline at end of file
diff --git a/_generated/AzureRmWebAppDeploymentV4/Tests/L0LinuxBuiltinImage.ts b/_generated/AzureRmWebAppDeploymentV4/Tests/L0LinuxBuiltinImage.ts
new file mode 100644
index 000000000000..bb1e5decedef
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/Tests/L0LinuxBuiltinImage.ts
@@ -0,0 +1,236 @@
+import ma = require('azure-pipelines-task-lib/mock-answer');
+import tmrm = require('azure-pipelines-task-lib/mock-run');
+import path = require('path');
+
+let taskPath = path.join(__dirname, '..', 'azurermwebappdeployment.js');
+let tr: tmrm.TaskMockRunner = new tmrm.TaskMockRunner(taskPath);
+
+tr.setInput('ConnectedServiceName', 'AzureRMSpn');
+tr.setInput('WebAppName', 'mytestapp');
+tr.setInput('Package', 'webAppPkg.zip');
+tr.setInput('UseWebDeploy', 'false');
+tr.setInput('ImageSource', "Builtin Image");
+tr.setInput('WebAppKind', "applinux");
+tr.setInput('RuntimeStack', "dummy|version");
+tr.setInput('BuiltinLinuxPackage', 'webAppPkg.zip');
+
+process.env['TASK_TEST_TRACE'] = "1";
+process.env["ENDPOINT_AUTH_AzureRMSpn"] = "{\"parameters\":{\"serviceprincipalid\":\"spId\",\"serviceprincipalkey\":\"spKey\",\"tenantid\":\"tenant\"},\"scheme\":\"ServicePrincipal\"}";
+process.env["ENDPOINT_AUTH_PARAMETER_AzureRMSpn_SERVICEPRINCIPALID"] = "spId";
+process.env["ENDPOINT_AUTH_PARAMETER_AzureRMSpn_SERVICEPRINCIPALKEY"] = "spKey";
+process.env["ENDPOINT_AUTH_PARAMETER_AzureRMSpn_TENANTID"] = "tenant";
+process.env["ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONNAME"] = "sName";
+process.env["ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONID"] = "sId";
+process.env["AZURE_HTTP_USER_AGENT"] = "TFS_useragent";
+process.env["SYSTEM_DEFAULTWORKINGDIRECTORY"] = "DefaultWorkingDirectory";
+process.env["BUILD_SOURCEVERSION"] = "46da24f35850f455185b9188b4742359b537076f";
+process.env["BUILD_BUILDID"] = "1",
+process.env["RELEASE_RELEASEID"] = "1";
+process.env["BUILD_BUILDNUMBER"] = "1";
+process.env["RELEASE_RELEASENAME"] = "Release-1";
+process.env["BUILD_REPOSITORY_PROVIDER"] = "TfsGit";
+process.env["BUILD_REPOSITORY_NAME"] = "MyFirstProject";
+process.env["SYSTEM_TEAMFOUNDATIONCOLLECTIONURI"] = "https://abc.visualstudio.com/";
+process.env["SYSTEM_TEAMPROJECT"] = "MyFirstProject";
+process.env["BUILD_SOURCEVERISONAUTHOR"] = "author";
+process.env["RELEASE_RELEASEURI"] = "vstfs:///ReleaseManagement/Release/1";
+process.env["AGENT_NAME"] = "author";
+
+// provide answers for task mock
+let a: ma.TaskLibAnswers = {
+ "which": {
+ "cmd": "cmd"
+ },
+ "stats": {
+ "webAppPkg.zip": {
+ "isFile": true
+ }
+ },
+ "osType": {
+ "osType": "Linux"
+ },
+ "checkPath": {
+ "cmd": true,
+ "webAppPkg.zip": true,
+ "webAppPkg": true
+ },
+ "exec": {
+ "cmd /C DefaultWorkingDirectory\\msDeployCommand.bat": {
+ "code": 0,
+ "stdout": "Executed Successfully"
+ },
+ "cmd /C DefaultWorkingDirectory\\msDeployParam.bat": {
+ "code": 0,
+ "stdout": "Executed Successfully"
+ }
+ },
+ "exist": {
+ "webAppPkg.zip": true,
+ "webAppPkg": true
+ },
+ "glob": {
+ "webAppPkgPattern" : ["webAppPkg1", "webAppPkg2"],
+ "Invalid_webAppPkg" : [],
+ "webAppPkg.zip": ["webAppPkg.zip"],
+ "webAppPkg": ["webAppPkg"]
+ },
+ "getVariable": {
+ "ENDPOINT_AUTH_AzureRMSpn": "{\"parameters\":{\"serviceprincipalid\":\"spId\",\"serviceprincipalkey\":\"spKey\",\"tenantid\":\"tenant\"},\"scheme\":\"ServicePrincipal\"}",
+ "ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONNAME": "sName",
+ "ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONID": "sId",
+ "AZURE_HTTP_USER_AGENT": "TFS_useragent",
+ "System.DefaultWorkingDirectory": "DefaultWorkingDirectory",
+ "build.sourceVersion": "46da24f35850f455185b9188b4742359b537076f",
+ "build.buildId": 1,
+ "release.releaseId": 1,
+ "build.buildNumber": 1,
+ "release.releaseName": "Release-1",
+ "build.repository.provider": "TfsGit",
+ "build.repository.name": "MyFirstProject",
+ "system.TeamFoundationCollectionUri": "https://abc.visualstudio.com/",
+ "system.teamProject": "MyFirstProject",
+ "build.sourceVersionAuthor": "author",
+ "release.releaseUri": "vstfs:///ReleaseManagement/Release/1",
+ "agent.name": "agent"
+ }
+}
+
+
+var kuduDeploymentLog = require('azurerest-common/kududeploymentstatusutility.js');
+var msDeployUtility = require('azure-pipelines-tasks-webdeployment-common/msdeployutility.js');
+tr.registerMock('./msdeployutility.js', {
+ getMSDeployCmdArgs : msDeployUtility.getMSDeployCmdArgs,
+ getMSDeployFullPath : function() {
+ var msDeployFullPath = "msdeploypath\\msdeploy.exe";
+ return msDeployFullPath;
+ }
+});
+
+tr.registerMock('azurerest-common/azurerestutility.js', {
+ testAzureWebAppAvailability: function(Url, port) {
+ console.log("Testing availability of the webApp");
+ },
+ getAzureRMWebAppPublishProfile: function(SPN, webAppName, resourceGroupName, deployToSlotFlag, slotName) {
+ var mockPublishProfile = {
+ profileName: 'mytestapp - Web Deploy',
+ publishMethod: 'MSDeploy',
+ publishUrl: 'mytestappKuduUrl',
+ msdeploySite: 'mytestapp',
+ userName: '$mytestapp',
+ userPWD: 'mytestappPwd',
+ destinationAppUrl: 'mytestappUrl',
+ SQLServerDBConnectionString: '',
+ mySQLDBConnectionString: '',
+ hostingProviderForumLink: '',
+ controlPanelLink: '',
+ webSystem: 'WebSites'
+ };
+ if(deployToSlotFlag) {
+ mockPublishProfile.profileName = 'mytestapp-' + slotName + ' - Web Deploy';
+ mockPublishProfile.publishUrl = 'mytestappKuduUrl-' + slotName;
+ mockPublishProfile.msdeploySite = 'mytestapp__' + slotName;
+ mockPublishProfile.userName = '$mytestapp__' + slotName;
+ mockPublishProfile.userPWD = 'mytestappPwd';
+ mockPublishProfile.destinationAppUrl = 'mytestappUrl-' + slotName;
+ }
+ return mockPublishProfile;
+ },
+ updateDeploymentStatus: function(publishingProfile, isDeploymentSuccess ) {
+ if(isDeploymentSuccess) {
+ console.log('Updated history to kudu');
+ }
+ else {
+ console.log('Failed to update history to kudu');
+ }
+ var webAppPublishKuduUrl = publishingProfile.publishUrl;
+ var requestDetails = kuduDeploymentLog.getUpdateHistoryRequest(webAppPublishKuduUrl, isDeploymentSuccess);
+ console.log("kudu log requestBody is:" + JSON.stringify(requestDetails["requestBody"]));
+ },
+ getAzureRMWebAppConfigDetails: function(SPN, webAppName, resourceGroupName, deployToSlotFlag, slotName) {
+ var config = {
+ id: 'appid',
+ properties: {
+ virtualApplications: [ ['Object'], ['Object'], ['Object'] ],
+ scmType: "None"
+ }
+ }
+
+ return config;
+ },
+ getResourceGroupName: function (SPN, webAppName) {
+ return "foobar";
+ },
+ updateAzureRMWebAppConfigDetails: function() {
+ console.log("Successfully updated web app config details");
+ },
+ getAzureRMWebAppMetadata: function() {
+ return {
+ properties: {}
+ }
+ },
+ updateAzureRMWebAppMetadata: function() {
+ console.log("Successfully updated Web App metadata");
+ },
+ getWebAppAppSettings: function (SPN, webAppName, resourceGroupName, deployToSlotFlag, slotName) {
+ var appSettings = {
+ properties: {
+ }
+ };
+ return appSettings;
+ },
+ updateWebAppAppSettings: function(SPN, webAppName, resourceGroupName, deployToSlotFlag, slotName){
+ console.log("Successfully updated webApp app-settings");
+ }
+});
+tr.registerMock('azure-pipelines-tasks-webdeployment-common/utility.js', {
+ isInputPkgIsFolder: function () {
+ return false;
+ },
+ canUseWebDeploy: function () {
+ return false;
+ },
+ findfiles: function () {
+ return ['linuxPkg'];
+ },
+ isMSDeployPackage: function () {
+ return false;
+ }
+});
+tr.registerMock('./kuduutility.js', {
+ deployWebAppPackage: function(webAppPackage, webAppZipFile) {
+ console.log ('Deployed using KuduDeploy');
+ },
+ getVirtualAndPhysicalPaths: function (virtualApplication, virtualApplicationMappings) {
+ // construct URL depending on virtualApplication or root of webapplication
+ var physicalPath = "/site/wwwroot";
+ var virtualPath = "/";
+ if (virtualApplication) {
+ virtualPath = "/" + virtualApplication;
+ }
+ for (var index in virtualApplicationMappings) {
+ var mapping = virtualApplicationMappings[index];
+ if (mapping.virtualPath == virtualPath) {
+ physicalPath = mapping.physicalPath;
+ break;
+ }
+ }
+ return [virtualPath, physicalPath];
+ },
+ containsParamFile: function (webAppPackage) {
+ var isParamFilePresent = false;
+ return isParamFilePresent;
+ }
+});
+
+tr.registerMock("azure-pipelines-tasks-webdeployment-common/ziputility.js",{
+ getArchivedEntries: function(webDeployPkg) {
+ return {
+ "entries": [
+ "systemInfo.xml",
+ ]
+ };
+ }
+});
+
+tr.setAnswers(a);
+tr.run();
\ No newline at end of file
diff --git a/_generated/AzureRmWebAppDeploymentV4/Tests/L0NonWindowsDefault.ts b/_generated/AzureRmWebAppDeploymentV4/Tests/L0NonWindowsDefault.ts
new file mode 100644
index 000000000000..b69c217af9d7
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/Tests/L0NonWindowsDefault.ts
@@ -0,0 +1,217 @@
+import ma = require('azure-pipelines-task-lib/mock-answer');
+import tmrm = require('azure-pipelines-task-lib/mock-run');
+import path = require('path');
+
+let taskPath = path.join(__dirname, '..', 'azurermwebappdeployment.js');
+let tr: tmrm.TaskMockRunner = new tmrm.TaskMockRunner(taskPath);
+
+tr.setInput('ConnectedServiceName', 'AzureRMSpn');
+tr.setInput('WebAppName', 'mytestapp');
+tr.setInput('Package', 'webAppPkg.zip');
+tr.setInput('UseWebDeploy', 'false');
+
+process.env['TASK_TEST_TRACE'] = "1";
+process.env["ENDPOINT_AUTH_AzureRMSpn"] = "{\"parameters\":{\"serviceprincipalid\":\"spId\",\"serviceprincipalkey\":\"spKey\",\"tenantid\":\"tenant\"},\"scheme\":\"ServicePrincipal\"}";
+process.env["ENDPOINT_AUTH_PARAMETER_AzureRMSpn_SERVICEPRINCIPALID"] = "spId";
+process.env["ENDPOINT_AUTH_PARAMETER_AzureRMSpn_SERVICEPRINCIPALKEY"] = "spKey";
+process.env["ENDPOINT_AUTH_PARAMETER_AzureRMSpn_TENANTID"] = "tenant";
+process.env["ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONNAME"] = "sName";
+process.env["ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONID"] = "sId";
+process.env["AZURE_HTTP_USER_AGENT"] = "TFS_useragent";
+process.env["SYSTEM_DEFAULTWORKINGDIRECTORY"] = "DefaultWorkingDirectory";
+process.env["BUILD_SOURCEVERSION"] = "46da24f35850f455185b9188b4742359b537076f";
+process.env["BUILD_BUILDID"] = "1",
+process.env["RELEASE_RELEASEID"] = "1";
+process.env["BUILD_BUILDNUMBER"] = "1";
+process.env["RELEASE_RELEASENAME"] = "Release-1";
+process.env["BUILD_REPOSITORY_PROVIDER"] = "TfsGit";
+process.env["BUILD_REPOSITORY_NAME"] = "MyFirstProject";
+process.env["SYSTEM_TEAMFOUNDATIONCOLLECTIONURI"] = "https://abc.visualstudio.com/";
+process.env["SYSTEM_TEAMPROJECT"] = "MyFirstProject";
+process.env["BUILD_SOURCEVERISONAUTHOR"] = "author";
+process.env["RELEASE_RELEASEURI"] = "vstfs:///ReleaseManagement/Release/1";
+process.env["AGENT_NAME"] = "author";
+
+// provide answers for task mock
+let a: ma.TaskLibAnswers = {
+ "which": {
+ "cmd": "cmd"
+ },
+ "stats": {
+ "webAppPkg.zip": {
+ "isFile": true
+ }
+ },
+ "osType": {
+ "osType": "Linux"
+ },
+ "checkPath": {
+ "cmd": true,
+ "webAppPkg.zip": true,
+ "webAppPkg": true
+ },
+ "exec": {
+ "cmd /C DefaultWorkingDirectory\\msDeployCommand.bat": {
+ "code": 0,
+ "stdout": "Executed Successfully"
+ },
+ "cmd /C DefaultWorkingDirectory\\msDeployParam.bat": {
+ "code": 0,
+ "stdout": "Executed Successfully"
+ }
+ },
+ "exist": {
+ "webAppPkg.zip": true,
+ "webAppPkg": true
+ },
+ "glob": {
+ "webAppPkgPattern" : ["webAppPkg1", "webAppPkg2"],
+ "Invalid_webAppPkg" : [],
+ "webAppPkg.zip": ["webAppPkg.zip"],
+ "webAppPkg": ["webAppPkg"]
+ },
+ "getVariable": {
+ "ENDPOINT_AUTH_AzureRMSpn": "{\"parameters\":{\"serviceprincipalid\":\"spId\",\"serviceprincipalkey\":\"spKey\",\"tenantid\":\"tenant\"},\"scheme\":\"ServicePrincipal\"}",
+ "ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONNAME": "sName",
+ "ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONID": "sId",
+ "AZURE_HTTP_USER_AGENT": "TFS_useragent",
+ "System.DefaultWorkingDirectory": "DefaultWorkingDirectory",
+ "build.sourceVersion": "46da24f35850f455185b9188b4742359b537076f",
+ "build.buildId": 1,
+ "release.releaseId": 1,
+ "build.buildNumber": 1,
+ "release.releaseName": "Release-1",
+ "build.repository.provider": "TfsGit",
+ "build.repository.name": "MyFirstProject",
+ "system.TeamFoundationCollectionUri": "https://abc.visualstudio.com/",
+ "system.teamProject": "MyFirstProject",
+ "build.sourceVersionAuthor": "author",
+ "release.releaseUri": "vstfs:///ReleaseManagement/Release/1",
+ "agent.name": "agent"
+ }
+}
+
+
+var kuduDeploymentLog = require('azurerest-common/kududeploymentstatusutility.js');
+var msDeployUtility = require('azure-pipelines-tasks-webdeployment-common/msdeployutility.js');
+tr.registerMock('./msdeployutility.js', {
+ getMSDeployCmdArgs : msDeployUtility.getMSDeployCmdArgs,
+ getMSDeployFullPath : function() {
+ var msDeployFullPath = "msdeploypath\\msdeploy.exe";
+ return msDeployFullPath;
+ }
+});
+
+tr.registerMock('azurerest-common/azurerestutility.js', {
+ getAzureRMWebAppPublishProfile: function(SPN, webAppName, resourceGroupName, deployToSlotFlag, slotName) {
+ var mockPublishProfile = {
+ profileName: 'mytestapp - Web Deploy',
+ publishMethod: 'MSDeploy',
+ publishUrl: 'mytestappKuduUrl',
+ msdeploySite: 'mytestapp',
+ userName: '$mytestapp',
+ userPWD: 'mytestappPwd',
+ destinationAppUrl: 'mytestappUrl',
+ SQLServerDBConnectionString: '',
+ mySQLDBConnectionString: '',
+ hostingProviderForumLink: '',
+ controlPanelLink: '',
+ webSystem: 'WebSites'
+ };
+ if(deployToSlotFlag) {
+ mockPublishProfile.profileName = 'mytestapp-' + slotName + ' - Web Deploy';
+ mockPublishProfile.publishUrl = 'mytestappKuduUrl-' + slotName;
+ mockPublishProfile.msdeploySite = 'mytestapp__' + slotName;
+ mockPublishProfile.userName = '$mytestapp__' + slotName;
+ mockPublishProfile.userPWD = 'mytestappPwd';
+ mockPublishProfile.destinationAppUrl = 'mytestappUrl-' + slotName;
+ }
+ return mockPublishProfile;
+ },
+ updateDeploymentStatus: function(publishingProfile, isDeploymentSuccess ) {
+ if(isDeploymentSuccess) {
+ console.log('Updated history to kudu');
+ }
+ else {
+ console.log('Failed to update history to kudu');
+ }
+ var webAppPublishKuduUrl = publishingProfile.publishUrl;
+ var requestDetails = kuduDeploymentLog.getUpdateHistoryRequest(webAppPublishKuduUrl, isDeploymentSuccess);
+ console.log("kudu log requestBody is:" + JSON.stringify(requestDetails["requestBody"]));
+ },
+ getAzureRMWebAppConfigDetails: function(SPN, webAppName, resourceGroupName, deployToSlotFlag, slotName) {
+ var config = {
+ id: 'appid',
+ properties: {
+ virtualApplications: [ ['Object'], ['Object'], ['Object'] ],
+ scmType: "None"
+ }
+ }
+
+ return config;
+ },
+ getResourceGroupName: function (SPN, webAppName) {
+ return "foobar";
+ },
+ getWebAppAppSettings : function (SPN, webAppName: string, resourceGroupName: string, deployToSlotFlag: boolean, slotName: string){
+ var appSettings = {
+ properties : {
+ MSDEPLOY_RENAME_LOCKED_FILES : '1'
+ }
+ };
+ return appSettings;
+ },
+ updateWebAppAppSettings : function (){
+ return true;
+ },
+ updateAzureRMWebAppConfigDetails: function() {
+ console.log("Successfully updated scmType to VSTSRM");
+ },
+ getAzureRMWebAppMetadata: function() {
+ return {
+ properties: {}
+ }
+ },
+ updateAzureRMWebAppMetadata: function() {
+ console.log("Successfully updated Web App metadata");
+ }
+});
+
+tr.registerMock('./kuduutility.js', {
+ deployWebAppPackage: function(webAppPackage, webAppZipFile) {
+ console.log ('Deployed using KuduDeploy');
+ },
+ getVirtualAndPhysicalPaths: function (virtualApplication, virtualApplicationMappings) {
+ // construct URL depending on virtualApplication or root of webapplication
+ var physicalPath = "/site/wwwroot";
+ var virtualPath = "/";
+ if (virtualApplication) {
+ virtualPath = "/" + virtualApplication;
+ }
+ for (var index in virtualApplicationMappings) {
+ var mapping = virtualApplicationMappings[index];
+ if (mapping.virtualPath == virtualPath) {
+ physicalPath = mapping.physicalPath;
+ break;
+ }
+ }
+ return [virtualPath, physicalPath];
+ },
+ containsParamFile: function (webAppPackage) {
+ var isParamFilePresent = false;
+ return isParamFilePresent;
+ }
+});
+
+tr.registerMock("azure-pipelines-tasks-webdeployment-common/ziputility.js",{
+ getArchivedEntries: function(webDeployPkg) {
+ return {
+ "entries": [
+ "systemInfo.xml",
+ ]
+ };
+ }
+});
+
+tr.setAnswers(a);
+tr.run();
\ No newline at end of file
diff --git a/_generated/AzureRmWebAppDeploymentV4/Tests/L0NonWindowsFailArchive.ts b/_generated/AzureRmWebAppDeploymentV4/Tests/L0NonWindowsFailArchive.ts
new file mode 100644
index 000000000000..3bebf8379159
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/Tests/L0NonWindowsFailArchive.ts
@@ -0,0 +1,230 @@
+import ma = require('azure-pipelines-task-lib/mock-answer');
+import tmrm = require('azure-pipelines-task-lib/mock-run');
+import path = require('path');
+
+let taskPath = path.join(__dirname, '..', 'azurermwebappdeployment.js');
+let tr: tmrm.TaskMockRunner = new tmrm.TaskMockRunner(taskPath);
+
+tr.setInput('ConnectedServiceName', 'AzureRMSpn');
+tr.setInput('WebAppName', 'mytestapp');
+tr.setInput('Package', 'webAppPkg');
+tr.setInput('UseWebDeploy', 'false');
+
+process.env['TASK_TEST_TRACE'] = "1";
+process.env["ENDPOINT_AUTH_AzureRMSpn"] = "{\"parameters\":{\"serviceprincipalid\":\"spId\",\"serviceprincipalkey\":\"spKey\",\"tenantid\":\"tenant\"},\"scheme\":\"ServicePrincipal\"}";
+process.env["ENDPOINT_AUTH_PARAMETER_AzureRMSpn_SERVICEPRINCIPALID"] = "spId";
+process.env["ENDPOINT_AUTH_PARAMETER_AzureRMSpn_SERVICEPRINCIPALKEY"] = "spKey";
+process.env["ENDPOINT_AUTH_PARAMETER_AzureRMSpn_TENANTID"] = "tenant";
+process.env["ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONNAME"] = "sName";
+process.env["ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONID"] = "sId";
+process.env["AZURE_HTTP_USER_AGENT"] = "TFS_useragent";
+process.env["SYSTEM_DEFAULTWORKINGDIRECTORY"] = "DefaultWorkingDirectory";
+process.env["BUILD_SOURCEVERSION"] = "46da24f35850f455185b9188b4742359b537076f";
+process.env["BUILD_BUILDID"] = "1",
+process.env["RELEASE_RELEASEID"] = "1";
+process.env["BUILD_BUILDNUMBER"] = "1";
+process.env["RELEASE_RELEASENAME"] = "Release-1";
+process.env["BUILD_REPOSITORY_PROVIDER"] = "TfsGit";
+process.env["BUILD_REPOSITORY_NAME"] = "MyFirstProject";
+process.env["SYSTEM_TEAMFOUNDATIONCOLLECTIONURI"] = "https://abc.visualstudio.com/";
+process.env["SYSTEM_TEAMPROJECT"] = "MyFirstProject";
+process.env["BUILD_SOURCEVERISONAUTHOR"] = "author";
+process.env["RELEASE_RELEASEURI"] = "vstfs:///ReleaseManagement/Release/1";
+process.env["AGENT_NAME"] = "author";
+
+// provide answers for task mock
+let a: ma.TaskLibAnswers = {
+ "which": {
+ "cmd": "cmd"
+ },
+ "stats": {
+ "webAppPkg.zip": {
+ "isFile": true
+ }
+ },
+ "osType": {
+ "osType": "Linux"
+ },
+ "checkPath": {
+ "cmd": true,
+ "webAppPkg.zip": true,
+ "webAppPkg": true
+ },
+ "exec": {
+ "cmd /C DefaultWorkingDirectory\\msDeployCommand.bat": {
+ "code": 0,
+ "stdout": "Executed Successfully"
+ },
+ "cmd /C DefaultWorkingDirectory\\msDeployParam.bat": {
+ "code": 0,
+ "stdout": "Executed Successfully"
+ }
+ },
+ "exist": {
+ "webAppPkg.zip": true,
+ "webAppPkg": true
+ },
+ "glob": {
+ "webAppPkgPattern" : ["webAppPkg1", "webAppPkg2"],
+ "Invalid_webAppPkg" : [],
+ "webAppPkg.zip": ["webAppPkg.zip"],
+ "webAppPkg": ["webAppPkg"]
+ },
+ "getVariable": {
+ "ENDPOINT_AUTH_AzureRMSpn": "{\"parameters\":{\"serviceprincipalid\":\"spId\",\"serviceprincipalkey\":\"spKey\",\"tenantid\":\"tenant\"},\"scheme\":\"ServicePrincipal\"}",
+ "ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONNAME": "sName",
+ "ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONID": "sId",
+ "AZURE_HTTP_USER_AGENT": "TFS_useragent",
+ "System.DefaultWorkingDirectory": "DefaultWorkingDirectory",
+ "build.sourceVersion": "46da24f35850f455185b9188b4742359b537076f",
+ "build.buildId": 1,
+ "release.releaseId": 1,
+ "build.buildNumber": 1,
+ "release.releaseName": "Release-1",
+ "build.repository.provider": "TfsGit",
+ "build.repository.name": "MyFirstProject",
+ "system.TeamFoundationCollectionUri": "https://abc.visualstudio.com/",
+ "system.teamProject": "MyFirstProject",
+ "build.sourceVersionAuthor": "author",
+ "release.releaseUri": "vstfs:///ReleaseManagement/Release/1",
+ "agent.name": "agent"
+ },
+ "rmRF": {
+ "temp_web_package_random_path": {
+ "success": true
+ }
+ }
+}
+
+
+var kuduDeploymentLog = require('azurerest-common/kududeploymentstatusutility.js');
+var msDeployUtility = require('azure-pipelines-tasks-webdeployment-common/msdeployutility.js');
+tr.registerMock('./msdeployutility.js', {
+ getMSDeployCmdArgs : msDeployUtility.getMSDeployCmdArgs,
+ getMSDeployFullPath : function() {
+ var msDeployFullPath = "msdeploypath\\msdeploy.exe";
+ return msDeployFullPath;
+ }
+});
+
+tr.registerMock('azurerest-common/azurerestutility.js', {
+ getAzureRMWebAppPublishProfile: function(SPN, webAppName, resourceGroupName, deployToSlotFlag, slotName) {
+ var mockPublishProfile = {
+ profileName: 'mytestapp - Web Deploy',
+ publishMethod: 'MSDeploy',
+ publishUrl: 'mytestappKuduUrl',
+ msdeploySite: 'mytestapp',
+ userName: '$mytestapp',
+ userPWD: 'mytestappPwd',
+ destinationAppUrl: 'mytestappUrl',
+ SQLServerDBConnectionString: '',
+ mySQLDBConnectionString: '',
+ hostingProviderForumLink: '',
+ controlPanelLink: '',
+ webSystem: 'WebSites'
+ };
+ if(deployToSlotFlag) {
+ mockPublishProfile.profileName = 'mytestapp-' + slotName + ' - Web Deploy';
+ mockPublishProfile.publishUrl = 'mytestappKuduUrl-' + slotName;
+ mockPublishProfile.msdeploySite = 'mytestapp__' + slotName;
+ mockPublishProfile.userName = '$mytestapp__' + slotName;
+ mockPublishProfile.userPWD = 'mytestappPwd';
+ mockPublishProfile.destinationAppUrl = 'mytestappUrl-' + slotName;
+ }
+ return mockPublishProfile;
+ },
+ updateDeploymentStatus: function(publishingProfile, isDeploymentSuccess ) {
+ if(isDeploymentSuccess) {
+ console.log('Updated history to kudu');
+ }
+ else {
+ console.log('Failed to update history to kudu');
+ }
+ var webAppPublishKuduUrl = publishingProfile.publishUrl;
+ var requestDetails = kuduDeploymentLog.getUpdateHistoryRequest(webAppPublishKuduUrl, isDeploymentSuccess);
+ requestDetails["requestBody"].author = 'author';
+ console.log("kudu log requestBody is:" + JSON.stringify(requestDetails["requestBody"]));
+ },
+ getAzureRMWebAppConfigDetails: function(SPN, webAppName, resourceGroupName, deployToSlotFlag, slotName) {
+ var config = {
+ id: 'appid',
+ properties: {
+ virtualApplications: [ ['Object'], ['Object'], ['Object'] ],
+ scmType: "None"
+ }
+ }
+
+ return config;
+ },
+ getResourceGroupName: function (SPN, webAppName) {
+ return "foobar";
+ },
+ getWebAppAppSettings : function (SPN, webAppName: string, resourceGroupName: string, deployToSlotFlag: boolean, slotName: string){
+ var appSettings = {
+ properties : {
+ MSDEPLOY_RENAME_LOCKED_FILES : '1'
+ }
+ };
+ return appSettings;
+ },
+ updateWebAppAppSettings : function (){
+ return true;
+ },
+ updateAzureRMWebAppConfigDetails: function() {
+ console.log("Successfully updated scmType to VSTSRM");
+ }
+});
+
+tr.registerMock('./kuduutility.js', {
+ getVirtualAndPhysicalPaths: function (virtualApplication, virtualApplicationMappings) {
+ // construct URL depending on virtualApplication or root of webapplication
+ var physicalPath = "/site/wwwroot";
+ var virtualPath = "/";
+ if (virtualApplication) {
+ virtualPath = "/" + virtualApplication;
+ }
+ for (var index in virtualApplicationMappings) {
+ var mapping = virtualApplicationMappings[index];
+ if (mapping.virtualPath == virtualPath) {
+ physicalPath = mapping.physicalPath;
+ break;
+ }
+ }
+ return [virtualPath, physicalPath];
+ },
+ containsParamFile: function (webAppPackage) {
+ var isParamFilePresent = true;
+ return isParamFilePresent;
+ }
+});
+
+var zipUtility = require('azure-pipelines-tasks-webdeployment-common/ziputility.js');
+tr.registerMock('azure-pipelines-tasks-webdeployment-common/ziputility.js', {
+ archiveFolder: function(webAppPackage, webAppZipFile) {
+ throw new Error('Folder Archiving Failed');
+ },
+ unzip: zipUtility.unzip,
+ getArchivedEntries: zipUtility.getArchivedEntries
+});
+
+
+tr.registerMock('azure-pipelines-tasks-webdeployment-common/utility.js', {
+ isInputPkgIsFolder: function() {
+ return true;
+ },
+ fileExists: function() {
+ return true;
+ },
+ canUseWebDeploy: function() {
+ return false;
+ },
+ findfiles: function() {
+ return ['webDeployPkg']
+ },
+ generateTemporaryFolderOrZipPath: function() {
+ return 'temp_web_package_random_path';
+ }
+});
+
+tr.setAnswers(a);
+tr.run();
\ No newline at end of file
diff --git a/_generated/AzureRmWebAppDeploymentV4/Tests/L0NonWindowsFailParamPkg.ts b/_generated/AzureRmWebAppDeploymentV4/Tests/L0NonWindowsFailParamPkg.ts
new file mode 100644
index 000000000000..a584aa554afd
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/Tests/L0NonWindowsFailParamPkg.ts
@@ -0,0 +1,213 @@
+import ma = require('azure-pipelines-task-lib/mock-answer');
+import tmrm = require('azure-pipelines-task-lib/mock-run');
+import path = require('path');
+
+let taskPath = path.join(__dirname, '..', 'azurermwebappdeployment.js');
+let tr: tmrm.TaskMockRunner = new tmrm.TaskMockRunner(taskPath);
+
+tr.setInput('ConnectedServiceName', 'AzureRMSpn');
+tr.setInput('WebAppName', 'mytestapp');
+tr.setInput('Package', 'webAppPkg.zip');
+tr.setInput('UseWebDeploy', 'false');
+
+process.env['TASK_TEST_TRACE'] = "1";
+process.env["ENDPOINT_AUTH_AzureRMSpn"] = "{\"parameters\":{\"serviceprincipalid\":\"spId\",\"serviceprincipalkey\":\"spKey\",\"tenantid\":\"tenant\"},\"scheme\":\"ServicePrincipal\"}";
+process.env["ENDPOINT_AUTH_PARAMETER_AzureRMSpn_SERVICEPRINCIPALID"] = "spId";
+process.env["ENDPOINT_AUTH_PARAMETER_AzureRMSpn_SERVICEPRINCIPALKEY"] = "spKey";
+process.env["ENDPOINT_AUTH_PARAMETER_AzureRMSpn_TENANTID"] = "tenant";
+process.env["ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONNAME"] = "sName";
+process.env["ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONID"] = "sId";
+process.env["AZURE_HTTP_USER_AGENT"] = "TFS_useragent";
+process.env["SYSTEM_DEFAULTWORKINGDIRECTORY"] = "DefaultWorkingDirectory";
+process.env["BUILD_SOURCEVERSION"] = "46da24f35850f455185b9188b4742359b537076f";
+process.env["BUILD_BUILDID"] = "1",
+process.env["RELEASE_RELEASEID"] = "1";
+process.env["BUILD_BUILDNUMBER"] = "1";
+process.env["RELEASE_RELEASENAME"] = "Release-1";
+process.env["BUILD_REPOSITORY_PROVIDER"] = "TfsGit";
+process.env["BUILD_REPOSITORY_NAME"] = "MyFirstProject";
+process.env["SYSTEM_TEAMFOUNDATIONCOLLECTIONURI"] = "https://abc.visualstudio.com/";
+process.env["SYSTEM_TEAMPROJECT"] = "MyFirstProject";
+process.env["BUILD_SOURCEVERISONAUTHOR"] = "author";
+process.env["RELEASE_RELEASEURI"] = "vstfs:///ReleaseManagement/Release/1";
+process.env["AGENT_NAME"] = "author";
+
+// provide answers for task mock
+let a: ma.TaskLibAnswers = {
+ "which": {
+ "cmd": "cmd"
+ },
+ "stats": {
+ "webAppPkg.zip": {
+ "isFile": true
+ }
+ },
+ "osType": {
+ "osType": "Linux"
+ },
+ "checkPath": {
+ "cmd": true,
+ "webAppPkg.zip": true,
+ "webAppPkg": true
+ },
+ "exec": {
+ "cmd /C DefaultWorkingDirectory\\msDeployCommand.bat": {
+ "code": 0,
+ "stdout": "Executed Successfully"
+ },
+ "cmd /C DefaultWorkingDirectory\\msDeployParam.bat": {
+ "code": 0,
+ "stdout": "Executed Successfully"
+ }
+ },
+ "exist": {
+ "webAppPkg.zip": true,
+ "webAppPkg": true
+ },
+ "glob": {
+ "webAppPkgPattern" : ["webAppPkg1", "webAppPkg2"],
+ "Invalid_webAppPkg" : [],
+ "webAppPkg.zip": ["webAppPkg.zip"],
+ "webAppPkg": ["webAppPkg"]
+ },
+ "getVariable": {
+ "ENDPOINT_AUTH_AzureRMSpn": "{\"parameters\":{\"serviceprincipalid\":\"spId\",\"serviceprincipalkey\":\"spKey\",\"tenantid\":\"tenant\"},\"scheme\":\"ServicePrincipal\"}",
+ "ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONNAME": "sName",
+ "ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONID": "sId",
+ "AZURE_HTTP_USER_AGENT": "TFS_useragent",
+ "System.DefaultWorkingDirectory": "DefaultWorkingDirectory",
+ "build.sourceVersion": "46da24f35850f455185b9188b4742359b537076f",
+ "build.buildId": 1,
+ "release.releaseId": 1,
+ "build.buildNumber": 1,
+ "release.releaseName": "Release-1",
+ "build.repository.provider": "TfsGit",
+ "build.repository.name": "MyFirstProject",
+ "system.TeamFoundationCollectionUri": "https://abc.visualstudio.com/",
+ "system.teamProject": "MyFirstProject",
+ "build.sourceVersionAuthor": "author",
+ "release.releaseUri": "vstfs:///ReleaseManagement/Release/1",
+ "agent.name": "agent"
+ }
+}
+
+
+
+import mockTask = require('azure-pipelines-task-lib/mock-task');
+var kuduDeploymentLog = require('azurerest-common/kududeploymentstatusutility.js');
+var msDeployUtility = require('azure-pipelines-tasks-webdeployment-common/msdeployutility.js');
+tr.registerMock('./msdeployutility.js', {
+ getMSDeployCmdArgs : msDeployUtility.getMSDeployCmdArgs,
+ getMSDeployFullPath : function() {
+ var msDeployFullPath = "msdeploypath\\msdeploy.exe";
+ return msDeployFullPath;
+ },
+ containsParamFile: function(webAppPackage: string) {
+ var taskResult = mockTask.execSync("cmd", ['/C',"DefaultWorkingDirectory\\msDeployParam.bat"]);
+ return true;
+ }
+});
+
+tr.registerMock('azurerest-common/azurerestutility.js', {
+ getAzureRMWebAppPublishProfile: function(SPN, webAppName, resourceGroupName, deployToSlotFlag, slotName) {
+ var mockPublishProfile = {
+ profileName: 'mytestapp - Web Deploy',
+ publishMethod: 'MSDeploy',
+ publishUrl: 'mytestappKuduUrl',
+ msdeploySite: 'mytestapp',
+ userName: '$mytestapp',
+ userPWD: 'mytestappPwd',
+ destinationAppUrl: 'mytestappUrl',
+ SQLServerDBConnectionString: '',
+ mySQLDBConnectionString: '',
+ hostingProviderForumLink: '',
+ controlPanelLink: '',
+ webSystem: 'WebSites'
+ };
+ if(deployToSlotFlag) {
+ mockPublishProfile.profileName = 'mytestapp-' + slotName + ' - Web Deploy';
+ mockPublishProfile.publishUrl = 'mytestappKuduUrl-' + slotName;
+ mockPublishProfile.msdeploySite = 'mytestapp__' + slotName;
+ mockPublishProfile.userName = '$mytestapp__' + slotName;
+ mockPublishProfile.userPWD = 'mytestappPwd';
+ mockPublishProfile.destinationAppUrl = 'mytestappUrl-' + slotName;
+ }
+ return mockPublishProfile;
+ },
+ updateDeploymentStatus: function(publishingProfile, isDeploymentSuccess ) {
+ if(isDeploymentSuccess) {
+ console.log('Updated history to kudu');
+ }
+ else {
+ console.log('Failed to update history to kudu');
+ }
+ var webAppPublishKuduUrl = publishingProfile.publishUrl;
+ var requestDetails = kuduDeploymentLog.getUpdateHistoryRequest(webAppPublishKuduUrl, isDeploymentSuccess);
+ console.log("kudu log requestBody is:" + JSON.stringify(requestDetails["requestBody"]));
+ },
+ getAzureRMWebAppConfigDetails: function(SPN, webAppName, resourceGroupName, deployToSlotFlag, slotName) {
+ var config = {
+ id: 'appid',
+ properties: {
+ virtualApplications: [ ['Object'], ['Object'], ['Object'] ],
+ scmType: "None"
+ }
+ }
+
+ return config;
+ },
+ getResourceGroupName: function (SPN, webAppName) {
+ return "foobar";
+ },
+ getWebAppAppSettings : function (SPN, webAppName: string, resourceGroupName: string, deployToSlotFlag: boolean, slotName: string){
+ var appSettings = {
+ properties : {
+ MSDEPLOY_RENAME_LOCKED_FILES : '1'
+ }
+ };
+ return appSettings;
+ },
+ updateWebAppAppSettings : function (){
+ return true;
+ },
+ updateAzureRMWebAppConfigDetails: function() {
+ console.log("Successfully updated scmType to VSTSRM");
+ }
+});
+
+tr.registerMock('./kuduutility.js', {
+ deployWebAppPackage: function(webAppPackage, webAppZipFile) {
+ throw new Error('Folder Archiving Failed');
+ },
+ getVirtualAndPhysicalPaths: function (virtualApplication, virtualApplicationMappings) {
+ // construct URL depending on virtualApplication or root of webapplication
+ var physicalPath = "/site/wwwroot";
+ var virtualPath = "/";
+ if (virtualApplication) {
+ virtualPath = "/" + virtualApplication;
+ }
+ for (var index in virtualApplicationMappings) {
+ var mapping = virtualApplicationMappings[index];
+ if (mapping.virtualPath == virtualPath) {
+ physicalPath = mapping.physicalPath;
+ break;
+ }
+ }
+ return [virtualPath, physicalPath];
+ }
+});
+
+tr.registerMock("azure-pipelines-tasks-webdeployment-common/ziputility.js", {
+ getArchivedEntries: function( webDeployPkg) {
+ return {
+ "entries": [
+ "systemInfo.xml",
+ "parameters.xml"
+ ]
+ };
+ }
+});
+
+
+tr.setAnswers(a);
+tr.run();
\ No newline at end of file
diff --git a/_generated/AzureRmWebAppDeploymentV4/Tests/L0NonWindowsFolderPkg.ts b/_generated/AzureRmWebAppDeploymentV4/Tests/L0NonWindowsFolderPkg.ts
new file mode 100644
index 000000000000..fe9247e0807f
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/Tests/L0NonWindowsFolderPkg.ts
@@ -0,0 +1,237 @@
+import ma = require('azure-pipelines-task-lib/mock-answer');
+import tmrm = require('azure-pipelines-task-lib/mock-run');
+import path = require('path');
+
+let taskPath = path.join(__dirname, '..', 'azurermwebappdeployment.js');
+let tr: tmrm.TaskMockRunner = new tmrm.TaskMockRunner(taskPath);
+
+tr.setInput('ConnectedServiceName', 'AzureRMSpn');
+tr.setInput('WebAppName', 'mytestapp');
+tr.setInput('Package', 'webAppPkg');
+tr.setInput('UseWebDeploy', 'false');
+
+process.env['TASK_TEST_TRACE'] = "1";
+process.env["ENDPOINT_AUTH_AzureRMSpn"] = "{\"parameters\":{\"serviceprincipalid\":\"spId\",\"serviceprincipalkey\":\"spKey\",\"tenantid\":\"tenant\"},\"scheme\":\"ServicePrincipal\"}";
+process.env["ENDPOINT_AUTH_PARAMETER_AzureRMSpn_SERVICEPRINCIPALID"] = "spId";
+process.env["ENDPOINT_AUTH_PARAMETER_AzureRMSpn_SERVICEPRINCIPALKEY"] = "spKey";
+process.env["ENDPOINT_AUTH_PARAMETER_AzureRMSpn_TENANTID"] = "tenant";
+process.env["ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONNAME"] = "sName";
+process.env["ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONID"] = "sId";
+process.env["AZURE_HTTP_USER_AGENT"] = "TFS_useragent";
+process.env["SYSTEM_DEFAULTWORKINGDIRECTORY"] = "DefaultWorkingDirectory";
+process.env["BUILD_SOURCEVERSION"] = "46da24f35850f455185b9188b4742359b537076f";
+process.env["BUILD_BUILDID"] = "1",
+process.env["RELEASE_RELEASEID"] = "1";
+process.env["BUILD_BUILDNUMBER"] = "1";
+process.env["RELEASE_RELEASENAME"] = "Release-1";
+process.env["BUILD_REPOSITORY_PROVIDER"] = "TfsGit";
+process.env["BUILD_REPOSITORY_NAME"] = "MyFirstProject";
+process.env["SYSTEM_TEAMFOUNDATIONCOLLECTIONURI"] = "https://abc.visualstudio.com/";
+process.env["SYSTEM_TEAMPROJECT"] = "MyFirstProject";
+process.env["BUILD_SOURCEVERISONAUTHOR"] = "author";
+process.env["RELEASE_RELEASEURI"] = "vstfs:///ReleaseManagement/Release/1";
+process.env["AGENT_NAME"] = "author";
+
+// provide answers for task mock
+let a: ma.TaskLibAnswers = {
+ "which": {
+ "cmd": "cmd"
+ },
+ "stats": {
+ "webAppPkg.zip": {
+ "isFile": true
+ }
+ },
+ "osType": {
+ "osType": "Linux"
+ },
+ "checkPath": {
+ "cmd": true,
+ "webAppPkg.zip": true,
+ "webAppPkg": true
+ },
+ "exec": {
+ "cmd /C DefaultWorkingDirectory\\msDeployCommand.bat": {
+ "code": 0,
+ "stdout": "Executed Successfully"
+ },
+ "cmd /C DefaultWorkingDirectory\\msDeployParam.bat": {
+ "code": 0,
+ "stdout": "Executed Successfully"
+ }
+ },
+ "exist": {
+ "webAppPkg.zip": true,
+ "webAppPkg": true
+ },
+ "glob": {
+ "webAppPkgPattern" : ["webAppPkg1", "webAppPkg2"],
+ "Invalid_webAppPkg" : [],
+ "webAppPkg.zip": ["webAppPkg.zip"],
+ "webAppPkg": ["webAppPkg"]
+ },
+ "getVariable": {
+ "ENDPOINT_AUTH_AzureRMSpn": "{\"parameters\":{\"serviceprincipalid\":\"spId\",\"serviceprincipalkey\":\"spKey\",\"tenantid\":\"tenant\"},\"scheme\":\"ServicePrincipal\"}",
+ "ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONNAME": "sName",
+ "ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONID": "sId",
+ "AZURE_HTTP_USER_AGENT": "TFS_useragent",
+ "System.DefaultWorkingDirectory": "DefaultWorkingDirectory",
+ "build.sourceVersion": "46da24f35850f455185b9188b4742359b537076f",
+ "build.buildId": 1,
+ "release.releaseId": 1,
+ "build.buildNumber": 1,
+ "release.releaseName": "Release-1",
+ "build.repository.provider": "TfsGit",
+ "build.repository.name": "MyFirstProject",
+ "system.TeamFoundationCollectionUri": "https://abc.visualstudio.com/",
+ "system.teamProject": "MyFirstProject",
+ "build.sourceVersionAuthor": "author",
+ "release.releaseUri": "vstfs:///ReleaseManagement/Release/1",
+ "agent.name": "agent"
+ },
+ "rmRF": {
+ "temp_web_package_random_path": {
+ "success": true
+ }
+ }
+}
+
+
+var kuduDeploymentLog = require('azurerest-common/kududeploymentstatusutility.js');
+var msDeployUtility = require('webdeployment-common/msdeployutility.js');
+tr.registerMock('./msdeployutility.js', {
+ getMSDeployCmdArgs : msDeployUtility.getMSDeployCmdArgs,
+ getMSDeployFullPath : function() {
+ var msDeployFullPath = "msdeploypath\\msdeploy.exe";
+ return msDeployFullPath;
+ }
+});
+
+tr.registerMock('azurerest-common/azurerestutility.js', {
+ getAzureRMWebAppPublishProfile: function(SPN, webAppName, resourceGroupName, deployToSlotFlag, slotName) {
+ var mockPublishProfile = {
+ profileName: 'mytestapp - Web Deploy',
+ publishMethod: 'MSDeploy',
+ publishUrl: 'mytestappKuduUrl',
+ msdeploySite: 'mytestapp',
+ userName: '$mytestapp',
+ userPWD: 'mytestappPwd',
+ destinationAppUrl: 'mytestappUrl',
+ SQLServerDBConnectionString: '',
+ mySQLDBConnectionString: '',
+ hostingProviderForumLink: '',
+ controlPanelLink: '',
+ webSystem: 'WebSites'
+ };
+ if(deployToSlotFlag) {
+ mockPublishProfile.profileName = 'mytestapp-' + slotName + ' - Web Deploy';
+ mockPublishProfile.publishUrl = 'mytestappKuduUrl-' + slotName;
+ mockPublishProfile.msdeploySite = 'mytestapp__' + slotName;
+ mockPublishProfile.userName = '$mytestapp__' + slotName;
+ mockPublishProfile.userPWD = 'mytestappPwd';
+ mockPublishProfile.destinationAppUrl = 'mytestappUrl-' + slotName;
+ }
+ return mockPublishProfile;
+ },
+ updateDeploymentStatus: function(publishingProfile, isDeploymentSuccess ) {
+ if(isDeploymentSuccess) {
+ console.log('Updated history to kudu');
+ }
+ else {
+ console.log('Failed to update history to kudu');
+ }
+ var webAppPublishKuduUrl = publishingProfile.publishUrl;
+ var requestDetails = kuduDeploymentLog.getUpdateHistoryRequest(webAppPublishKuduUrl, isDeploymentSuccess);
+ requestDetails["requestBody"].author = 'author';
+ console.log("kudu log requestBody is:" + JSON.stringify(requestDetails["requestBody"]));
+ },
+ getAzureRMWebAppConfigDetails: function(SPN, webAppName, resourceGroupName, deployToSlotFlag, slotName) {
+ var config = {
+ id: 'appid',
+ properties: {
+ virtualApplications: [ ['Object'], ['Object'], ['Object'] ],
+ scmType: "None"
+ }
+ }
+
+ return config;
+ },
+ getResourceGroupName: function (SPN, webAppName) {
+ return "foobar";
+ },
+ getWebAppAppSettings : function (SPN, webAppName: string, resourceGroupName: string, deployToSlotFlag: boolean, slotName: string){
+ var appSettings = {
+ properties : {
+ MSDEPLOY_RENAME_LOCKED_FILES : '1'
+ }
+ };
+ return appSettings;
+ },
+ updateWebAppAppSettings : function (){
+ return true;
+ },
+ updateAzureRMWebAppConfigDetails: function() {
+ console.log("Successfully updated scmType to VSTSRM");
+ },
+ getAzureRMWebAppMetadata: function() {
+ return {
+ properties: {}
+ }
+ },
+ updateAzureRMWebAppMetadata: function() {
+ console.log("Successfully updated Web App metadata");
+ }
+});
+
+tr.registerMock('./kuduutility.js', {
+ deployWebAppPackage: function(webAppPackage, webAppZipFile) {
+ console.log ('Deployed using KuduDeploy');
+ },
+ getVirtualAndPhysicalPaths: function (virtualApplication, virtualApplicationMappings) {
+ // construct URL depending on virtualApplication or root of webapplication
+ var physicalPath = "/site/wwwroot";
+ var virtualPath = "/";
+ if (virtualApplication) {
+ virtualPath = "/" + virtualApplication;
+ }
+ for (var index in virtualApplicationMappings) {
+ var mapping = virtualApplicationMappings[index];
+ if (mapping.virtualPath == virtualPath) {
+ physicalPath = mapping.physicalPath;
+ break;
+ }
+ }
+ return [virtualPath, physicalPath];
+ },
+ containsParamFile: function (webAppPackage) {
+ var isParamFilePresent = false;
+ return isParamFilePresent;
+ }
+});
+
+tr.registerMock('webdeployment-common/ziputility.js', {
+ archiveFolder : function() {
+ console.log('Folder Archiving Successful');
+ }
+});
+
+tr.registerMock('webdeployment-common/utility.js', {
+ isInputPkgIsFolder: function() {
+ return true;
+ },
+ fileExists: function() {
+ return true;
+ },
+ canUseWebDeploy: function() {
+ return false;
+ },
+ findfiles: function() {
+ return ['webDeployPkg']
+ },
+ generateTemporaryFolderOrZipPath: function() {
+ return 'temp_web_package_random_path';
+ }
+});
+
+tr.setAnswers(a);
+tr.run();
\ No newline at end of file
diff --git a/_generated/AzureRmWebAppDeploymentV4/Tests/L0NonWindowsParamFileinPkg.ts b/_generated/AzureRmWebAppDeploymentV4/Tests/L0NonWindowsParamFileinPkg.ts
new file mode 100644
index 000000000000..ed36177767db
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/Tests/L0NonWindowsParamFileinPkg.ts
@@ -0,0 +1,210 @@
+import ma = require('azure-pipelines-task-lib/mock-answer');
+import tmrm = require('azure-pipelines-task-lib/mock-run');
+import path = require('path');
+
+let taskPath = path.join(__dirname, '..', 'azurermwebappdeployment.js');
+let tr: tmrm.TaskMockRunner = new tmrm.TaskMockRunner(taskPath);
+
+tr.setInput('ConnectedServiceName', 'AzureRMSpn');
+tr.setInput('WebAppName', 'mytestapp');
+tr.setInput('Package', 'webAppPkg.zip');
+tr.setInput('UseWebDeploy', 'false');
+tr.setInput('SetParametersFile', 'parameterFilePresent.xml');
+
+process.env['TASK_TEST_TRACE'] = "1";
+process.env["ENDPOINT_AUTH_AzureRMSpn"] = "{\"parameters\":{\"serviceprincipalid\":\"spId\",\"serviceprincipalkey\":\"spKey\",\"tenantid\":\"tenant\"},\"scheme\":\"ServicePrincipal\"}";
+process.env["ENDPOINT_AUTH_PARAMETER_AzureRMSpn_SERVICEPRINCIPALID"] = "spId";
+process.env["ENDPOINT_AUTH_PARAMETER_AzureRMSpn_SERVICEPRINCIPALKEY"] = "spKey";
+process.env["ENDPOINT_AUTH_PARAMETER_AzureRMSpn_TENANTID"] = "tenant";
+process.env["ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONNAME"] = "sName";
+process.env["ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONID"] = "sId";
+process.env["AZURE_HTTP_USER_AGENT"] = "TFS_useragent";
+process.env["SYSTEM_DEFAULTWORKINGDIRECTORY"] = "DefaultWorkingDirectory";
+process.env["BUILD_SOURCEVERSION"] = "46da24f35850f455185b9188b4742359b537076f";
+process.env["BUILD_BUILDID"] = '1',
+process.env["RELEASE_RELEASEID"] = '1';
+process.env["BUILD_BUILDNUMBER"] = '1';
+process.env["RELEASE_RELEASENAME"] = "Release-1";
+process.env["BUILD_REPOSITORY_PROVIDER"] = "TfsGit";
+process.env["BUILD_REPOSITORY_NAME"] = "MyFirstProject";
+process.env["SYSTEM_TEAMFOUNDATIONCOLLECTIONURI"] = "https://abc.visualstudio.com/";
+process.env["SYSTEM_TEAMPROJECT"] = "MyFirstProject";
+process.env["BUILD_SOURCEVERISONAUTHOR"] = "author";
+process.env["RELEASE_RELEASEURI"] = "vstfs:///ReleaseManagement/Release/1";
+process.env["AGENT_NAME"] = "author";
+
+let a: ma.TaskLibAnswers = {
+ "which": {
+ "cmd": "cmd"
+ },
+ "stats": {
+ "webAppPkg.zip": {
+ "isFile": true
+ },
+ "parameterFilePresent.xml": {
+ "isFile" : true
+ },
+ "parameterFileUser.xml": {
+ "isFile" : true
+ }
+ },
+ "checkPath": {
+ "cmd" : true,
+ "webAppPkg.zip": true,
+ "webAppPkg": true
+ },
+ "osType": {
+ "osType": "Linux"
+ },
+ "exec": {
+ "cmd /C DefaultWorkingDirectory\\msDeployCommand.bat": {
+ "code" : 0,
+ "stdout": "Executed Successfully"
+ },
+ "cmd /C DefaultWorkingDirectory\\msDeployParam.bat": {
+ "code" : 0,
+ "stdout": "Executed Successfully"
+ }
+ },
+ "exist": {
+ "webAppPkg.zip": true
+ },
+ "glob": {
+ "webAppPkg.zip": ["webAppPkg.zip"],
+ "webAppPkg": ["webAppPkg"]
+ },
+ "getVariable": {
+ "ENDPOINT_AUTH_AzureRMSpn": "{\"parameters\":{\"serviceprincipalid\":\"spId\",\"serviceprincipalkey\":\"spKey\",\"tenantid\":\"tenant\"},\"scheme\":\"ServicePrincipal\"}",
+ "ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONNAME": "sName",
+ "ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONID": "sId",
+ "SYSTEM_DEFAULTWORKINGDIRECTORY": "defaultWorkingDirectory",
+ "AZURE_HTTP_USER_AGENT": "TFS_useragent",
+ "System.DefaultWorkingDirectory" : "DefaultWorkingDirectory",
+ "build.sourcesDirectory": "DefaultWorkingDirectory"
+ }
+};
+
+
+tr.registerMock('webdeployment-common/ziputility.js', {
+ getArchivedEntries: function(webDeployPkg) {
+ return {
+ "entries":[
+ "systemInfo.xml"
+ ]
+ };
+ }
+});
+var kuduDeploymentLog = require('azurerest-common/kududeploymentstatusutility.js');
+var msDeployUtility = require('webdeployment-common/msdeployutility.js');
+tr.registerMock('./msdeployutility.js', {
+ getMSDeployCmdArgs : msDeployUtility.getMSDeployCmdArgs,
+ getMSDeployFullPath : function() {
+ var msDeployFullPath = "msdeploypath\\msdeploy.exe";
+ return msDeployFullPath;
+ }
+});
+
+tr.registerMock('azurerest-common/azurerestutility.js', {
+ getAzureRMWebAppPublishProfile: function(SPN, webAppName, resourceGroupName, deployToSlotFlag, slotName) {
+ var mockPublishProfile = {
+ profileName: 'mytestapp - Web Deploy',
+ publishMethod: 'MSDeploy',
+ publishUrl: 'mytestappKuduUrl',
+ msdeploySite: 'mytestapp',
+ userName: '$mytestapp',
+ userPWD: 'mytestappPwd',
+ destinationAppUrl: 'mytestappUrl',
+ SQLServerDBConnectionString: '',
+ mySQLDBConnectionString: '',
+ hostingProviderForumLink: '',
+ controlPanelLink: '',
+ webSystem: 'WebSites'
+ };
+ if(deployToSlotFlag) {
+ mockPublishProfile.profileName = 'mytestapp-' + slotName + ' - Web Deploy';
+ mockPublishProfile.publishUrl = 'mytestappKuduUrl-' + slotName;
+ mockPublishProfile.msdeploySite = 'mytestapp__' + slotName;
+ mockPublishProfile.userName = '$mytestapp__' + slotName;
+ mockPublishProfile.userPWD = 'mytestappPwd';
+ mockPublishProfile.destinationAppUrl = 'mytestappUrl-' + slotName;
+ }
+ return mockPublishProfile;
+ },
+ updateDeploymentStatus: function(publishingProfile, isDeploymentSuccess ) {
+ if(isDeploymentSuccess) {
+ console.log('Updated history to kudu');
+ }
+ else {
+ console.log('Failed to update history to kudu');
+ }
+ var webAppPublishKuduUrl = publishingProfile.publishUrl;
+ var requestDetails = kuduDeploymentLog.getUpdateHistoryRequest(webAppPublishKuduUrl, isDeploymentSuccess);
+ requestDetails["requestBody"].author = 'author';
+ console.log("kudu log requestBody is:" + JSON.stringify(requestDetails["requestBody"]));
+ },
+ getAzureRMWebAppConfigDetails: function(SPN, webAppName, resourceGroupName, deployToSlotFlag, slotName) {
+ var config = {
+ id: 'appid',
+ properties: {
+ virtualApplications: [ ['Object'], ['Object'], ['Object'] ],
+ scmType: "None"
+ }
+ }
+
+ return config;
+ },
+ getResourceGroupName: function (SPN, webAppName) {
+ return "foobar";
+ },
+ getWebAppAppSettings : function (SPN, webAppName: string, resourceGroupName: string, deployToSlotFlag: boolean, slotName: string){
+ var appSettings = {
+ properties : {
+ MSDEPLOY_RENAME_LOCKED_FILES : '1'
+ }
+ };
+ return appSettings;
+ },
+ updateWebAppAppSettings : function (){
+ return true;
+ },
+ updateAzureRMWebAppConfigDetails: function() {
+ console.log("Successfully updated scmType to VSTSRM");
+ },
+ getAzureRMWebAppMetadata: function() {
+ return {
+ properties: {}
+ }
+ },
+ updateAzureRMWebAppMetadata: function() {
+ console.log("Successfully updated Web App metadata");
+ }
+});
+
+tr.registerMock('./kuduutility.js', {
+ deployWebAppPackage: function(webAppPackage, webAppZipFile) {
+ console.log ('Deployed using KuduDeploy');
+ },
+ getVirtualAndPhysicalPaths: function (virtualApplication, virtualApplicationMappings) {
+ // construct URL depending on virtualApplication or root of webapplication
+ var physicalPath = "/site/wwwroot";
+ var virtualPath = "/";
+ if (virtualApplication) {
+ virtualPath = "/" + virtualApplication;
+ }
+ for (var index in virtualApplicationMappings) {
+ var mapping = virtualApplicationMappings[index];
+ if (mapping.virtualPath == virtualPath) {
+ physicalPath = mapping.physicalPath;
+ break;
+ }
+ }
+ return [virtualPath, physicalPath];
+ },
+ containsParamFile: function (webAppPackage) {
+ var isParamFilePresent = false;
+ return isParamFilePresent;
+ }
+});
+
+tr.setAnswers(a);
+tr.run();
\ No newline at end of file
diff --git a/_generated/AzureRmWebAppDeploymentV4/Tests/L0NonWindowsXdtTransformationFail.ts b/_generated/AzureRmWebAppDeploymentV4/Tests/L0NonWindowsXdtTransformationFail.ts
new file mode 100644
index 000000000000..8fa7ec87fa34
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/Tests/L0NonWindowsXdtTransformationFail.ts
@@ -0,0 +1,185 @@
+import ma = require('azure-pipelines-task-lib/mock-answer');
+import tmrm = require('azure-pipelines-task-lib/mock-run');
+import path = require('path');
+
+let taskPath = path.join(__dirname, '..', 'azurermwebappdeployment.js');
+let tr: tmrm.TaskMockRunner = new tmrm.TaskMockRunner(taskPath);
+tr.setInput('ConnectedServiceName', 'AzureRMSpn');
+tr.setInput('WebAppName', 'mytestapp');
+tr.setInput('Package', 'webAppPkg.zip');
+tr.setInput('UseWebDeploy', 'false');
+tr.setInput('XmlTransformation', 'true');
+
+process.env['TASK_TEST_TRACE'] = "1";
+process.env["ENDPOINT_AUTH_AzureRMSpn"] = "{\"parameters\":{\"serviceprincipalid\":\"spId\",\"serviceprincipalkey\":\"spKey\",\"tenantid\":\"tenant\"},\"scheme\":\"ServicePrincipal\"}";
+process.env["ENDPOINT_AUTH_PARAMETER_AzureRMSpn_SERVICEPRINCIPALID"] = "spId";
+process.env["ENDPOINT_AUTH_PARAMETER_AzureRMSpn_SERVICEPRINCIPALKEY"] = "spKey";
+process.env["ENDPOINT_AUTH_PARAMETER_AzureRMSpn_TENANTID"] = "tenant";
+process.env["ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONNAME"] = "sName";
+process.env["ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONID"] = "sId";
+process.env["AZURE_HTTP_USER_AGENT"] = "TFS_useragent";
+process.env["SYSTEM_DEFAULTWORKINGDIRECTORY"] = "DefaultWorkingDirectory";
+process.env["BUILD_SOURCEVERSION"] = "46da24f35850f455185b9188b4742359b537076f";
+process.env["BUILD_BUILDID"] = "1",
+process.env["RELEASE_RELEASEID"] = "1";
+process.env["BUILD_BUILDNUMBER"] = "1";
+process.env["RELEASE_RELEASENAME"] = "Release-1";
+process.env["BUILD_REPOSITORY_PROVIDER"] = "TfsGit";
+process.env["BUILD_REPOSITORY_NAME"] = "MyFirstProject";
+process.env["SYSTEM_TEAMFOUNDATIONCOLLECTIONURI"] = "https://abc.visualstudio.com/";
+process.env["SYSTEM_TEAMPROJECT"] = "MyFirstProject";
+process.env["BUILD_SOURCEVERISONAUTHOR"] = "author";
+process.env["RELEASE_RELEASEURI"] = "vstfs:///ReleaseManagement/Release/1";
+process.env["AGENT_NAME"] = "author";
+
+// provide answers for task mock
+let a: ma.TaskLibAnswers = {
+ "which": {
+ "cmd": "cmd"
+ },
+ "stats": {
+ "webAppPkg.zip": {
+ "isFile": true
+ }
+ },
+ "osType": {
+ "osType": "linux"
+ },
+ "checkPath": {
+ "cmd": true,
+ "webAppPkg.zip": true,
+ "webAppPkg": true
+ },
+ "exec": {
+ "cmd /C DefaultWorkingDirectory\\msDeployCommand.bat": {
+ "code": 0,
+ "stdout": "Executed Successfully"
+ },
+ "cmd /C DefaultWorkingDirectory\\msDeployParam.bat": {
+ "code": 0,
+ "stdout": "Executed Successfully"
+ }
+ },
+ "exist": {
+ "webAppPkg.zip": true,
+ "webAppPkg": true
+ },
+ "glob": {
+ "webAppPkgPattern" : ["webAppPkg1", "webAppPkg2"],
+ "Invalid_webAppPkg" : [],
+ "webAppPkg.zip": ["webAppPkg.zip"],
+ "webAppPkg": ["webAppPkg"],
+ },
+ "getVariable": {
+ "ENDPOINT_AUTH_AzureRMSpn": "{\"parameters\":{\"serviceprincipalid\":\"spId\",\"serviceprincipalkey\":\"spKey\",\"tenantid\":\"tenant\"},\"scheme\":\"ServicePrincipal\"}",
+ "ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONNAME": "sName",
+ "ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONID": "sId",
+ "AZURE_HTTP_USER_AGENT": "TFS_useragent",
+ "System.DefaultWorkingDirectory": "DefaultWorkingDirectory",
+ "build.sourceVersion": "46da24f35850f455185b9188b4742359b537076f",
+ "build.buildId": 1,
+ "release.releaseId": 1,
+ "build.buildNumber": 1,
+ "release.releaseName": "Release-1",
+ "build.repository.provider": "TfsGit",
+ "build.repository.name": "MyFirstProject",
+ "system.TeamFoundationCollectionUri": "https://abc.visualstudio.com/",
+ "system.teamProject": "MyFirstProject",
+ "build.sourceVersionAuthor": "author",
+ "release.releaseUri": "vstfs:///ReleaseManagement/Release/1",
+ "agent.name": "agent"
+ }
+};
+
+var kuduDeploymentLog = require('azurerest-common/kududeploymentstatusutility.js');
+var msDeployUtility = require('azure-pipelines-tasks-webdeployment-common/msdeployutility.js');
+tr.registerMock('./msdeployutility.js', {
+ getMSDeployCmdArgs : msDeployUtility.getMSDeployCmdArgs,
+ getMSDeployFullPath : function() {
+ var msDeployFullPath = "msdeploypath\\msdeploy.exe";
+ return msDeployFullPath;
+ }
+});
+
+tr.registerMock('azurerest-common/azurerestutility.js', {
+ getAzureRMWebAppPublishProfile: function(SPN, webAppName, resourceGroupName, deployToSlotFlag, slotName) {
+ var mockPublishProfile = {
+ profileName: 'mytestapp - Web Deploy',
+ publishMethod: 'MSDeploy',
+ publishUrl: 'mytestappKuduUrl',
+ msdeploySite: 'mytestapp',
+ userName: '$mytestapp',
+ userPWD: 'mytestappPwd',
+ destinationAppUrl: 'mytestappUrl',
+ SQLServerDBConnectionString: '',
+ mySQLDBConnectionString: '',
+ hostingProviderForumLink: '',
+ controlPanelLink: '',
+ webSystem: 'WebSites'
+ };
+ if(deployToSlotFlag) {
+ mockPublishProfile.profileName = 'mytestapp-' + slotName + ' - Web Deploy';
+ mockPublishProfile.publishUrl = 'mytestappKuduUrl-' + slotName;
+ mockPublishProfile.msdeploySite = 'mytestapp__' + slotName;
+ mockPublishProfile.userName = '$mytestapp__' + slotName;
+ mockPublishProfile.userPWD = 'mytestappPwd';
+ mockPublishProfile.destinationAppUrl = 'mytestappUrl-' + slotName;
+ }
+ return mockPublishProfile;
+ },
+ updateDeploymentStatus: function(publishingProfile, isDeploymentSuccess ) {
+ if(isDeploymentSuccess) {
+ console.log('Updated history to kudu');
+ }
+ else {
+ console.log('Failed to update history to kudu');
+ }
+ var webAppPublishKuduUrl = publishingProfile.publishUrl;
+ var requestDetails = kuduDeploymentLog.getUpdateHistoryRequest(webAppPublishKuduUrl, isDeploymentSuccess);
+ console.log("kudu log requestBody is:" + JSON.stringify(requestDetails["requestBody"]));
+ },
+ getAzureRMWebAppConfigDetails: function(SPN, webAppName, resourceGroupName, deployToSlotFlag, slotName) {
+ var config = {
+ id: 'appid',
+ properties: {
+ virtualApplications: [ ['Object'], ['Object'], ['Object'] ],
+ scmType: "None"
+ }
+ }
+
+ return config;
+ },
+ getResourceGroupName: function (SPN, webAppName) {
+ return "foobar";
+ },
+ getWebAppAppSettings : function (SPN, webAppName: string, resourceGroupName: string, deployToSlotFlag: boolean, slotName: string){
+ var appSettings = {
+ properties : {
+ MSDEPLOY_RENAME_LOCKED_FILES : '1'
+ }
+ };
+ return appSettings;
+ },
+ updateWebAppAppSettings : function (){
+ return true;
+ },
+ updateAzureRMWebAppConfigDetails: function() {
+ console.log("Successfully updated scmType to VSTSRM");
+ }
+});
+tr.registerMock('azure-pipelines-tasks-webdeployment-common/ziputility.js', {
+ unzip: function() {
+
+ },
+ archiveFolder: function() {
+ return "DefaultWorkingDirectory\\temp_web_package.zip"
+ },
+ getArchivedEntries: function() {
+ return {
+ entries: ['Web.config', 'Web.debug.config']
+ }
+ }
+});
+
+tr.setAnswers(a);
+tr.run();
\ No newline at end of file
diff --git a/_generated/AzureRmWebAppDeploymentV4/Tests/L0RunPostDeploymentScript.ts b/_generated/AzureRmWebAppDeploymentV4/Tests/L0RunPostDeploymentScript.ts
new file mode 100644
index 000000000000..826ec50f3335
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/Tests/L0RunPostDeploymentScript.ts
@@ -0,0 +1,207 @@
+var mockery = require('mockery');
+var path = require('path');
+mockery.enable({
+ useCleanCache: true,
+ warnOnReplace: false,
+ warnOnUnregistered: false
+});
+
+mockery.registerMock('typed-rest-client/HttpClient', {
+ HttpClient: function() {
+ return {
+ get: function(url, headers) {
+ url = url.substring(0, url.lastIndexOf('_')) + path.extname(url);
+ var getUrlMap = {
+ 'https://mytestappKuduUrl/api/vfs/site/wwwroot/stdout.txt': 'stdout content',
+ 'https://mytestappKuduUrl/api/vfs/site/wwwroot/stderr.txt': 'sterr content',
+ 'https://mytestappKuduUrl/api/vfs/site/wwwroot/script_result.txt': '0'
+ };
+
+ if(getUrlMap[url]) {
+ console.log('GET:' + url);
+ return {
+ then: function(handler) {
+ handler({
+ message: {
+ statusCode: 200,
+ statusMessage: "Success"
+ },
+ readBody: function() {
+ return getUrlMap[url];
+ }
+ });
+ }
+ };
+ }
+ throw Error('Unknown verb or URL - GET');
+ },
+ del: function(url, headers) {
+ url = url.substring(0, url.lastIndexOf('_')) + path.extname(url);
+
+ var deleteUrlArray = [
+ 'https://mytestappKuduUrl/api/vfs/site/wwwroot/kuduPostDeploymentScript.cmd',
+ 'https://mytestappKuduUrl/api/vfs/site/wwwroot/mainCmdFile.cmd'
+ ];
+
+ if (deleteUrlArray.indexOf(url) != -1) {
+ console.log("DELETED:" + url);
+ return;
+ }
+
+ throw Error('Unknown verb or URL - GET');
+ },
+ post: function(url, data, headers) {
+ if (url == 'https://mytestappKuduUrl/api/command') {
+ console.log('POST:https://mytestappKuduUrl/api/command');
+ return;
+ }
+ throw Error('Unknown verb or URL - SEND');
+ },
+ sendStream: function(verb, url) {
+ url = url.substring(0, url.lastIndexOf('_')) + path.extname(url);
+ var urlArray = [
+ 'https://mytestappKuduUrl/api/vfs/site/wwwroot/kuduPostDeploymentScript.cmd',
+ 'https://mytestappKuduUrl/api/vfs/site/wwwroot/mainCmdFile.cmd',
+ 'https://mytestappKuduUrl/api/vfs/site/wwwroot/delete_log_file.cmd'
+ ];
+
+ if(verb == 'PUT' && urlArray.indexOf(url) != -1) {
+ console.log('PUT:' + url);
+ return;
+ }
+ throw Error('Unknown verb or URL - sendStream');
+ }
+ }
+ }
+});
+
+mockery.registerMock('typed-rest-client/RestClient', {
+ RestClient: function() {
+ return {
+ get: function(url, options) {
+ url = url.substring(0, url.lastIndexOf('_')) + path.extname(url);
+ var getUrlMap = {
+ 'https://mytestappKuduUrl/api/vfs/site/wwwroot/stdout.txt': 'stdout content',
+ 'https://mytestappKuduUrl/api/vfs/site/wwwroot/stderr.txt': 'sterr content',
+ 'https://mytestappKuduUrl/api/vfs/site/wwwroot/script_result.txt': '0'
+ };
+
+ if(getUrlMap[url]) {
+ console.log('GET:' + url);
+ return getUrlMap[url];
+ }
+
+ throw Error('Unknown verb or URL - GET');
+ },
+ del: function(url, options) {
+ url = url.substring(0, url.lastIndexOf('_')) + path.extname(url);
+
+ var deleteUrlArray = [
+ 'https://mytestappKuduUrl/api/vfs/site/wwwroot/kuduPostDeploymentScript.cmd',
+ 'https://mytestappKuduUrl/api/vfs/site/wwwroot/mainCmdFile.cmd'
+ ];
+
+ if (deleteUrlArray.indexOf(url) != -1) {
+ console.log("DELETED:" + url);
+ return {
+ then: function() {
+ }
+ };
+ }
+
+ throw Error('Unknown verb or URL - GET');
+ },
+ create: function(url, resources, options) {
+ if (url == 'https://mytestappKuduUrl/api/command') {
+ console.log('POST:https://mytestappKuduUrl/api/command');
+ return {
+ then: function() {
+ }
+ };
+ }
+ throw Error('Unknown verb or URL - SEND');
+ },
+ uploadStream: function(verb, url) {
+ url = url.substring(0, url.lastIndexOf('_')) + path.extname(url);
+ var urlArray = [
+ 'https://mytestappKuduUrl/api/vfs/site/wwwroot/kuduPostDeploymentScript.cmd',
+ 'https://mytestappKuduUrl/api/vfs/site/wwwroot/mainCmdFile.cmd',
+ 'https://mytestappKuduUrl/api/vfs/site/wwwroot/delete_log_file.cmd'
+ ];
+
+ if(verb == 'PUT' && urlArray.indexOf(url) != -1) {
+ console.log('PUT:' + url);
+ return {
+ then: function() {
+ }
+ };
+ }
+ throw Error('Unknown verb or URL - sendStream');
+ }
+ }
+ }
+});
+
+mockery.registerMock('azure-pipelines-task-lib/task', {
+ exist: function() {
+ return true;
+ },
+ getVariable: function(variable) {
+ if(variable == "agent.proxyurl") {
+ return null;
+ }
+ return 'workingDirectory';
+ },
+ debug: function(message) {
+ console.log('##debug : ' + message);
+ },
+ loc: function(message, argument) {
+ console.log('##LOC: ' + message + ' : ' + argument);
+ },
+ writeFile: function(fileName, content) {
+ console.log('##FileWrite: ' + fileName);
+ },
+ rmRF: function(fileName) {
+ console.log('##rmRF: ' + fileName);
+ }
+
+});
+mockery.registerMock('q', {
+ 'defer': function() {
+ return {
+ promise: {
+ 'content': '0'
+ },
+ resolve: function(result) {
+ return result;
+ }
+ };
+ }
+});
+
+var fs = require('fs');
+mockery.registerMock('fs', {
+ 'createReadStream': function() {
+ return '';
+ },
+ statSync: fs.statSync,
+ writeFileSync: fs.writeFileSync,
+ readFileSync: fs.readFileSync
+});
+var mockPublishProfile = {
+ profileName: 'mytestapp - Web Deploy',
+ publishMethod: 'MSDeploy',
+ publishUrl: 'mytestappKuduUrl',
+ msdeploySite: 'mytestapp',
+ userName: '$mytestapp',
+ userPWD: 'mytestappPwd',
+ destinationAppUrl: 'mytestappUrl',
+ SQLServerDBConnectionString: '',
+ mySQLDBConnectionString: '',
+ hostingProviderForumLink: '',
+ controlPanelLink: '',
+ webSystem: 'WebSites'
+};
+
+var kuduUtility = require('../kuduutility.js');
+kuduUtility.runPostDeploymentScript(mockPublishProfile, 'site/wwwroot', "File Path", null, 'myscript.cmd', false, false);
diff --git a/_generated/AzureRmWebAppDeploymentV4/Tests/L0RunPostDeploymentScriptForLinux.ts b/_generated/AzureRmWebAppDeploymentV4/Tests/L0RunPostDeploymentScriptForLinux.ts
new file mode 100644
index 000000000000..07b0f60c6d58
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/Tests/L0RunPostDeploymentScriptForLinux.ts
@@ -0,0 +1,207 @@
+var mockery = require('mockery');
+var path = require('path');
+mockery.enable({
+ useCleanCache: true,
+ warnOnReplace: false,
+ warnOnUnregistered: false
+});
+
+mockery.registerMock('typed-rest-client/HttpClient', {
+ HttpClient: function() {
+ return {
+ get: function(url, headers) {
+ url = url.substring(0, url.lastIndexOf('_')) + path.extname(url);
+ var getUrlMap = {
+ 'https://mytestappKuduUrl/api/vfs/site/wwwroot/stdout.txt': 'stdout content',
+ 'https://mytestappKuduUrl/api/vfs/site/wwwroot/stderr.txt': 'sterr content',
+ 'https://mytestappKuduUrl/api/vfs/site/wwwroot/script_result.txt': '0'
+ };
+
+ if(getUrlMap[url]) {
+ console.log('GET:' + url);
+ return {
+ then: function(handler) {
+ handler({
+ message: {
+ statusCode: 200,
+ statusMessage: "Success"
+ },
+ readBody: function() {
+ return getUrlMap[url];
+ }
+ });
+ }
+ };
+ }
+ throw Error('Unknown verb or URL - GET');
+ },
+ del: function(url, headers) {
+ url = url.substring(0, url.lastIndexOf('_')) + path.extname(url);
+
+ var deleteUrlArray = [
+ 'https://mytestappKuduUrl/api/vfs/site/wwwroot/kuduPostDeploymentScript.sh',
+ 'https://mytestappKuduUrl/api/vfs/site/wwwroot/mainCmdFile.sh'
+ ];
+
+ if (deleteUrlArray.indexOf(url) != -1) {
+ console.log("DELETED:" + url);
+ return;
+ }
+
+ throw Error('Unknown verb or URL - GET');
+ },
+ post: function(url, data, headers) {
+ if (url == 'https://mytestappKuduUrl/api/command') {
+ console.log('POST:https://mytestappKuduUrl/api/command');
+ return;
+ }
+ throw Error('Unknown verb or URL - SEND');
+ },
+ sendStream: function(verb, url) {
+ url = url.substring(0, url.lastIndexOf('_')) + path.extname(url);
+ var urlArray = [
+ 'https://mytestappKuduUrl/api/vfs/site/wwwroot/kuduPostDeploymentScript.sh',
+ 'https://mytestappKuduUrl/api/vfs/site/wwwroot/mainCmdFile.sh',
+ 'https://mytestappKuduUrl/api/vfs/site/wwwroot/delete_log_file.sh'
+ ];
+
+ if(verb == 'PUT' && urlArray.indexOf(url) != -1) {
+ console.log('PUT:' + url);
+ return;
+ }
+ throw Error('Unknown verb or URL - sendStream');
+ }
+ }
+ }
+});
+
+mockery.registerMock('typed-rest-client/RestClient', {
+ RestClient: function() {
+ return {
+ get: function(url, options) {
+ url = url.substring(0, url.lastIndexOf('_')) + path.extname(url);
+ var getUrlMap = {
+ 'https://mytestappKuduUrl/api/vfs/site/wwwroot/stdout.txt': 'stdout content',
+ 'https://mytestappKuduUrl/api/vfs/site/wwwroot/stderr.txt': 'sterr content',
+ 'https://mytestappKuduUrl/api/vfs/site/wwwroot/script_result.txt': '0'
+ };
+
+ if(getUrlMap[url]) {
+ console.log('GET:' + url);
+ return getUrlMap[url];
+ }
+
+ throw Error('Unknown verb or URL - GET');
+ },
+ del: function(url, options) {
+ url = url.substring(0, url.lastIndexOf('_')) + path.extname(url);
+
+ var deleteUrlArray = [
+ 'https://mytestappKuduUrl/api/vfs/site/wwwroot/kuduPostDeploymentScript.sh',
+ 'https://mytestappKuduUrl/api/vfs/site/wwwroot/mainCmdFile.sh'
+ ];
+
+ if (deleteUrlArray.indexOf(url) != -1) {
+ console.log("DELETED:" + url);
+ return {
+ then: function() {
+ }
+ };
+ }
+
+ throw Error('Unknown verb or URL - GET');
+ },
+ create: function(url, resources, options) {
+ if (url == 'https://mytestappKuduUrl/api/command') {
+ console.log('POST:https://mytestappKuduUrl/api/command');
+ return {
+ then: function() {
+ }
+ };
+ }
+ throw Error('Unknown verb or URL - SEND');
+ },
+ uploadStream: function(verb, url) {
+ url = url.substring(0, url.lastIndexOf('_')) + path.extname(url);
+ var urlArray = [
+ 'https://mytestappKuduUrl/api/vfs/site/wwwroot/kuduPostDeploymentScript.sh',
+ 'https://mytestappKuduUrl/api/vfs/site/wwwroot/mainCmdFile.sh',
+ 'https://mytestappKuduUrl/api/vfs/site/wwwroot/delete_log_file.sh'
+ ];
+
+ if(verb == 'PUT' && urlArray.indexOf(url) != -1) {
+ console.log('PUT:' + url);
+ return {
+ then: function() {
+ }
+ };
+ }
+ throw Error('Unknown verb or URL - sendStream');
+ }
+ }
+ }
+});
+
+mockery.registerMock('azure-pipelines-task-lib/task', {
+ exist: function() {
+ return true;
+ },
+ getVariable: function(variable) {
+ if(variable == "agent.proxyurl") {
+ return null;
+ }
+ return 'workingDirectory';
+ },
+ debug: function(message) {
+ console.log('##debug : ' + message);
+ },
+ loc: function(message, argument) {
+ console.log('##LOC: ' + message + ' : ' + argument);
+ },
+ writeFile: function(fileName, content) {
+ console.log('##FileWrite: ' + fileName);
+ },
+ rmRF: function(fileName) {
+ console.log('##rmRF: ' + fileName);
+ }
+
+});
+mockery.registerMock('q', {
+ 'defer': function() {
+ return {
+ promise: {
+ 'content': '0'
+ },
+ resolve: function(result) {
+ return result;
+ }
+ };
+ }
+});
+
+var fs = require('fs');
+mockery.registerMock('fs', {
+ 'createReadStream': function() {
+ return '';
+ },
+ statSync: fs.statSync,
+ writeFileSync: fs.writeFileSync,
+ readFileSync: fs.readFileSync
+});
+var mockPublishProfile = {
+ profileName: 'mytestapp - Web Deploy',
+ publishMethod: 'MSDeploy',
+ publishUrl: 'mytestappKuduUrl',
+ msdeploySite: 'mytestapp',
+ userName: '$mytestapp',
+ userPWD: 'mytestappPwd',
+ destinationAppUrl: 'mytestappUrl',
+ SQLServerDBConnectionString: '',
+ mySQLDBConnectionString: '',
+ hostingProviderForumLink: '',
+ controlPanelLink: '',
+ webSystem: 'WebSites'
+};
+
+var kuduUtility = require('../kuduutility.js');
+kuduUtility.runPostDeploymentScript(mockPublishProfile, 'site/wwwroot', "Inline Script", "run command xyz", null, false, true);
diff --git a/_generated/AzureRmWebAppDeploymentV4/Tests/L0WindowsAllInput.ts b/_generated/AzureRmWebAppDeploymentV4/Tests/L0WindowsAllInput.ts
new file mode 100644
index 000000000000..094f74ff0059
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/Tests/L0WindowsAllInput.ts
@@ -0,0 +1,232 @@
+import ma = require('azure-pipelines-task-lib/mock-answer');
+import tmrm = require('azure-pipelines-task-lib/mock-run');
+import path = require('path');
+
+let taskPath = path.join(__dirname, '..', 'azurermwebappdeployment.js');
+let tr: tmrm.TaskMockRunner = new tmrm.TaskMockRunner(taskPath);
+
+tr.setInput('ConnectedServiceName', 'AzureRMSpn');
+tr.setInput('WebAppName', 'mytestapp');
+tr.setInput('Package', 'webAppPkg.zip');
+tr.setInput('UseWebDeploy', 'true');
+tr.setInput('RemoveAdditionalFilesFlag', 'true');
+tr.setInput('ExcludeFilesFromAppDataFlag', 'true');
+tr.setInput('TakeAppOfflineFlag', 'false');
+tr.setInput('VirtualApplication', 'virtualApp');
+tr.setInput('AdditionalArguments', 'additionalArguments');
+tr.setInput('WebAppUri', 'someuri');
+
+process.env['TASK_TEST_TRACE'] = "1";
+process.env["ENDPOINT_AUTH_AzureRMSpn"] = "{\"parameters\":{\"serviceprincipalid\":\"spId\",\"serviceprincipalkey\":\"spKey\",\"tenantid\":\"tenant\"},\"scheme\":\"ServicePrincipal\"}";
+process.env["ENDPOINT_AUTH_PARAMETER_AzureRMSpn_SERVICEPRINCIPALID"] = "spId";
+process.env["ENDPOINT_AUTH_PARAMETER_AzureRMSpn_SERVICEPRINCIPALKEY"] = "spKey";
+process.env["ENDPOINT_AUTH_PARAMETER_AzureRMSpn_TENANTID"] = "tenant";
+process.env["ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONNAME"] = "sName";
+process.env["ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONID"] = "sId";
+process.env["AZURE_HTTP_USER_AGENT"] = "TFS_useragent";
+process.env["SYSTEM_DEFAULTWORKINGDIRECTORY"] = "DefaultWorkingDirectory";
+process.env["BUILD_SOURCEVERSION"] = "46da24f35850f455185b9188b4742359b537076f";
+process.env["BUILD_BUILDID"] = '1',
+process.env["RELEASE_RELEASEID"] = '1';
+process.env["BUILD_BUILDNUMBER"] = '1';
+process.env["RELEASE_RELEASENAME"] = "Release-1";
+process.env["BUILD_REPOSITORY_PROVIDER"] = "TfsGit";
+process.env["BUILD_REPOSITORY_NAME"] = "MyFirstProject";
+process.env["SYSTEM_TEAMFOUNDATIONCOLLECTIONURI"] = "https://abc.visualstudio.com/";
+process.env["SYSTEM_TEAMPROJECT"] = "MyFirstProject";
+process.env["BUILD_SOURCEVERISONAUTHOR"] = "author";
+process.env["RELEASE_RELEASEURI"] = "vstfs:///ReleaseManagement/Release/1";
+process.env["AGENT_NAME"] = "author";
+
+// provide answers for task mock
+let a: ma.TaskLibAnswers = {
+ "which": {
+ "msdeploy": "msdeploy"
+ },
+ "stats": {
+ "webAppPkg.zip": {
+ "isFile": true
+ }
+ },
+ "osType": {
+ "osType": "Windows"
+ },
+ "checkPath": {
+ "webAppPkg.zip": true,
+ "webAppPkg": true,
+ "msdeploy": true
+ },
+ "exec": {
+ "msdeploy -verb:getParameters -source:package=\'webAppPkg.zip\'": {
+ "code": 0,
+ "stdout": "Executed Successfully"
+ },
+ "msdeploy -verb:sync -source:package=\'webAppPkg.zip\' -dest:auto,ComputerName=\'https://mytestappKuduUrl/msdeploy.axd?site=mytestapp\',UserName=\'$mytestapp\',Password=\'mytestappPwd\',AuthType=\'Basic\' -setParam:name=\'IIS Web Application Name\',value=\'mytestapp/virtualApp\' -skip:Directory=App_Data additionalArguments -userAgent:TFS_useragent": {
+ "code": 0,
+ "stdout": "Executed Successfully"
+ }
+ },
+ "exist": {
+ "webAppPkg.zip": true,
+ "webAppPkg": true
+ },
+ "glob": {
+ "webAppPkgPattern" : ["webAppPkg1", "webAppPkg2"],
+ "Invalid_webAppPkg" : [],
+ "webAppPkg.zip": ["webAppPkg.zip"],
+ "webAppPkg": ["webAppPkg"]
+ },
+ "getVariable": {
+ "ENDPOINT_AUTH_AzureRMSpn": "{\"parameters\":{\"serviceprincipalid\":\"spId\",\"serviceprincipalkey\":\"spKey\",\"tenantid\":\"tenant\"},\"scheme\":\"ServicePrincipal\"}",
+ "ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONNAME": "sName",
+ "ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONID": "sId",
+ "AZURE_HTTP_USER_AGENT": "TFS_useragent",
+ "System.DefaultWorkingDirectory": "DefaultWorkingDirectory",
+ "build.sourceVersion": "46da24f35850f455185b9188b4742359b537076f",
+ "build.buildId": '1',
+ "release.releaseId": '1',
+ "build.buildNumber": '1',
+ "release.releaseName": "Release-1",
+ "build.repository.provider": "TfsGit",
+ "build.repository.name": "MyFirstProject",
+ "system.TeamFoundationCollectionUri": "https://abc.visualstudio.com/",
+ "system.teamProject": "MyFirstProject",
+ "build.sourceVersionAuthor": "author",
+ "release.releaseUri": "vstfs:///ReleaseManagement/Release/1",
+ "agent.name": "agent"
+ }
+}
+
+
+tr.registerMock('azure-pipelines-tasks-webdeployment-common/ziputility.js', {
+ getArchivedEntries: function(webDeployPkg) {
+ return {
+ "entries":[
+ "systemInfo.xml",
+ "parameters.xml"
+ ]
+ };
+ }
+});
+var kuduDeploymentLog = require('azurerest-common/kududeploymentstatusutility.js');
+var msDeployUtility = require('azure-pipelines-tasks-webdeployment-common/msdeployutility.js');
+tr.registerMock('./msdeployutility.js', {
+ getMSDeployCmdArgs : msDeployUtility.getMSDeployCmdArgs,
+ getMSDeployFullPath : function() {
+ var msDeployFullPath = "msdeploypath\\msdeploy.exe";
+ return msDeployFullPath;
+ }
+});
+
+tr.registerMock('./kuduutility.js', {
+ getVirtualAndPhysicalPaths : function() {
+ return ["/virtualApp", "/test/path"]
+ },
+ ensurePhysicalPathExists: function() {
+ return true;
+ }
+});
+
+tr.registerMock('azurerest-common/azurerestutility.js', {
+ appInsightsInstrumentationKeyAppSetting: "APPINSIGHTS_INSTRUMENTATIONKEY",
+ getAzureRMWebAppPublishProfile: function(SPN, webAppName, resourceGroupName, deployToSlotFlag, slotName) {
+ var mockPublishProfile = {
+ profileName: 'mytestapp - Web Deploy',
+ publishMethod: 'MSDeploy',
+ publishUrl: 'mytestappKuduUrl',
+ msdeploySite: 'mytestapp',
+ userName: '$mytestapp',
+ userPWD: 'mytestappPwd',
+ destinationAppUrl: 'mytestappUrl',
+ SQLServerDBConnectionString: '',
+ mySQLDBConnectionString: '',
+ hostingProviderForumLink: '',
+ controlPanelLink: '',
+ webSystem: 'WebSites'
+ };
+ if(deployToSlotFlag) {
+ mockPublishProfile.profileName = 'mytestapp-' + slotName + ' - Web Deploy';
+ mockPublishProfile.publishUrl = 'mytestappKuduUrl-' + slotName;
+ mockPublishProfile.msdeploySite = 'mytestapp__' + slotName;
+ mockPublishProfile.userName = '$mytestapp__' + slotName;
+ mockPublishProfile.userPWD = 'mytestappPwd';
+ mockPublishProfile.destinationAppUrl = 'mytestappUrl-' + slotName;
+ }
+ return mockPublishProfile;
+ },
+ getAzureRMWebAppConfigDetails: function(SPN, webAppName, resourceGroupName, deployToSlotFlag, slotName) {
+ var config = {
+ id: 'appid',
+ properties: {
+ virtualApplications: [ ['Object'], ['Object'], ['Object'] ],
+ scmType: "None"
+ }
+ }
+
+ return config;
+ },
+ updateDeploymentStatus: function(publishingProfile, isDeploymentSuccess ) {
+ if(isDeploymentSuccess) {
+ console.log('Updated history to kudu');
+ }
+ else {
+ console.log('Failed to update history to kudu');
+ }
+ var webAppPublishKuduUrl = publishingProfile.publishUrl;
+ var requestDetails = kuduDeploymentLog.getUpdateHistoryRequest(webAppPublishKuduUrl, isDeploymentSuccess);
+ requestDetails["requestBody"].author = 'author';
+ console.log("kudu log requestBody is:" + JSON.stringify(requestDetails["requestBody"]));
+ },
+ getResourceGroupName: function (SPN, webAppName) {
+ return "foobar";
+ },
+ getWebAppAppSettings : function (SPN, webAppName: string, resourceGroupName: string, deployToSlotFlag: boolean, slotName: string){
+ var appSettings = {
+ properties : {
+ MSDEPLOY_RENAME_LOCKED_FILES : '1'
+ }
+ };
+ return appSettings;
+ },
+ updateWebAppAppSettings : function (){
+ return true;
+ },
+ updateAzureRMWebAppConfigDetails: function() {
+ console.log("Successfully updated scmType to VSTSRM");
+ },
+ getAzureRMWebAppMetadata: function() {
+ return {
+ properties: {}
+ }
+ },
+ updateAzureRMWebAppMetadata: function() {
+ console.log("Successfully updated Web App metadata");
+ }
+});
+
+var fs = require('fs');
+tr.registerMock('fs', {
+ createWriteStream: function (filePath, options) {
+ return {
+ "isWriteStreamObj": true,
+ "on": (event) => {
+ console.log("event: " + event + " has occurred");
+ },
+ "end" : () => { return true }
+ };
+ },
+ ReadStream: fs.ReadStream,
+ WriteStream: fs.WriteStream,
+ openSync: function (fd, options) {
+ return true;
+ },
+ closeSync: function (fd) {
+ return true;
+ },
+ fsyncSync: function(fd) {
+ return true;
+ }
+});
+
+tr.setAnswers(a);
+tr.run();
\ No newline at end of file
diff --git a/_generated/AzureRmWebAppDeploymentV4/Tests/L0WindowsDefault.ts b/_generated/AzureRmWebAppDeploymentV4/Tests/L0WindowsDefault.ts
new file mode 100644
index 000000000000..47fc64f9c0dc
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/Tests/L0WindowsDefault.ts
@@ -0,0 +1,228 @@
+import ma = require('azure-pipelines-task-lib/mock-answer');
+import tmrm = require('azure-pipelines-task-lib/mock-run');
+import path = require('path');
+
+let taskPath = path.join(__dirname, '..', 'azurermwebappdeployment.js');
+let tr: tmrm.TaskMockRunner = new tmrm.TaskMockRunner(taskPath);
+tr.setInput('ConnectedServiceName', 'AzureRMSpn');
+tr.setInput('WebAppName', 'mytestapp');
+tr.setInput('Package', 'webAppPkg.zip');
+tr.setInput('UseWebDeploy', 'true');
+
+process.env['TASK_TEST_TRACE'] = "1";
+process.env["ENDPOINT_AUTH_AzureRMSpn"] = "{\"parameters\":{\"serviceprincipalid\":\"spId\",\"serviceprincipalkey\":\"spKey\",\"tenantid\":\"tenant\"},\"scheme\":\"ServicePrincipal\"}";
+process.env["ENDPOINT_AUTH_PARAMETER_AzureRMSpn_SERVICEPRINCIPALID"] = "spId";
+process.env["ENDPOINT_AUTH_PARAMETER_AzureRMSpn_SERVICEPRINCIPALKEY"] = "spKey";
+process.env["ENDPOINT_AUTH_PARAMETER_AzureRMSpn_TENANTID"] = "tenant";
+process.env["ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONNAME"] = "sName";
+process.env["ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONID"] = "sId";
+process.env["AZURE_HTTP_USER_AGENT"] = "TFS_useragent";
+process.env["SYSTEM_DEFAULTWORKINGDIRECTORY"] = "DefaultWorkingDirectory";
+process.env["BUILD_SOURCEVERSION"] = "46da24f35850f455185b9188b4742359b537076f";
+process.env["BUILD_BUILDID"] = "1",
+process.env["RELEASE_RELEASEID"] = "1";
+process.env["BUILD_BUILDNUMBER"] = "1";
+process.env["RELEASE_RELEASENAME"] = "Release-1";
+process.env["BUILD_REPOSITORY_PROVIDER"] = "TfsGit";
+process.env["BUILD_REPOSITORY_NAME"] = "MyFirstProject";
+process.env["SYSTEM_TEAMFOUNDATIONCOLLECTIONURI"] = "https://abc.visualstudio.com/";
+process.env["SYSTEM_TEAMPROJECT"] = "MyFirstProject";
+process.env["SYSTEM_TEAMPROJECTID"] = "1";
+process.env["BUILD_SOURCEVERISONAUTHOR"] = "author";
+process.env["RELEASE_RELEASEURI"] = "vstfs:///ReleaseManagement/Release/1";
+process.env["AGENT_NAME"] = "author";
+
+// provide answers for task mock
+let a: ma.TaskLibAnswers = {
+ "which": {
+ "msdeploy": "msdeploy"
+ },
+ "stats": {
+ "webAppPkg.zip": {
+ "isFile": true
+ }
+ },
+ "osType": {
+ "osType": "Windows"
+ },
+ "checkPath": {
+ "webAppPkg.zip": true,
+ "webAppPkg": true,
+ "msdeploy": true
+ },
+ "exec": {
+ "msdeploy -verb:sync -source:package='webAppPkg.zip' -dest:auto,ComputerName='https://mytestappKuduUrl/msdeploy.axd?site=mytestapp',UserName='$mytestapp',Password='mytestappPwd',AuthType='Basic' -setParam:name='IIS Web Application Name',value='mytestapp' -enableRule:DoNotDeleteRule -userAgent:TFS_useragent": {
+ "code": 0,
+ "stdout": "Executed Successfully"
+ },
+ "msdeploy -verb:getParameters -source:package=\'webAppPkg.zip\'": {
+ "code": 0,
+ "stdout": "Executed Successfully"
+ }
+ },
+ "exist": {
+ "webAppPkg.zip": true,
+ "webAppPkg": true
+ },
+ "glob": {
+ "webAppPkgPattern" : ["webAppPkg1", "webAppPkg2"],
+ "Invalid_webAppPkg" : [],
+ "webAppPkg.zip": ["webAppPkg.zip"],
+ "webAppPkg": ["webAppPkg"]
+ },
+ "getVariable": {
+ "ENDPOINT_AUTH_AzureRMSpn": "{\"parameters\":{\"serviceprincipalid\":\"spId\",\"serviceprincipalkey\":\"spKey\",\"tenantid\":\"tenant\"},\"scheme\":\"ServicePrincipal\"}",
+ "ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONNAME": "sName",
+ "ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONID": "sId",
+ "AZURE_HTTP_USER_AGENT": "TFS_useragent",
+ "System.DefaultWorkingDirectory": "DefaultWorkingDirectory",
+ "build.sourceVersion": "46da24f35850f455185b9188b4742359b537076f",
+ "build.buildId": 1,
+ "release.releaseId": 1,
+ "build.buildNumber": 1,
+ "release.releaseName": "Release-1",
+ "build.repository.provider": "TfsGit",
+ "build.repository.name": "MyFirstProject",
+ "system.TeamFoundationCollectionUri": "https://abc.visualstudio.com/",
+ "system.teamProject": "MyFirstProject",
+ "build.sourceVersionAuthor": "author",
+ "release.releaseUri": "vstfs:///ReleaseManagement/Release/1",
+ "agent.name": "agent"
+ }
+}
+
+tr.registerMock('azure-pipelines-tasks-webdeployment-common/ziputility.js', {
+ getArchivedEntries: function(webDeployPkg) {
+ return {
+ "entries":[
+ "systemInfo.xml",
+ "parameters.xml"
+ ]
+ };
+ }
+});
+var kuduDeploymentLog = require('azurerest-common/kududeploymentstatusutility.js');
+var msDeployUtility = require('azure-pipelines-tasks-webdeployment-common/msdeployutility.js');
+
+tr.registerMock('./msdeployutility.js', {
+ getMSDeployCmdArgs : msDeployUtility.getMSDeployCmdArgs,
+ getMSDeployFullPath : function() {
+ var msDeployFullPath = "msdeploypath\\msdeploy.exe";
+ return msDeployFullPath;
+ }
+});
+
+tr.registerMock('azurerest-common/azurerestutility.js', {
+ appInsightsInstrumentationKeyAppSetting: "APPINSIGHTS_INSTRUMENTATIONKEY",
+ getAzureRMWebAppPublishProfile: function(SPN, webAppName, resourceGroupName, deployToSlotFlag, slotName) {
+ var mockPublishProfile = {
+ profileName: 'mytestapp - Web Deploy',
+ publishMethod: 'MSDeploy',
+ publishUrl: 'mytestappKuduUrl',
+ msdeploySite: 'mytestapp',
+ userName: '$mytestapp',
+ userPWD: 'mytestappPwd',
+ destinationAppUrl: 'mytestappUrl',
+ SQLServerDBConnectionString: '',
+ mySQLDBConnectionString: '',
+ hostingProviderForumLink: '',
+ controlPanelLink: '',
+ webSystem: 'WebSites'
+ };
+ if(deployToSlotFlag) {
+ mockPublishProfile.profileName = 'mytestapp-' + slotName + ' - Web Deploy';
+ mockPublishProfile.publishUrl = 'mytestappKuduUrl-' + slotName;
+ mockPublishProfile.msdeploySite = 'mytestapp__' + slotName;
+ mockPublishProfile.userName = '$mytestapp__' + slotName;
+ mockPublishProfile.userPWD = 'mytestappPwd';
+ mockPublishProfile.destinationAppUrl = 'mytestappUrl-' + slotName;
+ }
+ return mockPublishProfile;
+ },
+ getAzureRMWebAppConfigDetails: function(SPN, webAppName, resourceGroupName, deployToSlotFlag, slotName) {
+ var config = {
+ id: 'appid',
+ properties: {
+ virtualApplications: [ ['Object'], ['Object'], ['Object'] ],
+ scmType: "None"
+ }
+ }
+
+ return config;
+ },
+ updateDeploymentStatus: function(publishingProfile, isDeploymentSuccess, customMessage) {
+ if(isDeploymentSuccess) {
+ console.log('Updated history to kudu');
+ }
+ else {
+ console.log('Failed to update history to kudu');
+ }
+ var webAppPublishKuduUrl = publishingProfile.publishUrl;
+ var requestDetails = kuduDeploymentLog.getUpdateHistoryRequest(webAppPublishKuduUrl, isDeploymentSuccess, customMessage);
+ requestDetails["requestBody"].author = 'author';
+ console.log("kudu log requestBody is:" + JSON.stringify(requestDetails["requestBody"]));
+ },
+ getResourceGroupName: function (SPN, webAppName) {
+ return "foobar";
+ },
+ getWebAppAppSettings : function (SPN, webAppName: string, resourceGroupName: string, deployToSlotFlag: boolean, slotName: string){
+ var appSettings = {
+ properties : {
+ MSDEPLOY_RENAME_LOCKED_FILES: '1',
+ APPINSIGHTS_INSTRUMENTATIONKEY: "00000000-0000-0000-0000-000000000000"
+ }
+ };
+ return appSettings;
+ },
+ updateWebAppAppSettings : function (){
+ return true;
+ },
+ updateAzureRMWebAppConfigDetails: function() {
+ console.log("Successfully updated scmType to VSTSRM");
+ },
+ getAzureRMWebAppMetadata: function() {
+ return {
+ properties: {}
+ }
+ },
+ updateAzureRMWebAppMetadata: function() {
+ console.log("Successfully updated Web App metadata");
+ },
+ getApplicationInsightsResources: () => {
+ return [{
+ name: "ApplicationInsights",
+ id: "ApplicationInsightsResourceId",
+ InstrumentationKey: "00000000-0000-0000-0000-000000000000"
+ }];
+ },
+ addReleaseAnnotation: () => {
+ return { };
+ }
+});
+
+var fs = require('fs');
+tr.registerMock('fs', {
+ createWriteStream: function (filePath, options) {
+ return {
+ "isWriteStreamObj": true,
+ "on": (event) => {
+ console.log("event: " + event + " has occurred");
+ },
+ "end" : () => { return true }
+ };
+ },
+ ReadStream: fs.ReadStream,
+ WriteStream: fs.WriteStream,
+ openSync: function (fd, options) {
+ return true;
+ },
+ closeSync: function (fd) {
+ return true;
+ },
+ fsyncSync: function(fd) {
+ return true;
+ }
+});
+
+tr.setAnswers(a);
+tr.run();
\ No newline at end of file
diff --git a/_generated/AzureRmWebAppDeploymentV4/Tests/L0WindowsDefaultReleaseAnnotationFail.ts b/_generated/AzureRmWebAppDeploymentV4/Tests/L0WindowsDefaultReleaseAnnotationFail.ts
new file mode 100644
index 000000000000..cfb4c7d8bb2e
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/Tests/L0WindowsDefaultReleaseAnnotationFail.ts
@@ -0,0 +1,228 @@
+import ma = require('azure-pipelines-task-lib/mock-answer');
+import tmrm = require('azure-pipelines-task-lib/mock-run');
+import path = require('path');
+
+let taskPath = path.join(__dirname, '..', 'azurermwebappdeployment.js');
+let tr: tmrm.TaskMockRunner = new tmrm.TaskMockRunner(taskPath);
+tr.setInput('ConnectedServiceName', 'AzureRMSpn');
+tr.setInput('WebAppName', 'mytestapp');
+tr.setInput('Package', 'webAppPkg.zip');
+tr.setInput('UseWebDeploy', 'true');
+
+process.env['TASK_TEST_TRACE'] = "1";
+process.env["ENDPOINT_AUTH_AzureRMSpn"] = "{\"parameters\":{\"serviceprincipalid\":\"spId\",\"serviceprincipalkey\":\"spKey\",\"tenantid\":\"tenant\"},\"scheme\":\"ServicePrincipal\"}";
+process.env["ENDPOINT_AUTH_PARAMETER_AzureRMSpn_SERVICEPRINCIPALID"] = "spId";
+process.env["ENDPOINT_AUTH_PARAMETER_AzureRMSpn_SERVICEPRINCIPALKEY"] = "spKey";
+process.env["ENDPOINT_AUTH_PARAMETER_AzureRMSpn_TENANTID"] = "tenant";
+process.env["ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONNAME"] = "sName";
+process.env["ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONID"] = "sId";
+process.env["AZURE_HTTP_USER_AGENT"] = "TFS_useragent";
+process.env["SYSTEM_DEFAULTWORKINGDIRECTORY"] = "DefaultWorkingDirectory";
+process.env["BUILD_SOURCEVERSION"] = "46da24f35850f455185b9188b4742359b537076f";
+process.env["BUILD_BUILDID"] = "1",
+process.env["RELEASE_RELEASEID"] = "1";
+process.env["BUILD_BUILDNUMBER"] = "1";
+process.env["RELEASE_RELEASENAME"] = "Release-1";
+process.env["BUILD_REPOSITORY_PROVIDER"] = "TfsGit";
+process.env["BUILD_REPOSITORY_NAME"] = "MyFirstProject";
+process.env["SYSTEM_TEAMFOUNDATIONCOLLECTIONURI"] = "https://abc.visualstudio.com/";
+process.env["SYSTEM_TEAMPROJECT"] = "MyFirstProject";
+process.env["SYSTEM_TEAMPROJECTID"] = "1";
+process.env["BUILD_SOURCEVERISONAUTHOR"] = "author";
+process.env["RELEASE_RELEASEURI"] = "vstfs:///ReleaseManagement/Release/1";
+process.env["AGENT_NAME"] = "author";
+
+// provide answers for task mock
+let a: ma.TaskLibAnswers = {
+ "which": {
+ "msdeploy": "msdeploy"
+ },
+ "stats": {
+ "webAppPkg.zip": {
+ "isFile": true
+ }
+ },
+ "osType": {
+ "osType": "Windows"
+ },
+ "checkPath": {
+ "webAppPkg.zip": true,
+ "webAppPkg": true,
+ "msdeploy": true
+ },
+ "exec": {
+ "msdeploy -verb:sync -source:package='webAppPkg.zip' -dest:auto,ComputerName='https://mytestappKuduUrl/msdeploy.axd?site=mytestapp',UserName='$mytestapp',Password='mytestappPwd',AuthType='Basic' -setParam:name='IIS Web Application Name',value='mytestapp' -enableRule:DoNotDeleteRule -userAgent:TFS_useragent": {
+ "code": 0,
+ "stdout": "Executed Successfully"
+ },
+ "msdeploy -verb:getParameters -source:package=\'webAppPkg.zip\'": {
+ "code": 0,
+ "stdout": "Executed Successfully"
+ }
+ },
+ "exist": {
+ "webAppPkg.zip": true,
+ "webAppPkg": true
+ },
+ "glob": {
+ "webAppPkgPattern": ["webAppPkg1", "webAppPkg2"],
+ "Invalid_webAppPkg": [],
+ "webAppPkg.zip": ["webAppPkg.zip"],
+ "webAppPkg": ["webAppPkg"]
+ },
+ "getVariable": {
+ "ENDPOINT_AUTH_AzureRMSpn": "{\"parameters\":{\"serviceprincipalid\":\"spId\",\"serviceprincipalkey\":\"spKey\",\"tenantid\":\"tenant\"},\"scheme\":\"ServicePrincipal\"}",
+ "ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONNAME": "sName",
+ "ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONID": "sId",
+ "AZURE_HTTP_USER_AGENT": "TFS_useragent",
+ "System.DefaultWorkingDirectory": "DefaultWorkingDirectory",
+ "build.sourceVersion": "46da24f35850f455185b9188b4742359b537076f",
+ "build.buildId": 1,
+ "release.releaseId": 1,
+ "build.buildNumber": 1,
+ "release.releaseName": "Release-1",
+ "build.repository.provider": "TfsGit",
+ "build.repository.name": "MyFirstProject",
+ "system.TeamFoundationCollectionUri": "https://abc.visualstudio.com/",
+ "system.teamProject": "MyFirstProject",
+ "build.sourceVersionAuthor": "author",
+ "release.releaseUri": "vstfs:///ReleaseManagement/Release/1",
+ "agent.name": "agent"
+ }
+}
+
+tr.registerMock('azure-pipelines-tasks-webdeployment-common/ziputility.js', {
+ getArchivedEntries: function (webDeployPkg) {
+ return {
+ "entries": [
+ "systemInfo.xml",
+ "parameters.xml"
+ ]
+ };
+ }
+});
+var kuduDeploymentLog = require('azurerest-common/kududeploymentstatusutility.js');
+var msDeployUtility = require('azure-pipelines-tasks-webdeployment-common/msdeployutility.js');
+
+tr.registerMock('./msdeployutility.js', {
+ getMSDeployCmdArgs: msDeployUtility.getMSDeployCmdArgs,
+ getMSDeployFullPath: function () {
+ var msDeployFullPath = "msdeploypath\\msdeploy.exe";
+ return msDeployFullPath;
+ }
+});
+
+tr.registerMock('azurerest-common/azurerestutility.js', {
+ appInsightsInstrumentationKeyAppSetting: "APPINSIGHTS_INSTRUMENTATIONKEY",
+ getAzureRMWebAppPublishProfile: function (SPN, webAppName, resourceGroupName, deployToSlotFlag, slotName) {
+ var mockPublishProfile = {
+ profileName: 'mytestapp - Web Deploy',
+ publishMethod: 'MSDeploy',
+ publishUrl: 'mytestappKuduUrl',
+ msdeploySite: 'mytestapp',
+ userName: '$mytestapp',
+ userPWD: 'mytestappPwd',
+ destinationAppUrl: 'mytestappUrl',
+ SQLServerDBConnectionString: '',
+ mySQLDBConnectionString: '',
+ hostingProviderForumLink: '',
+ controlPanelLink: '',
+ webSystem: 'WebSites'
+ };
+ if (deployToSlotFlag) {
+ mockPublishProfile.profileName = 'mytestapp-' + slotName + ' - Web Deploy';
+ mockPublishProfile.publishUrl = 'mytestappKuduUrl-' + slotName;
+ mockPublishProfile.msdeploySite = 'mytestapp__' + slotName;
+ mockPublishProfile.userName = '$mytestapp__' + slotName;
+ mockPublishProfile.userPWD = 'mytestappPwd';
+ mockPublishProfile.destinationAppUrl = 'mytestappUrl-' + slotName;
+ }
+ return mockPublishProfile;
+ },
+ getAzureRMWebAppConfigDetails: function (SPN, webAppName, resourceGroupName, deployToSlotFlag, slotName) {
+ var config = {
+ id: 'appid',
+ properties: {
+ virtualApplications: [['Object'], ['Object'], ['Object']],
+ scmType: "None"
+ }
+ }
+
+ return config;
+ },
+ updateDeploymentStatus: function (publishingProfile, isDeploymentSuccess, customMessage) {
+ if (isDeploymentSuccess) {
+ console.log('Updated history to kudu');
+ }
+ else {
+ console.log('Failed to update history to kudu');
+ }
+ var webAppPublishKuduUrl = publishingProfile.publishUrl;
+ var requestDetails = kuduDeploymentLog.getUpdateHistoryRequest(webAppPublishKuduUrl, isDeploymentSuccess, customMessage);
+ requestDetails["requestBody"].author = 'author';
+ console.log("kudu log requestBody is:" + JSON.stringify(requestDetails["requestBody"]));
+ },
+ getResourceGroupName: function (SPN, webAppName) {
+ return "foobar";
+ },
+ getWebAppAppSettings: function (SPN, webAppName: string, resourceGroupName: string, deployToSlotFlag: boolean, slotName: string) {
+ var appSettings = {
+ properties: {
+ MSDEPLOY_RENAME_LOCKED_FILES: '1',
+ APPINSIGHTS_INSTRUMENTATIONKEY: "00000000-0000-0000-0000-000000000000"
+ }
+ };
+ return appSettings;
+ },
+ updateWebAppAppSettings: function () {
+ return true;
+ },
+ updateAzureRMWebAppConfigDetails: function () {
+ console.log("Successfully updated scmType to VSTSRM");
+ },
+ getAzureRMWebAppMetadata: function () {
+ return {
+ properties: {}
+ }
+ },
+ updateAzureRMWebAppMetadata: function () {
+ console.log("Successfully updated Web App metadata");
+ },
+ getApplicationInsightsResources: () => {
+ return [{
+ name: "ApplicationInsights",
+ id: "ApplicationInsightsResourceId",
+ InstrumentationKey: "00000000-0000-0000-0000-000000000000"
+ }];
+ },
+ addReleaseAnnotation: () => {
+ throw "Random error";
+ }
+});
+
+var fs = require('fs');
+tr.registerMock('fs', {
+ createWriteStream: function (filePath, options) {
+ return {
+ "isWriteStreamObj": true,
+ "on": (event) => {
+ console.log("event: " + event + " has occurred");
+ },
+ "end": () => { return true }
+ };
+ },
+ ReadStream: fs.ReadStream,
+ WriteStream: fs.WriteStream,
+ openSync: function (fd, options) {
+ return true;
+ },
+ closeSync: function (fd) {
+ return true;
+ },
+ fsyncSync: function (fd) {
+ return true;
+ }
+});
+
+tr.setAnswers(a);
+tr.run();
\ No newline at end of file
diff --git a/_generated/AzureRmWebAppDeploymentV4/Tests/L0WindowsFailDefault.ts b/_generated/AzureRmWebAppDeploymentV4/Tests/L0WindowsFailDefault.ts
new file mode 100644
index 000000000000..ad27403c48d7
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/Tests/L0WindowsFailDefault.ts
@@ -0,0 +1,210 @@
+import ma = require('azure-pipelines-task-lib/mock-answer');
+import tmrm = require('azure-pipelines-task-lib/mock-run');
+import path = require('path');
+
+let taskPath = path.join(__dirname, '..', 'azurermwebappdeployment.js');
+let tr: tmrm.TaskMockRunner = new tmrm.TaskMockRunner(taskPath);
+
+tr.setInput('ConnectedServiceName', 'AzureRMSpn');
+tr.setInput('WebAppName', 'mytestapp');
+tr.setInput('Package', 'webAppPkg.zip');
+tr.setInput('UseWebDeploy', 'true');
+
+process.env['TASK_TEST_TRACE'] = "1";
+process.env["ENDPOINT_AUTH_AzureRMSpn"] = "{\"parameters\":{\"serviceprincipalid\":\"spId\",\"serviceprincipalkey\":\"spKey\",\"tenantid\":\"tenant\"},\"scheme\":\"ServicePrincipal\"}";
+process.env["ENDPOINT_AUTH_PARAMETER_AzureRMSpn_SERVICEPRINCIPALID"] = "spId";
+process.env["ENDPOINT_AUTH_PARAMETER_AzureRMSpn_SERVICEPRINCIPALKEY"] = "spKey";
+process.env["ENDPOINT_AUTH_PARAMETER_AzureRMSpn_TENANTID"] = "tenant";
+process.env["ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONNAME"] = "sName";
+process.env["ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONID"] = "sId";
+process.env["AZURE_HTTP_USER_AGENT"] = "TFS_useragent";
+process.env["SYSTEM_DEFAULTWORKINGDIRECTORY"] = "DefaultWorkingDirectory";
+process.env["BUILD_SOURCEVERSION"] = "46da24f35850f455185b9188b4742359b537076f";
+process.env["BUILD_BUILDID"] = '1',
+process.env["RELEASE_RELEASEID"] = '1';
+process.env["BUILD_BUILDNUMBER"] = '1';
+process.env["RELEASE_RELEASENAME"] = "Release-1";
+process.env["BUILD_REPOSITORY_PROVIDER"] = "TfsGit";
+process.env["BUILD_REPOSITORY_NAME"] = "MyFirstProject";
+process.env["SYSTEM_TEAMFOUNDATIONCOLLECTIONURI"] = "https://abc.visualstudio.com/";
+process.env["SYSTEM_TEAMPROJECT"] = "MyFirstProject";
+process.env["SYSTEM_TEAMPROJECTID"] = "1";
+process.env["BUILD_SOURCEVERISONAUTHOR"] = "author";
+process.env["RELEASE_RELEASEURI"] = "vstfs:///ReleaseManagement/Release/1";
+process.env["AGENT_NAME"] = "author";
+
+// provide answers for task mock
+let a: any = {
+ "which": {
+ "msdeploy": "msdeploy"
+ },
+ "stats": {
+ "webAppPkg.zip": {
+ "isFile": true
+ }
+ },
+ "osType": {
+ "osType": "Windows"
+ },
+ "checkPath": {
+ "webAppPkg.zip": true,
+ "webAppPkg": true,
+ "msdeploy": true
+ },
+ "exec": {
+ "msdeploy -verb:getParameters -source:package=\'webAppPkg.zip\'": {
+ "code": 0,
+ "stdout": "Executed Successfully"
+ },
+ "msdeploy -verb:sync -source:package=\'webAppPkg.zip\' -dest:auto,ComputerName=\'https://mytestappKuduUrl/msdeploy.axd?site=mytestapp\',UserName=\'$mytestapp\',Password=\'mytestappPwd\',AuthType=\'Basic\' -setParam:name=\'IIS Web Application Name\',value=\'mytestapp\' -enableRule:DoNotDeleteRule -userAgent:TFS_useragent": {
+ "code": 1,
+ "stdout": "Failed to Deploy WebSite"
+ }
+ },
+ "exist": {
+ "webAppPkg.zip": true,
+ "DefaultWorkingDirectory\\error.txt": true
+ },
+ "getVariable": {
+ "ENDPOINT_AUTH_AzureRMSpn": "{\"parameters\":{\"serviceprincipalid\":\"spId\",\"serviceprincipalkey\":\"spKey\",\"tenantid\":\"tenant\"},\"scheme\":\"ServicePrincipal\"}",
+ "ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONNAME": "sName",
+ "ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONID": "sId",
+ "SYSTEM_DEFAULTWORKINGDIRECTORY" : "defaultWorkingDirectory",
+ "AZURE_HTTP_USER_AGENT" : "TFS_useragent",
+ "System.DefaultWorkingDirectory" : "DefaultWorkingDirectory",
+ "release.releaseId": '1',
+ "release.releaseName": "Release-1",
+ "system.TeamFoundationCollectionUri": "https://abc.visualstudio.com/",
+ "system.teamProject": "MyFirstProject",
+ "release.releaseUri": "vstfs:///ReleaseManagement/Release/1",
+ "agent.name": "agent"
+ },
+ "rmRF": {
+ "DefaultWorkingDirectory\\error.txt": true
+ }
+};
+
+tr.registerMock('azure-pipelines-tasks-webdeployment-common/ziputility.js', {
+ getArchivedEntries: function(webDeployPkg) {
+ return {
+ "entries":[
+ "systemInfo.xml",
+ "parameters.xml"
+ ]
+ };
+ }
+});
+var kuduDeploymentLog = require('azurerest-common/kududeploymentstatusutility.js');
+var msDeployUtility = require('azure-pipelines-tasks-webdeployment-common/msdeployutility.js');
+tr.registerMock('./msdeployutility.js', {
+ shouldRetryMSDeploy: msDeployUtility.shouldRetryMSDeploy,
+ redirectMSDeployErrorToConsole : msDeployUtility.redirectMSDeployErrorToConsole,
+ getMSDeployCmdArgs : msDeployUtility.getMSDeployCmdArgs,
+ getMSDeployFullPath : function() {
+ var msDeployFullPath = "msdeploypath\\msdeploy.exe";
+ return msDeployFullPath;
+ }
+});
+
+tr.registerMock('azurerest-common/azurerestutility.js', {
+ getAzureRMWebAppPublishProfile: function(SPN, webAppName, resourceGroupName, deployToSlotFlag, slotName) {
+ var mockPublishProfile = {
+ profileName: 'mytestapp - Web Deploy',
+ publishMethod: 'MSDeploy',
+ publishUrl: 'mytestappKuduUrl',
+ msdeploySite: 'mytestapp',
+ userName: '$mytestapp',
+ userPWD: 'mytestappPwd',
+ destinationAppUrl: 'mytestappUrl',
+ SQLServerDBConnectionString: '',
+ mySQLDBConnectionString: '',
+ hostingProviderForumLink: '',
+ controlPanelLink: '',
+ webSystem: 'WebSites'
+ };
+ if(deployToSlotFlag) {
+ mockPublishProfile.profileName = 'mytestapp-' + slotName + ' - Web Deploy';
+ mockPublishProfile.publishUrl = 'mytestappKuduUrl-' + slotName;
+ mockPublishProfile.msdeploySite = 'mytestapp__' + slotName;
+ mockPublishProfile.userName = '$mytestapp__' + slotName;
+ mockPublishProfile.userPWD = 'mytestappPwd';
+ mockPublishProfile.destinationAppUrl = 'mytestappUrl-' + slotName;
+ }
+ return mockPublishProfile;
+ },
+ getAzureRMWebAppConfigDetails: function(SPN, webAppName, resourceGroupName, deployToSlotFlag, slotName) {
+ var config = {
+ id: 'appid',
+ properties: {
+ virtualApplications: [ ['Object'], ['Object'], ['Object'] ],
+ scmType: "None"
+ }
+ }
+
+ return config;
+ },
+ updateDeploymentStatus: function(publishingProfile, isDeploymentSuccess, customMessage ) {
+ if(isDeploymentSuccess) {
+ console.log('Updated history to kudu');
+ }
+ else {
+ console.log('Failed to update history to kudu');
+ }
+ var webAppPublishKuduUrl = publishingProfile.publishUrl;
+ var requestDetails = kuduDeploymentLog.getUpdateHistoryRequest(webAppPublishKuduUrl, isDeploymentSuccess, customMessage);
+ requestDetails["requestBody"].author = 'author';
+ console.log("kudu log requestBody is:" + JSON.stringify(requestDetails["requestBody"]));
+ },
+ getResourceGroupName: function (SPN, webAppName) {
+ return "foobar";
+ },
+ getWebAppAppSettings : function (SPN, webAppName: string, resourceGroupName: string, deployToSlotFlag: boolean, slotName: string){
+ var appSettings = {
+ properties : {
+ MSDEPLOY_RENAME_LOCKED_FILES : '1'
+ }
+ };
+ return appSettings;
+ },
+ updateWebAppAppSettings : function (){
+ return true;
+ },
+ updateAzureRMWebAppConfigDetails: function() {
+ console.log("Successfully updated scmType to VSTSRM");
+ }
+});
+
+var fs = require('fs');
+tr.registerMock('fs', {
+ createWriteStream: function (filePath, options) {
+ var retryFunction;
+ return {
+ "isWriteStreamObj": true,
+ "on": (name, functionOnFinish) => { retryFunction = functionOnFinish;},
+ "end" : () => {
+ if(retryFunction != null) {
+ retryFunction();
+ }
+ return true;
+ }
+ };
+ },
+ ReadStream: fs.ReadStream,
+ WriteStream: fs.WriteStream,
+ readFileSync: function(msDeployErrorFilePath) {
+ console.log("reading the error file");
+ return "ERROR DEPLOYING WEBSITE";
+ },
+ openSync: function (fd, options) {
+ return true;
+ },
+ closeSync: function (fd) {
+ return true;
+ },
+ fsyncSync: function(fd) {
+ return true;
+ }
+});
+
+tr.setAnswers(a);
+tr.run();
\ No newline at end of file
diff --git a/_generated/AzureRmWebAppDeploymentV4/Tests/L0WindowsFailSetParamFile.ts b/_generated/AzureRmWebAppDeploymentV4/Tests/L0WindowsFailSetParamFile.ts
new file mode 100644
index 000000000000..3dda39d63518
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/Tests/L0WindowsFailSetParamFile.ts
@@ -0,0 +1,167 @@
+import ma = require('azure-pipelines-task-lib/mock-answer');
+import tmrm = require('azure-pipelines-task-lib/mock-run');
+import path = require('path');
+
+let taskPath = path.join(__dirname, '..', 'azurermwebappdeployment.js');
+let tr: tmrm.TaskMockRunner = new tmrm.TaskMockRunner(taskPath);
+
+tr.setInput('ConnectedServiceName', 'AzureRMSpn');
+tr.setInput('WebAppName', 'mytestapp');
+tr.setInput('Package', 'webAppPkg.zip');
+tr.setInput('UseWebDeploy', 'true');
+tr.setInput('SetParametersFile', 'invalidparameterFile.xml');
+
+process.env['TASK_TEST_TRACE'] = "1";
+process.env["ENDPOINT_AUTH_AzureRMSpn"] = "{\"parameters\":{\"serviceprincipalid\":\"spId\",\"serviceprincipalkey\":\"spKey\",\"tenantid\":\"tenant\"},\"scheme\":\"ServicePrincipal\"}";
+process.env["ENDPOINT_AUTH_PARAMETER_AzureRMSpn_SERVICEPRINCIPALID"] = "spId";
+process.env["ENDPOINT_AUTH_PARAMETER_AzureRMSpn_SERVICEPRINCIPALKEY"] = "spKey";
+process.env["ENDPOINT_AUTH_PARAMETER_AzureRMSpn_TENANTID"] = "tenant";
+process.env["ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONNAME"] = "sName";
+process.env["ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONID"] = "sId";
+process.env["AZURE_HTTP_USER_AGENT"] = "TFS_useragent";
+process.env["SYSTEM_DEFAULTWORKINGDIRECTORY"] = "DefaultWorkingDirectory";
+process.env["BUILD_SOURCEVERSION"] = "46da24f35850f455185b9188b4742359b537076f";
+process.env["BUILD_BUILDID"] = '1',
+process.env["RELEASE_RELEASEID"] = '1';
+process.env["BUILD_BUILDNUMBER"] = '1';
+process.env["RELEASE_RELEASENAME"] = "Release-1";
+process.env["BUILD_REPOSITORY_PROVIDER"] = "TfsGit";
+process.env["BUILD_REPOSITORY_NAME"] = "MyFirstProject";
+process.env["SYSTEM_TEAMFOUNDATIONCOLLECTIONURI"] = "https://abc.visualstudio.com/";
+process.env["SYSTEM_TEAMPROJECT"] = "MyFirstProject";
+process.env["BUILD_SOURCEVERISONAUTHOR"] = "author";
+process.env["RELEASE_RELEASEURI"] = "vstfs:///ReleaseManagement/Release/1";
+process.env["AGENT_NAME"] = "author";
+
+let a: ma.TaskLibAnswers = {
+ "which": {
+ "msdeploy": "msdeploy"
+ },
+ "stats": {
+ "webAppPkg.zip": {
+ "isFile": true
+ },
+ "invalidparameterFile.xml": {
+ "isFile" : false
+ },
+ "parameterFileUser.xml": {
+ "isFile" : true
+ }
+ },
+ "checkPath": {
+ "webAppPkg.zip": true,
+ "webAppPkg": true,
+ "msdeploy": true
+ },
+ "osType": {
+ "osType": "Windows"
+ },
+ "exec": {
+ "cmd /C DefaultWorkingDirectory\\msDeployCommand.bat": {
+ "code" : 0,
+ "stdout": "Executed Successfully"
+ },
+ "cmd /C DefaultWorkingDirectory\\msDeployParam.bat": {
+ "code" : 0,
+ "stdout": "Executed Successfully"
+ }
+ },
+ "exist": {
+ "webAppPkg.zip": true
+ },
+ "findMatch": {
+ "webAppPkg.zip": ["webAppPkg.zip"],
+ "webAppPkg": ["webAppPkg"]
+ },
+ "getVariable": {
+ "ENDPOINT_AUTH_AzureRMSpn": "{\"parameters\":{\"serviceprincipalid\":\"spId\",\"serviceprincipalkey\":\"spKey\",\"tenantid\":\"tenant\"},\"scheme\":\"ServicePrincipal\"}",
+ "ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONNAME": "sName",
+ "ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONID": "sId",
+ "SYSTEM_DEFAULTWORKINGDIRECTORY": "defaultWorkingDirectory",
+ "AZURE_HTTP_USER_AGENT": "TFS_useragent",
+ "System.DefaultWorkingDirectory" : "DefaultWorkingDirectory",
+ "build.sourcesDirectory": "DefaultWorkingDirectory"
+ }
+};
+
+
+var kuduDeploymentLog = require('azurerest-common/kududeploymentstatusutility.js');
+var msDeployUtility = require('azure-pipelines-tasks-webdeployment-common/msdeployutility.js');
+tr.registerMock('./msdeployutility.js', {
+ getMSDeployCmdArgs : msDeployUtility.getMSDeployCmdArgs,
+ getMSDeployFullPath : function() {
+ var msDeployFullPath = "msdeploypath\\msdeploy.exe";
+ return msDeployFullPath;
+ }
+});
+
+tr.registerMock('azurerest-common/azurerestutility.js', {
+ getAzureRMWebAppPublishProfile: function(SPN, webAppName, resourceGroupName, deployToSlotFlag, slotName) {
+ var mockPublishProfile = {
+ profileName: 'mytestapp - Web Deploy',
+ publishMethod: 'MSDeploy',
+ publishUrl: 'mytestappKuduUrl',
+ msdeploySite: 'mytestapp',
+ userName: '$mytestapp',
+ userPWD: 'mytestappPwd',
+ destinationAppUrl: 'mytestappUrl',
+ SQLServerDBConnectionString: '',
+ mySQLDBConnectionString: '',
+ hostingProviderForumLink: '',
+ controlPanelLink: '',
+ webSystem: 'WebSites'
+ };
+ if(deployToSlotFlag) {
+ mockPublishProfile.profileName = 'mytestapp-' + slotName + ' - Web Deploy';
+ mockPublishProfile.publishUrl = 'mytestappKuduUrl-' + slotName;
+ mockPublishProfile.msdeploySite = 'mytestapp__' + slotName;
+ mockPublishProfile.userName = '$mytestapp__' + slotName;
+ mockPublishProfile.userPWD = 'mytestappPwd';
+ mockPublishProfile.destinationAppUrl = 'mytestappUrl-' + slotName;
+ }
+ return mockPublishProfile;
+ },
+ getAzureRMWebAppConfigDetails: function(SPN, webAppName, resourceGroupName, deployToSlotFlag, slotName) {
+ var config = {
+ id: 'appid',
+ properties: {
+ virtualApplications: [ ['Object'], ['Object'], ['Object'] ],
+ scmType: "None"
+ }
+ }
+
+ return config;
+ },
+ updateDeploymentStatus: function(publishingProfile, isDeploymentSuccess ) {
+ if(isDeploymentSuccess) {
+ console.log('Updated history to kudu');
+ }
+ else {
+ console.log('Failed to update history to kudu');
+ }
+ var webAppPublishKuduUrl = publishingProfile.publishUrl;
+ var requestDetails = kuduDeploymentLog.getUpdateHistoryRequest(webAppPublishKuduUrl, isDeploymentSuccess);
+ requestDetails["requestBody"].author = 'author';
+ console.log("kudu log requestBody is:" + JSON.stringify(requestDetails["requestBody"]));
+ },
+ getResourceGroupName: function (SPN, webAppName) {
+ return "foobar";
+ },
+ getWebAppAppSettings : function (SPN, webAppName: string, resourceGroupName: string, deployToSlotFlag: boolean, slotName: string){
+ var appSettings = {
+ properties : {
+ MSDEPLOY_RENAME_LOCKED_FILES : '1'
+ }
+ };
+ return appSettings;
+ },
+ updateWebAppAppSettings : function (){
+ return true;
+ },
+ updateAzureRMWebAppConfigDetails: function() {
+ console.log("Successfully updated scmType to VSTSRM");
+ }
+});
+
+tr.setAnswers(a);
+tr.run();
\ No newline at end of file
diff --git a/_generated/AzureRmWebAppDeploymentV4/Tests/L0WindowsFolderPkg.ts b/_generated/AzureRmWebAppDeploymentV4/Tests/L0WindowsFolderPkg.ts
new file mode 100644
index 000000000000..0e16cec39849
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/Tests/L0WindowsFolderPkg.ts
@@ -0,0 +1,211 @@
+import ma = require('azure-pipelines-task-lib/mock-answer');
+import tmrm = require('azure-pipelines-task-lib/mock-run');
+import path = require('path');
+
+let taskPath = path.join(__dirname, '..', 'azurermwebappdeployment.js');
+let tr: tmrm.TaskMockRunner = new tmrm.TaskMockRunner(taskPath);
+
+tr.setInput('ConnectedServiceName', 'AzureRMSpn');
+tr.setInput('WebAppName', 'mytestapp');
+tr.setInput('Package', 'webAppPkg');
+tr.setInput('UseWebDeploy', 'true');
+
+process.env['TASK_TEST_TRACE'] = "1";
+process.env["ENDPOINT_AUTH_AzureRMSpn"] = "{\"parameters\":{\"serviceprincipalid\":\"spId\",\"serviceprincipalkey\":\"spKey\",\"tenantid\":\"tenant\"},\"scheme\":\"ServicePrincipal\"}";
+process.env["ENDPOINT_AUTH_PARAMETER_AzureRMSpn_SERVICEPRINCIPALID"] = "spId";
+process.env["ENDPOINT_AUTH_PARAMETER_AzureRMSpn_SERVICEPRINCIPALKEY"] = "spKey";
+process.env["ENDPOINT_AUTH_PARAMETER_AzureRMSpn_TENANTID"] = "tenant";
+process.env["ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONNAME"] = "sName";
+process.env["ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONID"] = "sId";
+process.env["AZURE_HTTP_USER_AGENT"] = "TFS_useragent";
+process.env["SYSTEM_DEFAULTWORKINGDIRECTORY"] = "DefaultWorkingDirectory";
+process.env["BUILD_SOURCEVERSION"] = "46da24f35850f455185b9188b4742359b537076f";
+process.env["BUILD_BUILDID"] = "1",
+process.env["RELEASE_RELEASEID"] = "1";
+process.env["BUILD_BUILDNUMBER"] = "1";
+process.env["RELEASE_RELEASENAME"] = "Release-1";
+process.env["BUILD_REPOSITORY_PROVIDER"] = "TfsGit";
+process.env["BUILD_REPOSITORY_NAME"] = "MyFirstProject";
+process.env["SYSTEM_TEAMFOUNDATIONCOLLECTIONURI"] = "https://abc.visualstudio.com/";
+process.env["SYSTEM_TEAMPROJECT"] = "MyFirstProject";
+process.env["BUILD_SOURCEVERISONAUTHOR"] = "author";
+process.env["RELEASE_RELEASEURI"] = "vstfs:///ReleaseManagement/Release/1";
+process.env["AGENT_NAME"] = "author";
+
+// provide answers for task mock
+let a: ma.TaskLibAnswers = {
+ "which": {
+ "msdeploy": "msdeploy"
+ },
+ "stats": {
+ "webAppPkg.zip": {
+ "isFile": true
+ }
+ },
+ "osType": {
+ "osType": "Windows"
+ },
+ "checkPath": {
+ "msdeploy": true,
+ "webAppPkg.zip": true,
+ "webAppPkg": true
+ },
+ "exec": {
+ "msdeploy -verb:getParameters -source:package=\'webAppPkg.zip\'": {
+ "code": 0,
+ "stdout": "Executed Successfully"
+ },
+ "msdeploy -verb:sync -source:IisApp=\'webAppPkg\' -dest:iisApp=\'mytestapp\',ComputerName=\'https://mytestappKuduUrl/msdeploy.axd?site=mytestapp\',UserName=\'$mytestapp\',Password=\'mytestappPwd\',AuthType=\'Basic\' -enableRule:DoNotDeleteRule -userAgent:TFS_useragent":{
+ "code": 0,
+ "stdout": "Executed Successfully"
+ }
+ },
+ "exist": {
+ "webAppPkg.zip": true,
+ "webAppPkg": true
+ },
+ "glob": {
+ "webAppPkgPattern" : ["webAppPkg1", "webAppPkg2"],
+ "Invalid_webAppPkg" : [],
+ "webAppPkg.zip": ["webAppPkg.zip"],
+ "webAppPkg": ["webAppPkg"]
+ },
+ "getVariable": {
+ "ENDPOINT_AUTH_AzureRMSpn": "{\"parameters\":{\"serviceprincipalid\":\"spId\",\"serviceprincipalkey\":\"spKey\",\"tenantid\":\"tenant\"},\"scheme\":\"ServicePrincipal\"}",
+ "ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONNAME": "sName",
+ "ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONID": "sId",
+ "AZURE_HTTP_USER_AGENT": "TFS_useragent",
+ "System.DefaultWorkingDirectory": "DefaultWorkingDirectory",
+ "build.sourceVersion": "46da24f35850f455185b9188b4742359b537076f",
+ "build.buildId": 1,
+ "release.releaseId": 1,
+ "build.buildNumber": 1,
+ "release.releaseName": "Release-1",
+ "build.repository.provider": "TfsGit",
+ "build.repository.name": "MyFirstProject",
+ "system.TeamFoundationCollectionUri": "https://abc.visualstudio.com/",
+ "system.teamProject": "MyFirstProject",
+ "build.sourceVersionAuthor": "author",
+ "release.releaseUri": "vstfs:///ReleaseManagement/Release/1",
+ "agent.name": "agent"
+ }
+}
+
+var kuduDeploymentLog = require('azurerest-common/kududeploymentstatusutility.js');
+var msDeployUtility = require('azure-pipelines-tasks-webdeployment-common/msdeployutility.js');
+tr.registerMock('./msdeployutility.js', {
+ getMSDeployCmdArgs : msDeployUtility.getMSDeployCmdArgs,
+ getMSDeployFullPath : function() {
+ var msDeployFullPath = "msdeploypath\\msdeploy.exe";
+ return msDeployFullPath;
+ }
+});
+
+tr.registerMock('azurerest-common/azurerestutility.js', {
+ getAzureRMWebAppPublishProfile: function(SPN, webAppName, resourceGroupName, deployToSlotFlag, slotName) {
+ var mockPublishProfile = {
+ profileName: 'mytestapp - Web Deploy',
+ publishMethod: 'MSDeploy',
+ publishUrl: 'mytestappKuduUrl',
+ msdeploySite: 'mytestapp',
+ userName: '$mytestapp',
+ userPWD: 'mytestappPwd',
+ destinationAppUrl: 'mytestappUrl',
+ SQLServerDBConnectionString: '',
+ mySQLDBConnectionString: '',
+ hostingProviderForumLink: '',
+ controlPanelLink: '',
+ webSystem: 'WebSites'
+ };
+ if(deployToSlotFlag) {
+ mockPublishProfile.profileName = 'mytestapp-' + slotName + ' - Web Deploy';
+ mockPublishProfile.publishUrl = 'mytestappKuduUrl-' + slotName;
+ mockPublishProfile.msdeploySite = 'mytestapp__' + slotName;
+ mockPublishProfile.userName = '$mytestapp__' + slotName;
+ mockPublishProfile.userPWD = 'mytestappPwd';
+ mockPublishProfile.destinationAppUrl = 'mytestappUrl-' + slotName;
+ }
+ return mockPublishProfile;
+ },
+ getAzureRMWebAppConfigDetails: function(SPN, webAppName, resourceGroupName, deployToSlotFlag, slotName) {
+ var config = {
+ id: 'appid',
+ properties: {
+ virtualApplications: [ ['Object'], ['Object'], ['Object'] ],
+ scmType: "None"
+ }
+ }
+
+ return config;
+ },
+ updateDeploymentStatus: function(publishingProfile, isDeploymentSuccess ) {
+ if(isDeploymentSuccess) {
+ console.log('Updated history to kudu');
+ }
+ else {
+ console.log('Failed to update history to kudu');
+ }
+ var webAppPublishKuduUrl = publishingProfile.publishUrl;
+ var requestDetails = kuduDeploymentLog.getUpdateHistoryRequest(webAppPublishKuduUrl, isDeploymentSuccess);
+ requestDetails["requestBody"].author = 'author';
+ console.log("kudu log requestBody is:" + JSON.stringify(requestDetails["requestBody"]));
+ },
+ getResourceGroupName: function (SPN, webAppName) {
+ return "foobar";
+ },
+ getWebAppAppSettings : function (SPN, webAppName: string, resourceGroupName: string, deployToSlotFlag: boolean, slotName: string){
+ var appSettings = {
+ properties : {
+ MSDEPLOY_RENAME_LOCKED_FILES : '1'
+ }
+ };
+ return appSettings;
+ },
+ updateWebAppAppSettings : function (){
+ return true;
+ },
+ updateAzureRMWebAppConfigDetails: function() {
+ console.log("Successfully updated scmType to VSTSRM");
+ },
+ getAzureRMWebAppMetadata: function() {
+ return {
+ properties: {}
+ }
+ },
+ updateAzureRMWebAppMetadata: function() {
+ console.log("Successfully updated Web App metadata");
+ }
+});
+
+var fs = require('fs');
+tr.registerMock('fs', {
+ createWriteStream: function (filePath, options) {
+ return {
+ "isWriteStreamObj": true,
+ "on": (event) => {
+ console.log("event: " + event + " has been triggered");
+ },
+ "end" : () => { return true; }
+ };
+ },
+ ReadStream: fs.ReadStream,
+ WriteStream: fs.WriteStream,
+ openSync: function (fd, options) {
+ return true;
+ },
+ closeSync: function (fd) {
+ return true;
+ },
+ fsyncSync: function(fd) {
+ return true;
+ },
+ fstat: fs.fstat,
+ read: fs.read,
+ open: fs.open,
+ writeFile: fs.writeFile,
+ symlink: fs.symlink,
+ stat: fs.stat
+});
+
+tr.setAnswers(a);
+tr.run();
\ No newline at end of file
diff --git a/_generated/AzureRmWebAppDeploymentV4/Tests/L0WindowsManyPackage.ts b/_generated/AzureRmWebAppDeploymentV4/Tests/L0WindowsManyPackage.ts
new file mode 100644
index 000000000000..c36cdcb27a2b
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/Tests/L0WindowsManyPackage.ts
@@ -0,0 +1,180 @@
+import ma = require('azure-pipelines-task-lib/mock-answer');
+import tmrm = require('azure-pipelines-task-lib/mock-run');
+import path = require('path');
+
+let taskPath = path.join(__dirname, '..', 'azurermwebappdeployment.js');
+let tr: tmrm.TaskMockRunner = new tmrm.TaskMockRunner(taskPath);
+
+tr.setInput('ConnectedServiceName', 'AzureRMSpn');
+tr.setInput('WebAppName', 'mytestapp');
+tr.setInput('Package', 'C:/pattern/**/*.zip');
+tr.setInput('UseWebDeploy', 'true');
+
+process.env['TASK_TEST_TRACE'] = "1";
+process.env["ENDPOINT_AUTH_AzureRMSpn"] = "{\"parameters\":{\"serviceprincipalid\":\"spId\",\"serviceprincipalkey\":\"spKey\",\"tenantid\":\"tenant\"},\"scheme\":\"ServicePrincipal\"}";
+process.env["ENDPOINT_AUTH_PARAMETER_AzureRMSpn_SERVICEPRINCIPALID"] = "spId";
+process.env["ENDPOINT_AUTH_PARAMETER_AzureRMSpn_SERVICEPRINCIPALKEY"] = "spKey";
+process.env["ENDPOINT_AUTH_PARAMETER_AzureRMSpn_TENANTID"] = "tenant";
+process.env["ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONNAME"] = "sName";
+process.env["ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONID"] = "sId";
+process.env["AZURE_HTTP_USER_AGENT"] = "TFS_useragent";
+process.env["SYSTEM_DEFAULTWORKINGDIRECTORY"] = "DefaultWorkingDirectory";
+process.env["BUILD_SOURCEVERSION"] = "46da24f35850f455185b9188b4742359b537076f";
+process.env["BUILD_BUILDID"] = "1",
+process.env["RELEASE_RELEASEID"] = "1";
+process.env["BUILD_BUILDNUMBER"] = "1";
+process.env["RELEASE_RELEASENAME"] = "Release-1";
+process.env["BUILD_REPOSITORY_PROVIDER"] = "TfsGit";
+process.env["BUILD_REPOSITORY_NAME"] = "MyFirstProject";
+process.env["SYSTEM_TEAMFOUNDATIONCOLLECTIONURI"] = "https://abc.visualstudio.com/";
+process.env["SYSTEM_TEAMPROJECT"] = "MyFirstProject";
+process.env["BUILD_SOURCEVERISONAUTHOR"] = "author";
+process.env["RELEASE_RELEASEURI"] = "vstfs:///ReleaseManagement/Release/1";
+process.env["AGENT_NAME"] = "author";
+
+// provide answers for task mock
+let a: ma.TaskLibAnswers = {
+ "which": {
+ "cmd": "cmd"
+ },
+ "stats": {
+ "webAppPkg.zip": {
+ "isFile": true
+ }
+ },
+ "osType": {
+ "osType": "Windows"
+ },
+ "checkPath": {
+ "cmd": true,
+ "webAppPkg.zip": true,
+ "webAppPkg": true
+ },
+ "match": {
+ "C:/pattern/**/*.zip":["webAppPkg1", "webAppPkg2"]
+ },
+ "find" : {
+ "C:/pattern/":["C:/pattern/webAppPkg.zip", "C:/pattern/webAppPkg1.zip"]
+ },
+ "exec": {
+ "cmd /C DefaultWorkingDirectory\\msDeployCommand.bat": {
+ "code": 0,
+ "stdout": "Executed Successfully"
+ },
+ "cmd /C DefaultWorkingDirectory\\msDeployParam.bat": {
+ "code": 0,
+ "stdout": "Executed Successfully"
+ }
+ },
+ "exist": {
+ "webAppPkg.zip": true,
+ "webAppPkg": true
+ },
+ "glob": {
+ "webAppPkgPattern" : ["webAppPkg1", "webAppPkg2"],
+ "Invalid_webAppPkg" : [],
+ "webAppPkg.zip": ["webAppPkg.zip"],
+ "webAppPkg": ["webAppPkg"]
+ },
+ "getVariable": {
+ "ENDPOINT_AUTH_AzureRMSpn": "{\"parameters\":{\"serviceprincipalid\":\"spId\",\"serviceprincipalkey\":\"spKey\",\"tenantid\":\"tenant\"},\"scheme\":\"ServicePrincipal\"}",
+ "ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONNAME": "sName",
+ "ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONID": "sId",
+ "AZURE_HTTP_USER_AGENT": "TFS_useragent",
+ "System.DefaultWorkingDirectory": "DefaultWorkingDirectory",
+ "build.sourceVersion": "46da24f35850f455185b9188b4742359b537076f",
+ "build.buildId": 1,
+ "release.releaseId": 1,
+ "build.buildNumber": 1,
+ "release.releaseName": "Release-1",
+ "build.repository.provider": "TfsGit",
+ "build.repository.name": "MyFirstProject",
+ "system.TeamFoundationCollectionUri": "https://abc.visualstudio.com/",
+ "system.teamProject": "MyFirstProject",
+ "build.sourceVersionAuthor": "author",
+ "release.releaseUri": "vstfs:///ReleaseManagement/Release/1",
+ "agent.name": "agent"
+ }
+}
+
+
+var kuduDeploymentLog = require('azurerest-common/kududeploymentstatusutility.js');
+var msDeployUtility = require('azure-pipelines-tasks-webdeployment-common/msdeployutility.js');
+tr.registerMock('./msdeployutility.js', {
+ getMSDeployCmdArgs : msDeployUtility.getMSDeployCmdArgs,
+ getMSDeployFullPath : function() {
+ var msDeployFullPath = "msdeploypath\\msdeploy.exe";
+ return msDeployFullPath;
+ }
+});
+
+tr.registerMock('azurerest-common/azurerestutility.js', {
+ getAzureRMWebAppPublishProfile: function(SPN, webAppName, resourceGroupName, deployToSlotFlag, slotName) {
+ var mockPublishProfile = {
+ profileName: 'mytestapp - Web Deploy',
+ publishMethod: 'MSDeploy',
+ publishUrl: 'mytestappKuduUrl',
+ msdeploySite: 'mytestapp',
+ userName: '$mytestapp',
+ userPWD: 'mytestappPwd',
+ destinationAppUrl: 'mytestappUrl',
+ SQLServerDBConnectionString: '',
+ mySQLDBConnectionString: '',
+ hostingProviderForumLink: '',
+ controlPanelLink: '',
+ webSystem: 'WebSites'
+ };
+ if(deployToSlotFlag) {
+ mockPublishProfile.profileName = 'mytestapp-' + slotName + ' - Web Deploy';
+ mockPublishProfile.publishUrl = 'mytestappKuduUrl-' + slotName;
+ mockPublishProfile.msdeploySite = 'mytestapp__' + slotName;
+ mockPublishProfile.userName = '$mytestapp__' + slotName;
+ mockPublishProfile.userPWD = 'mytestappPwd';
+ mockPublishProfile.destinationAppUrl = 'mytestappUrl-' + slotName;
+ }
+ return mockPublishProfile;
+ },
+ getAzureRMWebAppConfigDetails: function(SPN, webAppName, resourceGroupName, deployToSlotFlag, slotName) {
+ var config = {
+ id: 'appid',
+ properties: {
+ virtualApplications: [ ['Object'], ['Object'], ['Object'] ],
+ scmType: "None"
+ }
+ }
+
+ return config;
+ },
+ updateDeploymentStatus: function(publishingProfile, isDeploymentSuccess ) {
+ if(isDeploymentSuccess) {
+ console.log('Updated history to kudu');
+ }
+ else {
+ console.log('Failed to update history to kudu');
+ }
+ var webAppPublishKuduUrl = publishingProfile.publishUrl;
+ var requestDetails = kuduDeploymentLog.getUpdateHistoryRequest(webAppPublishKuduUrl, isDeploymentSuccess);
+ requestDetails["requestBody"].author = 'author';
+ console.log("kudu log requestBody is:" + JSON.stringify(requestDetails["requestBody"]));
+ },
+ getResourceGroupName: function (SPN, webAppName) {
+ return "foobar";
+ },
+ getWebAppAppSettings : function (SPN, webAppName: string, resourceGroupName: string, deployToSlotFlag: boolean, slotName: string){
+ var appSettings = {
+ properties : {
+ MSDEPLOY_RENAME_LOCKED_FILES : '1'
+ }
+ };
+ return appSettings;
+ },
+ updateWebAppAppSettings : function (){
+ return true;
+ },
+ updateAzureRMWebAppConfigDetails: function() {
+ console.log("Successfully updated scmType to VSTSRM");
+ }
+});
+
+tr.setAnswers(a);
+tr.run();
\ No newline at end of file
diff --git a/_generated/AzureRmWebAppDeploymentV4/Tests/L0WindowsNoPackage.ts b/_generated/AzureRmWebAppDeploymentV4/Tests/L0WindowsNoPackage.ts
new file mode 100644
index 000000000000..bf8eef36d07f
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/Tests/L0WindowsNoPackage.ts
@@ -0,0 +1,175 @@
+import ma = require('azure-pipelines-task-lib/mock-answer');
+import tmrm = require('azure-pipelines-task-lib/mock-run');
+import path = require('path');
+
+let taskPath = path.join(__dirname, '..', 'azurermwebappdeployment.js');
+let tr: tmrm.TaskMockRunner = new tmrm.TaskMockRunner(taskPath);
+
+tr.setInput('ConnectedServiceName', 'AzureRMSpn');
+tr.setInput('WebAppName', 'mytestapp');
+tr.setInput('Package', 'Invalid_webAppPkg');
+tr.setInput('UseWebDeploy', 'true');
+
+process.env['TASK_TEST_TRACE'] = "1";
+process.env["ENDPOINT_AUTH_AzureRMSpn"] = "{\"parameters\":{\"serviceprincipalid\":\"spId\",\"serviceprincipalkey\":\"spKey\",\"tenantid\":\"tenant\"},\"scheme\":\"ServicePrincipal\"}";
+process.env["ENDPOINT_AUTH_PARAMETER_AzureRMSpn_SERVICEPRINCIPALID"] = "spId";
+process.env["ENDPOINT_AUTH_PARAMETER_AzureRMSpn_SERVICEPRINCIPALKEY"] = "spKey";
+process.env["ENDPOINT_AUTH_PARAMETER_AzureRMSpn_TENANTID"] = "tenant";
+process.env["ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONNAME"] = "sName";
+process.env["ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONID"] = "sId";
+process.env["AZURE_HTTP_USER_AGENT"] = "TFS_useragent";
+process.env["SYSTEM_DEFAULTWORKINGDIRECTORY"] = "DefaultWorkingDirectory";
+process.env["BUILD_SOURCEVERSION"] = "46da24f35850f455185b9188b4742359b537076f";
+process.env["BUILD_BUILDID"] = "1",
+process.env["RELEASE_RELEASEID"] = "1";
+process.env["BUILD_BUILDNUMBER"] = "1";
+process.env["RELEASE_RELEASENAME"] = "Release-1";
+process.env["BUILD_REPOSITORY_PROVIDER"] = "TfsGit";
+process.env["BUILD_REPOSITORY_NAME"] = "MyFirstProject";
+process.env["SYSTEM_TEAMFOUNDATIONCOLLECTIONURI"] = "https://abc.visualstudio.com/";
+process.env["SYSTEM_TEAMPROJECT"] = "MyFirstProject";
+process.env["BUILD_SOURCEVERISONAUTHOR"] = "author";
+process.env["RELEASE_RELEASEURI"] = "vstfs:///ReleaseManagement/Release/1";
+process.env["AGENT_NAME"] = "author";
+
+// provide answers for task mock
+let a: ma.TaskLibAnswers = {
+ "which": {
+ "cmd": "cmd"
+ },
+ "stats": {
+ "webAppPkg.zip": {
+ "isFile": true
+ }
+ },
+ "osType": {
+ "osType": "Windows"
+ },
+ "checkPath": {
+ "cmd": true,
+ "webAppPkg.zip": true,
+ "webAppPkg": true
+ },
+ "exec": {
+ "cmd /C DefaultWorkingDirectory\\msDeployCommand.bat": {
+ "code": 0,
+ "stdout": "Executed Successfully"
+ },
+ "cmd /C DefaultWorkingDirectory\\msDeployParam.bat": {
+ "code": 0,
+ "stdout": "Executed Successfully"
+ }
+ },
+ "exist": {
+ "webAppPkg.zip": true,
+ "webAppPkg": true,
+ "Invalid_webAppPkg": false
+ },
+ "glob": {
+ "webAppPkgPattern" : ["webAppPkg1", "webAppPkg2"],
+ "Invalid_webAppPkg" : [],
+ "webAppPkg.zip": ["webAppPkg.zip"],
+ "webAppPkg": ["webAppPkg"]
+ },
+ "getVariable": {
+ "ENDPOINT_AUTH_AzureRMSpn": "{\"parameters\":{\"serviceprincipalid\":\"spId\",\"serviceprincipalkey\":\"spKey\",\"tenantid\":\"tenant\"},\"scheme\":\"ServicePrincipal\"}",
+ "ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONNAME": "sName",
+ "ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONID": "sId",
+ "AZURE_HTTP_USER_AGENT": "TFS_useragent",
+ "System.DefaultWorkingDirectory": "DefaultWorkingDirectory",
+ "build.sourceVersion": "46da24f35850f455185b9188b4742359b537076f",
+ "build.buildId": 1,
+ "release.releaseId": 1,
+ "build.buildNumber": 1,
+ "release.releaseName": "Release-1",
+ "build.repository.provider": "TfsGit",
+ "build.repository.name": "MyFirstProject",
+ "system.TeamFoundationCollectionUri": "https://abc.visualstudio.com/",
+ "system.teamProject": "MyFirstProject",
+ "build.sourceVersionAuthor": "author",
+ "release.releaseUri": "vstfs:///ReleaseManagement/Release/1",
+ "agent.name": "agent"
+ }
+}
+
+
+var kuduDeploymentLog = require('azurerest-common/kududeploymentstatusutility.js');
+var msDeployUtility = require('azure-pipelines-tasks-webdeployment-common/msdeployutility.js');
+tr.registerMock('./msdeployutility.js', {
+ getMSDeployCmdArgs : msDeployUtility.getMSDeployCmdArgs,
+ getMSDeployFullPath : function() {
+ var msDeployFullPath = "msdeploypath\\msdeploy.exe";
+ return msDeployFullPath;
+ }
+});
+
+tr.registerMock('azurerest-common/azurerestutility.js', {
+ getAzureRMWebAppPublishProfile: function(SPN, webAppName, resourceGroupName, deployToSlotFlag, slotName) {
+ var mockPublishProfile = {
+ profileName: 'mytestapp - Web Deploy',
+ publishMethod: 'MSDeploy',
+ publishUrl: 'mytestappKuduUrl',
+ msdeploySite: 'mytestapp',
+ userName: '$mytestapp',
+ userPWD: 'mytestappPwd',
+ destinationAppUrl: 'mytestappUrl',
+ SQLServerDBConnectionString: '',
+ mySQLDBConnectionString: '',
+ hostingProviderForumLink: '',
+ controlPanelLink: '',
+ webSystem: 'WebSites'
+ };
+ if(deployToSlotFlag) {
+ mockPublishProfile.profileName = 'mytestapp-' + slotName + ' - Web Deploy';
+ mockPublishProfile.publishUrl = 'mytestappKuduUrl-' + slotName;
+ mockPublishProfile.msdeploySite = 'mytestapp__' + slotName;
+ mockPublishProfile.userName = '$mytestapp__' + slotName;
+ mockPublishProfile.userPWD = 'mytestappPwd';
+ mockPublishProfile.destinationAppUrl = 'mytestappUrl-' + slotName;
+ }
+ return mockPublishProfile;
+ },
+ getAzureRMWebAppConfigDetails: function(SPN, webAppName, resourceGroupName, deployToSlotFlag, slotName) {
+ var config = {
+ id: 'appid',
+ properties: {
+ virtualApplications: [ ['Object'], ['Object'], ['Object'] ],
+ scmType: "None"
+ }
+ }
+
+ return config;
+ },
+ updateDeploymentStatus: function(publishingProfile, isDeploymentSuccess ) {
+ if(isDeploymentSuccess) {
+ console.log('Updated history to kudu');
+ }
+ else {
+ console.log('Failed to update history to kudu');
+ }
+ var webAppPublishKuduUrl = publishingProfile.publishUrl;
+ var requestDetails = kuduDeploymentLog.getUpdateHistoryRequest(webAppPublishKuduUrl, isDeploymentSuccess);
+ requestDetails["requestBody"].author = 'author';
+ console.log("kudu log requestBody is:" + JSON.stringify(requestDetails["requestBody"]));
+ },
+ getResourceGroupName: function (SPN, webAppName) {
+ return "foobar";
+ },
+ getWebAppAppSettings : function (SPN, webAppName: string, resourceGroupName: string, deployToSlotFlag: boolean, slotName: string){
+ var appSettings = {
+ properties : {
+ MSDEPLOY_RENAME_LOCKED_FILES : '1'
+ }
+ };
+ return appSettings;
+ },
+ updateWebAppAppSettings : function (){
+ return true;
+ },
+ updateAzureRMWebAppConfigDetails: function() {
+ console.log("Successfully updated scmType to VSTSRM");
+ }
+});
+
+tr.setAnswers(a);
+tr.run();
\ No newline at end of file
diff --git a/_generated/AzureRmWebAppDeploymentV4/Tests/L0WindowsParamFileinPkg.ts b/_generated/AzureRmWebAppDeploymentV4/Tests/L0WindowsParamFileinPkg.ts
new file mode 100644
index 000000000000..92c4fbc4a6e8
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/Tests/L0WindowsParamFileinPkg.ts
@@ -0,0 +1,219 @@
+import ma = require('azure-pipelines-task-lib/mock-answer');
+import tmrm = require('azure-pipelines-task-lib/mock-run');
+import path = require('path');
+
+let taskPath = path.join(__dirname, '..', 'azurermwebappdeployment.js');
+let tr: tmrm.TaskMockRunner = new tmrm.TaskMockRunner(taskPath);
+
+tr.setInput('ConnectedServiceName', 'AzureRMSpn');
+tr.setInput('WebAppName', 'mytestapp');
+tr.setInput('Package', 'webAppPkg.zip');
+tr.setInput('UseWebDeploy', 'true');
+tr.setInput('SetParametersFile', 'parameterFilePresent.xml');
+
+process.env['TASK_TEST_TRACE'] = "1";
+process.env["ENDPOINT_AUTH_AzureRMSpn"] = "{\"parameters\":{\"serviceprincipalid\":\"spId\",\"serviceprincipalkey\":\"spKey\",\"tenantid\":\"tenant\"},\"scheme\":\"ServicePrincipal\"}";
+process.env["ENDPOINT_AUTH_PARAMETER_AzureRMSpn_SERVICEPRINCIPALID"] = "spId";
+process.env["ENDPOINT_AUTH_PARAMETER_AzureRMSpn_SERVICEPRINCIPALKEY"] = "spKey";
+process.env["ENDPOINT_AUTH_PARAMETER_AzureRMSpn_TENANTID"] = "tenant";
+process.env["ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONNAME"] = "sName";
+process.env["ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONID"] = "sId";
+process.env["AZURE_HTTP_USER_AGENT"] = "TFS_useragent";
+process.env["SYSTEM_DEFAULTWORKINGDIRECTORY"] = "DefaultWorkingDirectory";
+process.env["BUILD_SOURCEVERSION"] = "46da24f35850f455185b9188b4742359b537076f";
+process.env["BUILD_BUILDID"] = '1',
+process.env["RELEASE_RELEASEID"] = '1';
+process.env["BUILD_BUILDNUMBER"] = '1';
+process.env["RELEASE_RELEASENAME"] = "Release-1";
+process.env["BUILD_REPOSITORY_PROVIDER"] = "TfsGit";
+process.env["BUILD_REPOSITORY_NAME"] = "MyFirstProject";
+process.env["SYSTEM_TEAMFOUNDATIONCOLLECTIONURI"] = "https://abc.visualstudio.com/";
+process.env["SYSTEM_TEAMPROJECT"] = "MyFirstProject";
+process.env["BUILD_SOURCEVERISONAUTHOR"] = "author";
+process.env["RELEASE_RELEASEURI"] = "vstfs:///ReleaseManagement/Release/1";
+process.env["AGENT_NAME"] = "author";
+
+let a: ma.TaskLibAnswers = {
+ "which": {
+ "msdeploy": "msdeploy"
+ },
+ "stats": {
+ "webAppPkg.zip": {
+ "isFile": true
+ },
+ "parameterFilePresent.xml": {
+ "isFile" : true
+ },
+ "parameterFileUser.xml": {
+ "isFile" : true
+ }
+ },
+ "checkPath": {
+ "msdeploy" : true,
+ "webAppPkg.zip": true,
+ "webAppPkg": true
+ },
+ "osType": {
+ "osType": "Windows"
+ },
+ "rmRF": {
+ "DefaultWorkingDirectory\\tempSetParameters.xml": {
+ "success": true
+ }
+ },
+ "exec": {
+ "msdeploy -verb:getParameters -source:package=\'webAppPkg.zip\'": {
+ "code": 0,
+ "stdout": "Executed Successfully"
+ },
+ "msdeploy -verb:sync -source:package=\'webAppPkg.zip\' -dest:auto,ComputerName=\'https://mytestappKuduUrl/msdeploy.axd?site=mytestapp\',UserName=\'$mytestapp\',Password=\'mytestappPwd\',AuthType=\'Basic\' -setParam:name=\'IIS Web Application Name\',value=\'mytestapp\' -setParamFile=tempSetParameters.xml -enableRule:DoNotDeleteRule -userAgent:TFS_useragent": {
+ "code": 0,
+ "stdout": "Executed Successfully"
+ }
+ },
+ "exist": {
+ "webAppPkg.zip": true,
+ "DefaultWorkingDirectory\\tempSetParameters.xml": true
+ },
+ "glob": {
+ "webAppPkg.zip": ["webAppPkg.zip"],
+ "webAppPkg": ["webAppPkg"]
+ },
+ "getVariable": {
+ "ENDPOINT_AUTH_AzureRMSpn": "{\"parameters\":{\"serviceprincipalid\":\"spId\",\"serviceprincipalkey\":\"spKey\",\"tenantid\":\"tenant\"},\"scheme\":\"ServicePrincipal\"}",
+ "ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONNAME": "sName",
+ "ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONID": "sId",
+ "SYSTEM_DEFAULTWORKINGDIRECTORY": "defaultWorkingDirectory",
+ "AZURE_HTTP_USER_AGENT": "TFS_useragent",
+ "System.DefaultWorkingDirectory" : "DefaultWorkingDirectory",
+ "build.sourcesDirectory": "DefaultWorkingDirectory"
+ }
+};
+
+
+tr.registerMock('azure-pipelines-tasks-webdeployment-common/ziputility.js', {
+ getArchivedEntries: function(webDeployPkg) {
+ return {
+ "entries":[
+ "systemInfo.xml",
+ "parameters.xml"
+ ]
+ };
+ }
+});
+var kuduDeploymentLog = require('azurerest-common/kududeploymentstatusutility.js');
+var msDeployUtility = require('azure-pipelines-tasks-webdeployment-common/msdeployutility.js');
+tr.registerMock('./msdeployutility.js', {
+ getMSDeployCmdArgs : msDeployUtility.getMSDeployCmdArgs,
+ getMSDeployFullPath : function() {
+ var msDeployFullPath = "msdeploypath\\msdeploy.exe";
+ return msDeployFullPath;
+ }
+});
+
+tr.registerMock('azurerest-common/azurerestutility.js', {
+ getAzureRMWebAppPublishProfile: function(SPN, webAppName, resourceGroupName, deployToSlotFlag, slotName) {
+ var mockPublishProfile = {
+ profileName: 'mytestapp - Web Deploy',
+ publishMethod: 'MSDeploy',
+ publishUrl: 'mytestappKuduUrl',
+ msdeploySite: 'mytestapp',
+ userName: '$mytestapp',
+ userPWD: 'mytestappPwd',
+ destinationAppUrl: 'mytestappUrl',
+ SQLServerDBConnectionString: '',
+ mySQLDBConnectionString: '',
+ hostingProviderForumLink: '',
+ controlPanelLink: '',
+ webSystem: 'WebSites'
+ };
+ if(deployToSlotFlag) {
+ mockPublishProfile.profileName = 'mytestapp-' + slotName + ' - Web Deploy';
+ mockPublishProfile.publishUrl = 'mytestappKuduUrl-' + slotName;
+ mockPublishProfile.msdeploySite = 'mytestapp__' + slotName;
+ mockPublishProfile.userName = '$mytestapp__' + slotName;
+ mockPublishProfile.userPWD = 'mytestappPwd';
+ mockPublishProfile.destinationAppUrl = 'mytestappUrl-' + slotName;
+ }
+ return mockPublishProfile;
+ },
+ getAzureRMWebAppConfigDetails: function(SPN, webAppName, resourceGroupName, deployToSlotFlag, slotName) {
+ var config = {
+ id: 'appid',
+ properties: {
+ virtualApplications: [ ['Object'], ['Object'], ['Object'] ],
+ scmType: "None"
+ }
+ }
+
+ return config;
+ },
+ updateDeploymentStatus: function(publishingProfile, isDeploymentSuccess ) {
+ if(isDeploymentSuccess) {
+ console.log('Updated history to kudu');
+ }
+ else {
+ console.log('Failed to update history to kudu');
+ }
+ var webAppPublishKuduUrl = publishingProfile.publishUrl;
+ var requestDetails = kuduDeploymentLog.getUpdateHistoryRequest(webAppPublishKuduUrl, isDeploymentSuccess);
+ requestDetails["requestBody"].author = 'author';
+ console.log("kudu log requestBody is:" + JSON.stringify(requestDetails["requestBody"]));
+ },
+ getResourceGroupName: function (SPN, webAppName) {
+ return "foobar";
+ },
+ getWebAppAppSettings : function (SPN, webAppName: string, resourceGroupName: string, deployToSlotFlag: boolean, slotName: string){
+ var appSettings = {
+ properties : {
+ MSDEPLOY_RENAME_LOCKED_FILES : '1'
+ }
+ };
+ return appSettings;
+ },
+ updateWebAppAppSettings : function (){
+ return true;
+ },
+ updateAzureRMWebAppConfigDetails: function() {
+ console.log("Successfully updated scmType to VSTSRM");
+ },
+ getAzureRMWebAppMetadata: function() {
+ return {
+ properties: {}
+ }
+ },
+ updateAzureRMWebAppMetadata: function() {
+ console.log("Successfully updated Web App metadata");
+ }
+});
+
+var fs = require('fs');
+tr.registerMock('fs', {
+ createWriteStream: function (filePath, options) {
+ return {
+ "isWriteStreamObj": true,
+ "on": (event) => {
+ console.log("event: " + event + " has occurred");
+ },
+ "end" : () => { return true }
+ };
+ },
+ ReadStream: fs.ReadStream,
+ WriteStream: fs.WriteStream,
+ readFileSync: function(msDeployErrorFilePath) {
+ console.log("reading the error file");
+ return "ERROR DEPLOYING WEBSITE";
+ },
+ openSync: function (fd, options) {
+ return true;
+ },
+ closeSync: function (fd) {
+ return true;
+ },
+ fsyncSync: function(fd) {
+ return true;
+ }
+});
+
+tr.setAnswers(a);
+tr.run();
\ No newline at end of file
diff --git a/_generated/AzureRmWebAppDeploymentV4/Tests/L0WindowsSpecificSlot.ts b/_generated/AzureRmWebAppDeploymentV4/Tests/L0WindowsSpecificSlot.ts
new file mode 100644
index 000000000000..c5ad17b9ec24
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/Tests/L0WindowsSpecificSlot.ts
@@ -0,0 +1,225 @@
+import ma = require('azure-pipelines-task-lib/mock-answer');
+import tmrm = require('azure-pipelines-task-lib/mock-run');
+import path = require('path');
+
+let taskPath = path.join(__dirname, '..', 'azurermwebappdeployment.js');
+let tr: tmrm.TaskMockRunner = new tmrm.TaskMockRunner(taskPath);
+
+tr.setInput('ConnectedServiceName', 'AzureRMSpn');
+tr.setInput('WebAppName', 'mytestapp');
+tr.setInput('Package', 'webAppPkg.zip');
+tr.setInput('UseWebDeploy', 'true');
+tr.setInput('DeployToSlotFlag', 'true');
+tr.setInput('ResourceGroupName', 'mytestappRg');
+tr.setInput('SlotName', 'testslot');
+
+process.env['TASK_TEST_TRACE'] = "1";
+process.env["ENDPOINT_AUTH_AzureRMSpn"] = "{\"parameters\":{\"serviceprincipalid\":\"spId\",\"serviceprincipalkey\":\"spKey\",\"tenantid\":\"tenant\"},\"scheme\":\"ServicePrincipal\"}";
+process.env["ENDPOINT_AUTH_PARAMETER_AzureRMSpn_SERVICEPRINCIPALID"] = "spId";
+process.env["ENDPOINT_AUTH_PARAMETER_AzureRMSpn_SERVICEPRINCIPALKEY"] = "spKey";
+process.env["ENDPOINT_AUTH_PARAMETER_AzureRMSpn_TENANTID"] = "tenant";
+process.env["ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONNAME"] = "sName";
+process.env["ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONID"] = "sId";
+process.env["AZURE_HTTP_USER_AGENT"] = "TFS_useragent";
+process.env["SYSTEM_DEFAULTWORKINGDIRECTORY"] = "DefaultWorkingDirectory";
+process.env["BUILD_SOURCEVERSION"] = "46da24f35850f455185b9188b4742359b537076f";
+process.env["BUILD_BUILDID"] = '1',
+process.env["RELEASE_RELEASEID"] = '1';
+process.env["BUILD_BUILDNUMBER"] = '1';
+process.env["RELEASE_RELEASENAME"] = "Release-1";
+process.env["BUILD_REPOSITORY_PROVIDER"] = "TfsGit";
+process.env["BUILD_REPOSITORY_NAME"] = "MyFirstProject";
+process.env["SYSTEM_TEAMFOUNDATIONCOLLECTIONURI"] = "https://abc.visualstudio.com/";
+process.env["SYSTEM_TEAMPROJECT"] = "MyFirstProject";
+process.env["BUILD_SOURCEVERISONAUTHOR"] = "author";
+process.env["RELEASE_RELEASEURI"] = "vstfs:///ReleaseManagement/Release/1";
+process.env["AGENT_NAME"] = "author";
+
+// provide answers for task mock
+let a: ma.TaskLibAnswers = {
+ "which": {
+ "msdeploy": "msdeploy"
+ },
+ "stats": {
+ "webAppPkg.zip": {
+ "isFile": true
+ }
+ },
+ "osType": {
+ "osType": "Windows"
+ },
+ "checkPath": {
+ "webAppPkg.zip": true,
+ "webAppPkg": true,
+ "msdeploy": true
+ },
+ "exec": {
+ "msdeploy -verb:getParameters -source:package=\'webAppPkg.zip\'": {
+ "code": 0,
+ "stdout": "Executed Successfully"
+ },
+ "msdeploy -verb:sync -source:package=\'webAppPkg.zip\' -dest:auto,ComputerName=\'https://mytestappKuduUrl-testslot/msdeploy.axd?site=mytestapp\',UserName=\'$mytestapp__testslot\',Password=\'mytestappPwd\',AuthType=\'Basic\' -setParam:name=\'IIS Web Application Name\',value=\'mytestapp\' -enableRule:DoNotDeleteRule -userAgent:TFS_useragent": {
+ "code": 0,
+ "stdout": "Executed Successfully"
+ }
+ },
+ "exist": {
+ "webAppPkg.zip": true,
+ "webAppPkg": true
+ },
+ "glob": {
+ "webAppPkgPattern" : ["webAppPkg1", "webAppPkg2"],
+ "Invalid_webAppPkg" : [],
+ "webAppPkg.zip": ["webAppPkg.zip"],
+ "webAppPkg": ["webAppPkg"]
+ },
+ "getVariable": {
+ "ENDPOINT_AUTH_AzureRMSpn": "{\"parameters\":{\"serviceprincipalid\":\"spId\",\"serviceprincipalkey\":\"spKey\",\"tenantid\":\"tenant\"},\"scheme\":\"ServicePrincipal\"}",
+ "ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONNAME": "sName",
+ "ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONID": "sId",
+ "AZURE_HTTP_USER_AGENT": "TFS_useragent",
+ "System.DefaultWorkingDirectory": "DefaultWorkingDirectory",
+ "build.sourceVersion": "46da24f35850f455185b9188b4742359b537076f",
+ "build.buildId": '1',
+ "release.releaseId": '1',
+ "build.buildNumber": '1',
+ "release.releaseName": "Release-1",
+ "build.repository.provider": "TfsGit",
+ "build.repository.name": "MyFirstProject",
+ "system.TeamFoundationCollectionUri": "https://abc.visualstudio.com/",
+ "system.teamProject": "MyFirstProject",
+ "build.sourceVersionAuthor": "author",
+ "release.releaseUri": "vstfs:///ReleaseManagement/Release/1",
+ "agent.name": "agent"
+ }
+}
+
+
+tr.registerMock('azure-pipelines-tasks-webdeployment-common/ziputility.js', {
+ getArchivedEntries: function(webDeployPkg) {
+ return {
+ "entries":[
+ "systemInfo.xml",
+ "parameters.xml"
+ ]
+ };
+ }
+});
+var kuduDeploymentLog = require('azurerest-common/kududeploymentstatusutility.js');
+var msDeployUtility = require('azure-pipelines-tasks-webdeployment-common/msdeployutility.js');
+tr.registerMock('./msdeployutility.js', {
+ getMSDeployCmdArgs : msDeployUtility.getMSDeployCmdArgs,
+ getMSDeployFullPath : function() {
+ var msDeployFullPath = "msdeploypath\\msdeploy.exe";
+ return msDeployFullPath;
+ }
+});
+
+tr.registerMock('azurerest-common/azurerestutility.js', {
+ appInsightsInstrumentationKeyAppSetting: "APPINSIGHTS_INSTRUMENTATIONKEY",
+ getAzureRMWebAppPublishProfile: function(SPN, webAppName, resourceGroupName, deployToSlotFlag, slotName) {
+ var mockPublishProfile = {
+ profileName: 'mytestapp - Web Deploy',
+ publishMethod: 'MSDeploy',
+ publishUrl: 'mytestappKuduUrl',
+ msdeploySite: 'mytestapp',
+ userName: '$mytestapp',
+ userPWD: 'mytestappPwd',
+ destinationAppUrl: 'mytestappUrl',
+ SQLServerDBConnectionString: '',
+ mySQLDBConnectionString: '',
+ hostingProviderForumLink: '',
+ controlPanelLink: '',
+ webSystem: 'WebSites'
+ };
+ if(deployToSlotFlag) {
+ mockPublishProfile.profileName = 'mytestapp-' + slotName + ' - Web Deploy';
+ mockPublishProfile.publishUrl = 'mytestappKuduUrl-' + slotName;
+ mockPublishProfile.msdeploySite = 'mytestapp__' + slotName;
+ mockPublishProfile.userName = '$mytestapp__' + slotName;
+ mockPublishProfile.userPWD = 'mytestappPwd';
+ mockPublishProfile.destinationAppUrl = 'mytestappUrl-' + slotName;
+ }
+ return mockPublishProfile;
+ },
+
+ getAzureRMWebAppConfigDetails: function(SPN, webAppName, resourceGroupName, deployToSlotFlag, slotName) {
+ var config = {
+ id: 'appid',
+ properties: {
+ virtualApplications: [ ['Object'], ['Object'], ['Object'] ],
+ scmType: "None"
+ }
+ }
+
+ return config;
+ },
+ updateDeploymentStatus: function(publishingProfile, isDeploymentSuccess ) {
+ if(isDeploymentSuccess) {
+ console.log('Updated history to kudu');
+ }
+ else {
+ console.log('Failed to update history to kudu');
+ }
+ var webAppPublishKuduUrl = publishingProfile.publishUrl;
+ var requestDetails = kuduDeploymentLog.getUpdateHistoryRequest(webAppPublishKuduUrl, isDeploymentSuccess);
+ requestDetails["requestBody"].author = 'author';
+ console.log("kudu log requestBody is:" + JSON.stringify(requestDetails["requestBody"]));
+ },
+ getResourceGroupName: function (SPN, webAppName) {
+ return "foobar";
+ },
+ getWebAppAppSettings : function (SPN, webAppName: string, resourceGroupName: string, deployToSlotFlag: boolean, slotName: string){
+ var appSettings = {
+ properties : {
+ MSDEPLOY_RENAME_LOCKED_FILES: '1',
+ APPINSIGHTS_INSTRUMENTATIONKEY: "00000000-0000-0000-0000-000000000000"
+ }
+ };
+ return appSettings;
+ },
+ updateWebAppAppSettings : function (){
+ return true;
+ },
+ updateAzureRMWebAppConfigDetails: function() {
+ console.log("Successfully updated scmType to VSTSRM");
+ },
+ getAzureRMWebAppMetadata: function() {
+ return {
+ properties: {}
+ }
+ },
+ updateAzureRMWebAppMetadata: function() {
+ console.log("Successfully updated Web App metadata");
+ },
+ getApplicationInsightsResources: () => {
+ return [];
+ }
+});
+
+var fs = require('fs');
+tr.registerMock('fs', {
+ createWriteStream: function (filePath, options) {
+ return {
+ "isWriteStreamObj": true,
+ "on": (event) => {
+ console.log("event: " + event + " has occurred");
+ },
+ "end" : () => { return true }
+ };
+ },
+ ReadStream: fs.ReadStream,
+ WriteStream: fs.WriteStream,
+ openSync: function (fd, options) {
+ return true;
+ },
+ closeSync: function (fd) {
+ return true;
+ },
+ fsyncSync: function(fd) {
+ return true;
+ }
+});
+
+tr.setAnswers(a);
+tr.run();
\ No newline at end of file
diff --git a/_generated/AzureRmWebAppDeploymentV4/Tests/L0WindowsXdtTransformation.ts b/_generated/AzureRmWebAppDeploymentV4/Tests/L0WindowsXdtTransformation.ts
new file mode 100644
index 000000000000..c0a9e1693f38
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/Tests/L0WindowsXdtTransformation.ts
@@ -0,0 +1,278 @@
+import ma = require('azure-pipelines-task-lib/mock-answer');
+import tmrm = require('azure-pipelines-task-lib/mock-run');
+import path = require('path');
+
+let taskPath = path.join(__dirname, '..', 'azurermwebappdeployment.js');
+let tr: tmrm.TaskMockRunner = new tmrm.TaskMockRunner(taskPath);
+tr.setInput('ConnectedServiceName', 'AzureRMSpn');
+tr.setInput('WebAppName', 'mytestapp');
+tr.setInput('Package', 'webAppPkg.zip');
+tr.setInput('UseWebDeploy', 'true');
+tr.setInput('XmlTransformation', 'true');
+
+process.env['TASK_TEST_TRACE'] = "1";
+process.env["ENDPOINT_AUTH_AzureRMSpn"] = "{\"parameters\":{\"serviceprincipalid\":\"spId\",\"serviceprincipalkey\":\"spKey\",\"tenantid\":\"tenant\"},\"scheme\":\"ServicePrincipal\"}";
+process.env["ENDPOINT_AUTH_PARAMETER_AzureRMSpn_SERVICEPRINCIPALID"] = "spId";
+process.env["ENDPOINT_AUTH_PARAMETER_AzureRMSpn_SERVICEPRINCIPALKEY"] = "spKey";
+process.env["ENDPOINT_AUTH_PARAMETER_AzureRMSpn_TENANTID"] = "tenant";
+process.env["ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONNAME"] = "sName";
+process.env["ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONID"] = "sId";
+process.env["AZURE_HTTP_USER_AGENT"] = "TFS_useragent";
+process.env["SYSTEM_DEFAULTWORKINGDIRECTORY"] = "DefaultWorkingDirectory";
+process.env["BUILD_SOURCEVERSION"] = "46da24f35850f455185b9188b4742359b537076f";
+process.env["BUILD_BUILDID"] = "1",
+process.env["RELEASE_RELEASEID"] = "1";
+process.env["BUILD_BUILDNUMBER"] = "1";
+process.env["RELEASE_RELEASENAME"] = "Release-1";
+process.env["BUILD_REPOSITORY_PROVIDER"] = "TfsGit";
+process.env["BUILD_REPOSITORY_NAME"] = "MyFirstProject";
+process.env["SYSTEM_TEAMFOUNDATIONCOLLECTIONURI"] = "https://abc.visualstudio.com/";
+process.env["SYSTEM_TEAMPROJECT"] = "MyFirstProject";
+process.env["BUILD_SOURCEVERISONAUTHOR"] = "author";
+process.env["RELEASE_RELEASEURI"] = "vstfs:///ReleaseManagement/Release/1";
+process.env["AGENT_NAME"] = "author";
+process.env['SYSTEM_DEBUG'] = 'true';
+
+// provide answers for task mock
+let a: ma.TaskLibAnswers = {
+ "which": {
+ "cmd": "cmd",
+ "msdeploy": "msdeploy",
+ "DefaultWorkingDirectory/ctt/ctt.exe": "DefaultWorkingDirectory/ctt/ctt.exe"
+ },
+ "stats": {
+ "webAppPkg.zip": {
+ "isFile": true
+ }
+ },
+ "osType": {
+ "osType": "Windows"
+ },
+ "checkPath": {
+ "cmd": true,
+ "webAppPkg.zip": true,
+ "webAppPkg": true,
+ "msdeploy": true,
+ "DefaultWorkingDirectory/ctt/ctt.exe": true
+ },
+ "exec": {
+ "DefaultWorkingDirectory/ctt/ctt.exe s:C:\\tempFolder\\web.config t:C:\\tempFolder\\web.Release.config d:C:\\tempFolder\\web.config pw i verbose": {
+ "code": 0,
+ "stdout": "ctt execution successful"
+ },
+ "msdeploy -verb:sync -source:package=\'DefaultWorkingDirectory\\temp_web_package.zip\' -dest:auto,ComputerName=\'https://mytestappKuduUrl/msdeploy.axd?site=mytestapp\',UserName=\'$mytestapp\',Password=\'mytestappPwd\',AuthType=\'Basic\' -setParam:name=\'IIS Web Application Name\',value=\'mytestapp\' -enableRule:DoNotDeleteRule -userAgent:TFS_useragent": {
+ "code": 0,
+ "stdout": "Executed Successfully"
+ }
+ },
+ "rmRF": {
+ "temp_web_package_random_path": {
+ "success": true
+ },
+ "DefaultWorkingDirectory\\temp_web_package.zip": {
+ "success": true
+ }
+ },
+ "exist": {
+ "webAppPkg.zip": true,
+ "webAppPkg": true
+ },
+ "findMatch": {
+ "webAppPkgPattern" : ["webAppPkg1", "webAppPkg2"],
+ "Invalid_webAppPkg" : [],
+ "webAppPkg.zip": ["webAppPkg.zip"],
+ "webAppPkg": ["webAppPkg"],
+ "**/*.config": ["C:\\tempFolder\\web.config", "C:\\tempFolder\\web.Release.config", "C:\\tempFolder\\web.Debug.config"]
+ },
+ "getVariable": {
+ "ENDPOINT_AUTH_AzureRMSpn": "{\"parameters\":{\"serviceprincipalid\":\"spId\",\"serviceprincipalkey\":\"spKey\",\"tenantid\":\"tenant\"},\"scheme\":\"ServicePrincipal\"}",
+ "ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONNAME": "sName",
+ "ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONID": "sId",
+ "AZURE_HTTP_USER_AGENT": "TFS_useragent",
+ "System.DefaultWorkingDirectory": "DefaultWorkingDirectory",
+ "build.sourceVersion": "46da24f35850f455185b9188b4742359b537076f",
+ "build.buildId": 1,
+ "release.releaseId": 1,
+ "build.buildNumber": 1,
+ "release.releaseName": "Release-1",
+ "build.repository.provider": "TfsGit",
+ "build.repository.name": "MyFirstProject",
+ "system.TeamFoundationCollectionUri": "https://abc.visualstudio.com/",
+ "system.teamProject": "MyFirstProject",
+ "build.sourceVersionAuthor": "author",
+ "release.releaseUri": "vstfs:///ReleaseManagement/Release/1",
+ "agent.name": "agent"
+ }
+};
+
+var kuduDeploymentLog = require('azurerest-common/kududeploymentstatusutility.js');
+var msDeployUtility = require('azure-pipelines-tasks-webdeployment-common/msdeployutility.js');
+tr.registerMock('./msdeployutility.js', {
+ getMSDeployCmdArgs : msDeployUtility.getMSDeployCmdArgs,
+ getMSDeployFullPath : function() {
+ var msDeployFullPath = "msdeploypath\\msdeploy.exe";
+ return msDeployFullPath;
+ }
+});
+
+tr.registerMock('azurerest-common/azurerestutility.js', {
+ getAzureRMWebAppPublishProfile: function(SPN, webAppName, resourceGroupName, deployToSlotFlag, slotName) {
+ var mockPublishProfile = {
+ profileName: 'mytestapp - Web Deploy',
+ publishMethod: 'MSDeploy',
+ publishUrl: 'mytestappKuduUrl',
+ msdeploySite: 'mytestapp',
+ userName: '$mytestapp',
+ userPWD: 'mytestappPwd',
+ destinationAppUrl: 'mytestappUrl',
+ SQLServerDBConnectionString: '',
+ mySQLDBConnectionString: '',
+ hostingProviderForumLink: '',
+ controlPanelLink: '',
+ webSystem: 'WebSites'
+ };
+ if(deployToSlotFlag) {
+ mockPublishProfile.profileName = 'mytestapp-' + slotName + ' - Web Deploy';
+ mockPublishProfile.publishUrl = 'mytestappKuduUrl-' + slotName;
+ mockPublishProfile.msdeploySite = 'mytestapp__' + slotName;
+ mockPublishProfile.userName = '$mytestapp__' + slotName;
+ mockPublishProfile.userPWD = 'mytestappPwd';
+ mockPublishProfile.destinationAppUrl = 'mytestappUrl-' + slotName;
+ }
+ return mockPublishProfile;
+ },
+ getAzureRMWebAppConfigDetails: function(SPN, webAppName, resourceGroupName, deployToSlotFlag, slotName) {
+ var config = {
+ id: 'appid',
+ properties: {
+ virtualApplications: [ ['Object'], ['Object'], ['Object'] ],
+ scmType: "None"
+ }
+ }
+
+ return config;
+ },
+ updateDeploymentStatus: function(publishingProfile, isDeploymentSuccess ) {
+ if(isDeploymentSuccess) {
+ console.log('Updated history to kudu');
+ }
+ else {
+ console.log('Failed to update history to kudu');
+ }
+ var webAppPublishKuduUrl = publishingProfile.publishUrl;
+ var requestDetails = kuduDeploymentLog.getUpdateHistoryRequest(webAppPublishKuduUrl, isDeploymentSuccess);
+ requestDetails["requestBody"].author = 'author';
+ console.log("kudu log requestBody is:" + JSON.stringify(requestDetails["requestBody"]));
+ },
+ getResourceGroupName: function (SPN, webAppName) {
+ return "foobar";
+ },
+ getWebAppAppSettings : function (SPN, webAppName: string, resourceGroupName: string, deployToSlotFlag: boolean, slotName: string){
+ var appSettings = {
+ properties : {
+ MSDEPLOY_RENAME_LOCKED_FILES : '1'
+ }
+ };
+ return appSettings;
+ },
+ updateWebAppAppSettings : function (){
+ return true;
+ },
+ updateAzureRMWebAppConfigDetails: function() {
+ console.log("Successfully updated scmType to VSTSRM");
+ },
+ getAzureRMWebAppMetadata: function() {
+ return {
+ properties: {}
+ }
+ },
+ updateAzureRMWebAppMetadata: function() {
+ console.log("Successfully updated Web App metadata");
+ }
+});
+
+tr.registerMock('azure-pipelines-tasks-webdeployment-common/ziputility.js', {
+ unzip: function() {
+
+ },
+ getArchivedEntries: function(webDeployPkg) {
+ return {
+ "entries":[
+ "systemInfo.xml",
+ "parameters.xml"
+ ]
+ };
+ }
+});
+
+tr.registerMock('azure-pipelines-tasks-webdeployment-common/utility.js', {
+ isInputPkgIsFolder: function() {
+ return false;
+ },
+ fileExists: function() {
+ return true;
+ },
+ canUseWebDeploy: function() {
+ return true;
+ },
+ findfiles: function() {
+ return ['webDeployPkg']
+ },
+ generateTemporaryFolderForDeployment: function() {
+ return 'temp_web_package_random_path';
+ },
+ archiveFolderForDeployment: function() {
+ return {
+ "webDeployPkg": "DefaultWorkingDirectory\\temp_web_package.zip",
+ "tempPackagePath": "DefaultWorkingDirectory\\temp_web_package.zip"
+ };
+ },
+ isMSDeployPackage: function() {
+ return true;
+ }
+});
+
+var fs = require('fs');
+tr.registerMock('fs', {
+ createWriteStream: function (filePath, options) {
+ return {
+ "isWriteStreamObj": true,
+ "on": (event) => {
+ console.log("event: " + event + " has occurred");
+ },
+ "end" : () => { return true }
+ };
+ },
+ ReadStream: fs.ReadStream,
+ WriteStream: fs.WriteStream,
+ openSync: function (fd, options) {
+ return true;
+ },
+ closeSync: function (fd) {
+ return true;
+ },
+ fsyncSync: function(fd) {
+ return true;
+ }
+});
+
+tr.registerMock('path', {
+ win32: {
+ basename: function(filePath, extension) {
+ return path.win32.basename(filePath, extension);
+ }
+ },
+ join: function() {
+ if(arguments[arguments.length -1] === 'ctt.exe') {
+ return 'DefaultWorkingDirectory/ctt/ctt.exe';
+ }
+ var args = [];
+ for(var i=0; i < arguments.length; i += 1) {
+ args.push(arguments[i]);
+ }
+ return args.join('\\');
+ },
+ dirname: path.dirname
+});
+tr.setAnswers(a);
+tr.run();
\ No newline at end of file
diff --git a/_generated/AzureRmWebAppDeploymentV4/Tests/L0WindowsXdtTransformationFail.ts b/_generated/AzureRmWebAppDeploymentV4/Tests/L0WindowsXdtTransformationFail.ts
new file mode 100644
index 000000000000..b5c7a3c79fac
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/Tests/L0WindowsXdtTransformationFail.ts
@@ -0,0 +1,227 @@
+import ma = require('azure-pipelines-task-lib/mock-answer');
+import tmrm = require('azure-pipelines-task-lib/mock-run');
+import path = require('path');
+
+let taskPath = path.join(__dirname, '..', 'azurermwebappdeployment.js');
+let tr: tmrm.TaskMockRunner = new tmrm.TaskMockRunner(taskPath);
+tr.setInput('ConnectedServiceName', 'AzureRMSpn');
+tr.setInput('WebAppName', 'mytestapp');
+tr.setInput('Package', 'webAppPkg.zip');
+tr.setInput('UseWebDeploy', 'true');
+tr.setInput('XmlTransformation', 'true');
+
+process.env['TASK_TEST_TRACE'] = "1";
+process.env["ENDPOINT_AUTH_AzureRMSpn"] = "{\"parameters\":{\"serviceprincipalid\":\"spId\",\"serviceprincipalkey\":\"spKey\",\"tenantid\":\"tenant\"},\"scheme\":\"ServicePrincipal\"}";
+process.env["ENDPOINT_AUTH_PARAMETER_AzureRMSpn_SERVICEPRINCIPALID"] = "spId";
+process.env["ENDPOINT_AUTH_PARAMETER_AzureRMSpn_SERVICEPRINCIPALKEY"] = "spKey";
+process.env["ENDPOINT_AUTH_PARAMETER_AzureRMSpn_TENANTID"] = "tenant";
+process.env["ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONNAME"] = "sName";
+process.env["ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONID"] = "sId";
+process.env["AZURE_HTTP_USER_AGENT"] = "TFS_useragent";
+process.env["SYSTEM_DEFAULTWORKINGDIRECTORY"] = "DefaultWorkingDirectory";
+process.env["BUILD_SOURCEVERSION"] = "46da24f35850f455185b9188b4742359b537076f";
+process.env["BUILD_BUILDID"] = "1",
+process.env["RELEASE_RELEASEID"] = "1";
+process.env["BUILD_BUILDNUMBER"] = "1";
+process.env["RELEASE_RELEASENAME"] = "Release-1";
+process.env["BUILD_REPOSITORY_PROVIDER"] = "TfsGit";
+process.env["BUILD_REPOSITORY_NAME"] = "MyFirstProject";
+process.env["SYSTEM_TEAMFOUNDATIONCOLLECTIONURI"] = "https://abc.visualstudio.com/";
+process.env["SYSTEM_TEAMPROJECT"] = "MyFirstProject";
+process.env["BUILD_SOURCEVERISONAUTHOR"] = "author";
+process.env["RELEASE_RELEASEURI"] = "vstfs:///ReleaseManagement/Release/1";
+process.env["AGENT_NAME"] = "author";
+process.env['SYSTEM_DEBUG'] = "false";
+
+// provide answers for task mock
+let a: ma.TaskLibAnswers = {
+ "which": {
+ "cmd": "cmd",
+ "DefaultWorkingDirectory/ctt/ctt.exe": "DefaultWorkingDirectory/ctt/ctt.exe"
+ },
+ "stats": {
+ "webAppPkg.zip": {
+ "isFile": true
+ }
+ },
+ "osType": {
+ "osType": "Windows"
+ },
+ "checkPath": {
+ "cmd": true,
+ "webAppPkg.zip": true,
+ "webAppPkg": true,
+ "DefaultWorkingDirectory/ctt/ctt.exe": true
+ },
+ "exec": {
+ "cmd /C DefaultWorkingDirectory\\msDeployCommand.bat": {
+ "code": 0,
+ "stdout": "Executed Successfully"
+ },
+ "cmd /C DefaultWorkingDirectory\\msDeployParam.bat": {
+ "code": 0,
+ "stdout": "Executed Successfully"
+ },
+ "DefaultWorkingDirectory/ctt/ctt.exe s:C:\\tempFolder\\web.config t:C:\\tempFolder\\web.Release.config d:C:\\tempFolder\\web.config pw i": {
+ "code": 1,
+ "stderr": "ctt execution failed"
+ }
+ },
+ "exist": {
+ "webAppPkg.zip": true,
+ "webAppPkg": true
+ },
+ "findMatch": {
+ "webAppPkgPattern" : ["webAppPkg1", "webAppPkg2"],
+ "Invalid_webAppPkg" : [],
+ "webAppPkg.zip": ["webAppPkg.zip"],
+ "webAppPkg": ["webAppPkg"],
+ "**/*.config": ["C:\\tempFolder\\web.config", "C:\\tempFolder\\web.Release.config", "C:\\tempFolder\\web.Debug.config"]
+ },
+ "getVariable": {
+ "ENDPOINT_AUTH_AzureRMSpn": "{\"parameters\":{\"serviceprincipalid\":\"spId\",\"serviceprincipalkey\":\"spKey\",\"tenantid\":\"tenant\"},\"scheme\":\"ServicePrincipal\"}",
+ "ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONNAME": "sName",
+ "ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONID": "sId",
+ "AZURE_HTTP_USER_AGENT": "TFS_useragent",
+ "System.DefaultWorkingDirectory": "DefaultWorkingDirectory",
+ "build.sourceVersion": "46da24f35850f455185b9188b4742359b537076f",
+ "build.buildId": 1,
+ "release.releaseId": 1,
+ "build.buildNumber": 1,
+ "release.releaseName": "Release-1",
+ "build.repository.provider": "TfsGit",
+ "build.repository.name": "MyFirstProject",
+ "system.TeamFoundationCollectionUri": "https://abc.visualstudio.com/",
+ "system.teamProject": "MyFirstProject",
+ "build.sourceVersionAuthor": "author",
+ "release.releaseUri": "vstfs:///ReleaseManagement/Release/1",
+ "agent.name": "agent"
+ }
+};
+
+var kuduDeploymentLog = require('azurerest-common/kududeploymentstatusutility.js');
+var msDeployUtility = require('azure-pipelines-tasks-webdeployment-common/msdeployutility.js');
+tr.registerMock('./msdeployutility.js', {
+ getMSDeployCmdArgs : msDeployUtility.getMSDeployCmdArgs,
+ getMSDeployFullPath : function() {
+ var msDeployFullPath = "msdeploypath\\msdeploy.exe";
+ return msDeployFullPath;
+ }
+});
+
+tr.registerMock('azurerest-common/azurerestutility.js', {
+ getAzureRMWebAppPublishProfile: function(SPN, webAppName, resourceGroupName, deployToSlotFlag, slotName) {
+ var mockPublishProfile = {
+ profileName: 'mytestapp - Web Deploy',
+ publishMethod: 'MSDeploy',
+ publishUrl: 'mytestappKuduUrl',
+ msdeploySite: 'mytestapp',
+ userName: '$mytestapp',
+ userPWD: 'mytestappPwd',
+ destinationAppUrl: 'mytestappUrl',
+ SQLServerDBConnectionString: '',
+ mySQLDBConnectionString: '',
+ hostingProviderForumLink: '',
+ controlPanelLink: '',
+ webSystem: 'WebSites'
+ };
+ if(deployToSlotFlag) {
+ mockPublishProfile.profileName = 'mytestapp-' + slotName + ' - Web Deploy';
+ mockPublishProfile.publishUrl = 'mytestappKuduUrl-' + slotName;
+ mockPublishProfile.msdeploySite = 'mytestapp__' + slotName;
+ mockPublishProfile.userName = '$mytestapp__' + slotName;
+ mockPublishProfile.userPWD = 'mytestappPwd';
+ mockPublishProfile.destinationAppUrl = 'mytestappUrl-' + slotName;
+ }
+ return mockPublishProfile;
+ },
+ getAzureRMWebAppConfigDetails: function(SPN, webAppName, resourceGroupName, deployToSlotFlag, slotName) {
+ var config = {
+ id: 'appid',
+ properties: {
+ virtualApplications: [ ['Object'], ['Object'], ['Object'] ],
+ scmType: "None"
+ }
+ }
+
+ return config;
+ },
+ updateDeploymentStatus: function(publishingProfile, isDeploymentSuccess ) {
+ if(isDeploymentSuccess) {
+ console.log('Updated history to kudu');
+ }
+ else {
+ console.log('Failed to update history to kudu');
+ }
+ var webAppPublishKuduUrl = publishingProfile.publishUrl;
+ var requestDetails = kuduDeploymentLog.getUpdateHistoryRequest(webAppPublishKuduUrl, isDeploymentSuccess);
+ requestDetails["requestBody"].author = 'author';
+ console.log("kudu log requestBody is:" + JSON.stringify(requestDetails["requestBody"]));
+ },
+ getResourceGroupName: function (SPN, webAppName) {
+ return "foobar";
+ },
+ getWebAppAppSettings : function (SPN, webAppName: string, resourceGroupName: string, deployToSlotFlag: boolean, slotName: string){
+ var appSettings = {
+ properties : {
+ MSDEPLOY_RENAME_LOCKED_FILES : '1'
+ }
+ };
+ return appSettings;
+ },
+ updateWebAppAppSettings : function (){
+ return true;
+ },
+ updateAzureRMWebAppConfigDetails: function() {
+ console.log("Successfully updated scmType to VSTSRM");
+ }
+});
+
+tr.registerMock('azure-pipelines-tasks-webdeployment-common/utility.js', {
+ isInputPkgIsFolder: function() {
+ return false;
+ },
+ fileExists: function() {
+ return true;
+ },
+ canUseWebDeploy: function() {
+ return true;
+ },
+ findfiles: function() {
+ return ['webDeployPkg']
+ },
+ generateTemporaryFolderForDeployment: function() {
+ return 'temp_web_package_random_path';
+ },
+ archiveFolderForDeployment: function() {
+ return {
+ "webDeployPkg": "DefaultWorkingDirectory\\temp_web_package.zip",
+ "tempPackagePath": "DefaultWorkingDirectory\\temp_web_package.zip"
+ };
+ },
+ isMSDeployPackage: function() {
+ return false;
+ }
+});
+
+tr.registerMock('path', {
+ win32: {
+ basename: function(filePath, extension) {
+ return path.win32.basename(filePath, extension);
+ }
+ },
+ join: function() {
+ if(arguments[arguments.length -1] === 'ctt.exe') {
+ return 'DefaultWorkingDirectory/ctt/ctt.exe';
+ }
+ var args = [];
+ for(var i=0; i < arguments.length; i += 1) {
+ args.push(arguments[i]);
+ }
+ return args.join('\\');
+ },
+ dirname: path.dirname
+});
+
+tr.setAnswers(a);
+tr.run();
\ No newline at end of file
diff --git a/_generated/AzureRmWebAppDeploymentV4/Tests/L0XdtTransformationFailMSBuildPackage.ts b/_generated/AzureRmWebAppDeploymentV4/Tests/L0XdtTransformationFailMSBuildPackage.ts
new file mode 100644
index 000000000000..95867a366375
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/Tests/L0XdtTransformationFailMSBuildPackage.ts
@@ -0,0 +1,226 @@
+import ma = require('azure-pipelines-task-lib/mock-answer');
+import tmrm = require('azure-pipelines-task-lib/mock-run');
+import path = require('path');
+
+let taskPath = path.join(__dirname, '..', 'azurermwebappdeployment.js');
+let tr: tmrm.TaskMockRunner = new tmrm.TaskMockRunner(taskPath);
+tr.setInput('ConnectedServiceName', 'AzureRMSpn');
+tr.setInput('WebAppName', 'mytestapp');
+tr.setInput('Package', 'webAppPkg.zip');
+tr.setInput('UseWebDeploy', 'true');
+tr.setInput('XmlTransformation', 'true');
+
+process.env['TASK_TEST_TRACE'] = "1";
+process.env["ENDPOINT_AUTH_AzureRMSpn"] = "{\"parameters\":{\"serviceprincipalid\":\"spId\",\"serviceprincipalkey\":\"spKey\",\"tenantid\":\"tenant\"},\"scheme\":\"ServicePrincipal\"}";
+process.env["ENDPOINT_AUTH_PARAMETER_AzureRMSpn_SERVICEPRINCIPALID"] = "spId";
+process.env["ENDPOINT_AUTH_PARAMETER_AzureRMSpn_SERVICEPRINCIPALKEY"] = "spKey";
+process.env["ENDPOINT_AUTH_PARAMETER_AzureRMSpn_TENANTID"] = "tenant";
+process.env["ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONNAME"] = "sName";
+process.env["ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONID"] = "sId";
+process.env["AZURE_HTTP_USER_AGENT"] = "TFS_useragent";
+process.env["SYSTEM_DEFAULTWORKINGDIRECTORY"] = "DefaultWorkingDirectory";
+process.env["BUILD_SOURCEVERSION"] = "46da24f35850f455185b9188b4742359b537076f";
+process.env["BUILD_BUILDID"] = "1",
+process.env["RELEASE_RELEASEID"] = "1";
+process.env["BUILD_BUILDNUMBER"] = "1";
+process.env["RELEASE_RELEASENAME"] = "Release-1";
+process.env["BUILD_REPOSITORY_PROVIDER"] = "TfsGit";
+process.env["BUILD_REPOSITORY_NAME"] = "MyFirstProject";
+process.env["SYSTEM_TEAMFOUNDATIONCOLLECTIONURI"] = "https://abc.visualstudio.com/";
+process.env["SYSTEM_TEAMPROJECT"] = "MyFirstProject";
+process.env["BUILD_SOURCEVERISONAUTHOR"] = "author";
+process.env["RELEASE_RELEASEURI"] = "vstfs:///ReleaseManagement/Release/1";
+process.env["AGENT_NAME"] = "author";
+
+// provide answers for task mock
+let a: ma.TaskLibAnswers = {
+ "which": {
+ "cmd": "cmd",
+ "DefaultWorkingDirectory/ctt/ctt.exe": "DefaultWorkingDirectory/ctt/ctt.exe"
+ },
+ "stats": {
+ "webAppPkg.zip": {
+ "isFile": true
+ }
+ },
+ "osType": {
+ "osType": "Windows"
+ },
+ "checkPath": {
+ "cmd": true,
+ "webAppPkg.zip": true,
+ "webAppPkg": true,
+ "DefaultWorkingDirectory/ctt/ctt.exe": true
+ },
+ "exec": {
+ "cmd /C DefaultWorkingDirectory\\msDeployCommand.bat": {
+ "code": 0,
+ "stdout": "Executed Successfully"
+ },
+ "cmd /C DefaultWorkingDirectory\\msDeployParam.bat": {
+ "code": 0,
+ "stdout": "Executed Successfully"
+ },
+ "DefaultWorkingDirectory/ctt/ctt.exe s:C:\\tempFolder\\web.config t:C:\\tempFolder\\web.Release.config d:C:\\tempFolder\\web.config pw": {
+ "code": 1,
+ "stderr": "ctt execution failed"
+ }
+ },
+ "exist": {
+ "webAppPkg.zip": true,
+ "webAppPkg": true
+ },
+ "findMatch": {
+ "webAppPkgPattern" : ["webAppPkg1", "webAppPkg2"],
+ "Invalid_webAppPkg" : [],
+ "webAppPkg.zip": ["webAppPkg.zip"],
+ "webAppPkg": ["webAppPkg"],
+ "**/*.config": ["C:\\tempFolder\\web.config"]
+ },
+ "getVariable": {
+ "ENDPOINT_AUTH_AzureRMSpn": "{\"parameters\":{\"serviceprincipalid\":\"spId\",\"serviceprincipalkey\":\"spKey\",\"tenantid\":\"tenant\"},\"scheme\":\"ServicePrincipal\"}",
+ "ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONNAME": "sName",
+ "ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONID": "sId",
+ "AZURE_HTTP_USER_AGENT": "TFS_useragent",
+ "System.DefaultWorkingDirectory": "DefaultWorkingDirectory",
+ "build.sourceVersion": "46da24f35850f455185b9188b4742359b537076f",
+ "build.buildId": 1,
+ "release.releaseId": 1,
+ "build.buildNumber": 1,
+ "release.releaseName": "Release-1",
+ "build.repository.provider": "TfsGit",
+ "build.repository.name": "MyFirstProject",
+ "system.TeamFoundationCollectionUri": "https://abc.visualstudio.com/",
+ "system.teamProject": "MyFirstProject",
+ "build.sourceVersionAuthor": "author",
+ "release.releaseUri": "vstfs:///ReleaseManagement/Release/1",
+ "agent.name": "agent"
+ }
+};
+
+var kuduDeploymentLog = require('azurerest-common/kududeploymentstatusutility.js');
+var msDeployUtility = require('azure-pipelines-tasks-webdeployment-common/msdeployutility.js');
+tr.registerMock('./msdeployutility.js', {
+ getMSDeployCmdArgs : msDeployUtility.getMSDeployCmdArgs,
+ getMSDeployFullPath : function() {
+ var msDeployFullPath = "msdeploypath\\msdeploy.exe";
+ return msDeployFullPath;
+ }
+});
+
+tr.registerMock('azurerest-common/azurerestutility.js', {
+ getAzureRMWebAppPublishProfile: function(SPN, webAppName, resourceGroupName, deployToSlotFlag, slotName) {
+ var mockPublishProfile = {
+ profileName: 'mytestapp - Web Deploy',
+ publishMethod: 'MSDeploy',
+ publishUrl: 'mytestappKuduUrl',
+ msdeploySite: 'mytestapp',
+ userName: '$mytestapp',
+ userPWD: 'mytestappPwd',
+ destinationAppUrl: 'mytestappUrl',
+ SQLServerDBConnectionString: '',
+ mySQLDBConnectionString: '',
+ hostingProviderForumLink: '',
+ controlPanelLink: '',
+ webSystem: 'WebSites'
+ };
+ if(deployToSlotFlag) {
+ mockPublishProfile.profileName = 'mytestapp-' + slotName + ' - Web Deploy';
+ mockPublishProfile.publishUrl = 'mytestappKuduUrl-' + slotName;
+ mockPublishProfile.msdeploySite = 'mytestapp__' + slotName;
+ mockPublishProfile.userName = '$mytestapp__' + slotName;
+ mockPublishProfile.userPWD = 'mytestappPwd';
+ mockPublishProfile.destinationAppUrl = 'mytestappUrl-' + slotName;
+ }
+ return mockPublishProfile;
+ },
+ getAzureRMWebAppConfigDetails: function(SPN, webAppName, resourceGroupName, deployToSlotFlag, slotName) {
+ var config = {
+ id: 'appid',
+ properties: {
+ virtualApplications: [ ['Object'], ['Object'], ['Object'] ],
+ scmType: "None"
+ }
+ }
+
+ return config;
+ },
+ updateDeploymentStatus: function(publishingProfile, isDeploymentSuccess ) {
+ if(isDeploymentSuccess) {
+ console.log('Updated history to kudu');
+ }
+ else {
+ console.log('Failed to update history to kudu');
+ }
+ var webAppPublishKuduUrl = publishingProfile.publishUrl;
+ var requestDetails = kuduDeploymentLog.getUpdateHistoryRequest(webAppPublishKuduUrl, isDeploymentSuccess);
+ requestDetails["requestBody"].author = 'author';
+ console.log("kudu log requestBody is:" + JSON.stringify(requestDetails["requestBody"]));
+ },
+ getResourceGroupName: function (SPN, webAppName) {
+ return "foobar";
+ },
+ getWebAppAppSettings : function (SPN, webAppName: string, resourceGroupName: string, deployToSlotFlag: boolean, slotName: string){
+ var appSettings = {
+ properties : {
+ MSDEPLOY_RENAME_LOCKED_FILES : '1'
+ }
+ };
+ return appSettings;
+ },
+ updateWebAppAppSettings : function (){
+ return true;
+ },
+ updateAzureRMWebAppConfigDetails: function() {
+ console.log("Successfully updated scmType to VSTSRM");
+ }
+});
+
+tr.registerMock('azure-pipelines-tasks-webdeployment-common/utility.js', {
+ isInputPkgIsFolder: function() {
+ return false;
+ },
+ fileExists: function() {
+ return true;
+ },
+ canUseWebDeploy: function() {
+ return true;
+ },
+ findfiles: function() {
+ return ['webDeployPkg']
+ },
+ generateTemporaryFolderForDeployment: function() {
+ return 'temp_web_package_random_path';
+ },
+ archiveFolderForDeployment: function() {
+ return {
+ "webDeployPkg": "DefaultWorkingDirectory\\temp_web_package.zip",
+ "tempPackagePath": "DefaultWorkingDirectory\\temp_web_package.zip"
+ };
+ },
+ isMSDeployPackage: function() {
+ return false;
+ }
+});
+
+tr.registerMock('path', {
+ win32: {
+ basename: function(filePath, extension) {
+ return path.win32.basename(filePath, extension);
+ }
+ },
+ join: function() {
+ if(arguments[arguments.length -1] === 'ctt.exe') {
+ return 'DefaultWorkingDirectory/ctt/ctt.exe';
+ }
+ var args = [];
+ for(var i=0; i < arguments.length; i += 1) {
+ args.push(arguments[i]);
+ }
+ return args.join('\\');
+ },
+ dirname: path.dirname
+});
+
+tr.setAnswers(a);
+tr.run();
\ No newline at end of file
diff --git a/_generated/AzureRmWebAppDeploymentV4/Tests/PublishProfileWebAppDeploymentProviderL0Tests.ts b/_generated/AzureRmWebAppDeploymentV4/Tests/PublishProfileWebAppDeploymentProviderL0Tests.ts
new file mode 100644
index 000000000000..73aeb2693678
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/Tests/PublishProfileWebAppDeploymentProviderL0Tests.ts
@@ -0,0 +1,56 @@
+import tl = require('azure-pipelines-task-lib');
+import { PublishProfileWebAppDeploymentProvider } from '../deploymentProvider/PublishProfileWebAppDeploymentProvider'
+import { TaskParametersUtility, TaskParameters } from '../operations/TaskParameters';
+import { getMockEndpoint } from '../node_modules/azure-pipelines-tasks-azure-arm-rest/Tests/mock_utils';
+import { mockAzureARMPreDeploymentSteps, mockRunFromZipSettings } from "./mock_utils";
+
+getMockEndpoint();
+mockAzureARMPreDeploymentSteps();
+mockRunFromZipSettings();
+
+export class PublishProfileWebAppDeploymentProviderL0Tests {
+
+ public static async startPublishProfileWebAppDeploymentProviderL0Tests() {
+ await PublishProfileWebAppDeploymentProviderL0Tests.testForPreDeploymentSteps_PublishProfileProvider();
+ await PublishProfileWebAppDeploymentProviderL0Tests.testForUpdateDeploymentStatus_PublishProfileProvider();
+ await PublishProfileWebAppDeploymentProviderL0Tests.testForDeployWebAppStep_PublishProfileProvider();
+ }
+
+ public static async testForPreDeploymentSteps_PublishProfileProvider() {
+ try {
+ var taskParameters: TaskParameters = TaskParametersUtility.getParameters();
+ var publishProfileWebAppDeploymentProvider : PublishProfileWebAppDeploymentProvider = new PublishProfileWebAppDeploymentProvider(taskParameters);
+ await publishProfileWebAppDeploymentProvider.PreDeploymentStep();
+ tl.setResult(tl.TaskResult.Succeeded, 'PreDeployment steps for publish profile should succeeded');
+ } catch(error) {
+ tl.setResult(tl.TaskResult.Failed, 'PreDeployment steps for publish profile failed with error');
+ }
+ }
+
+ public static async testForUpdateDeploymentStatus_PublishProfileProvider() {
+ try {
+ var taskParameters: TaskParameters = TaskParametersUtility.getParameters();
+ var publishProfileWebAppDeploymentProvider : PublishProfileWebAppDeploymentProvider = new PublishProfileWebAppDeploymentProvider(taskParameters);
+ await publishProfileWebAppDeploymentProvider.PreDeploymentStep();
+ await publishProfileWebAppDeploymentProvider.UpdateDeploymentStatus(true);
+ tl.setResult(tl.TaskResult.Succeeded, 'UpdateDeploymentStatus for publish profile steps should succeeded');
+ } catch(error) {
+ tl.setResult(tl.TaskResult.Failed, 'UpdateDeploymentStatus for publish profile steps failed with error');
+ }
+ }
+
+ public static async testForDeployWebAppStep_PublishProfileProvider() {
+ try {
+ var taskParameters: TaskParameters = TaskParametersUtility.getParameters();
+ var publishProfileWebAppDeploymentProvider : PublishProfileWebAppDeploymentProvider = new PublishProfileWebAppDeploymentProvider(taskParameters);
+ await publishProfileWebAppDeploymentProvider.PreDeploymentStep();
+ await publishProfileWebAppDeploymentProvider.DeployWebAppStep();
+ tl.setResult(tl.TaskResult.Succeeded, 'DeployWebAppStep for publish profile steps steps should succeeded');
+ } catch(error) {
+ tl.setResult(tl.TaskResult.Failed, 'DeployWebAppStep for publish profile steps steps failed with error'+ error);
+ }
+ }
+
+}
+
+PublishProfileWebAppDeploymentProviderL0Tests.startPublishProfileWebAppDeploymentProviderL0Tests();
\ No newline at end of file
diff --git a/_generated/AzureRmWebAppDeploymentV4/Tests/PublishProfileWebAppDeploymentProviderTests.ts b/_generated/AzureRmWebAppDeploymentV4/Tests/PublishProfileWebAppDeploymentProviderTests.ts
new file mode 100644
index 000000000000..e0844fd33b28
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/Tests/PublishProfileWebAppDeploymentProviderTests.ts
@@ -0,0 +1,63 @@
+import tl = require('azure-pipelines-task-lib');
+import tmrm = require('azure-pipelines-task-lib/mock-run');
+import ma = require('azure-pipelines-task-lib/mock-answer');
+import * as path from 'path';
+import { setEndpointData, setAgentsData, mockTaskArgument } from './utils';
+
+export class PublishProfileWebAppDeploymentProviderTests {
+
+ public static startPublishProfileWebAppDeploymentProviderTests(){
+ let tp = path.join(__dirname, 'PublishProfileWebAppDeploymentProviderL0Tests.js');
+ let tr : tmrm.TaskMockRunner = new tmrm.TaskMockRunner(tp);
+ tr.setInput("ConnectionType", "PublishProfile");
+ tr.setInput('PublishProfilePath', 'publishxml.pubxml');
+ tr.setInput('PublishProfilePassword', 'password');
+ tr.setInput('Package', 'webAppPkg.zip');
+
+ setEndpointData();
+ setAgentsData();
+
+ tr.registerMock('azure-pipelines-tasks-azure-arm-rest/azure-arm-app-service-kudu', {
+ Kudu: function(A, B, C) {
+ return {
+ updateDeployment : function(D) {
+ return "MOCK_DEPLOYMENT_ID";
+ },
+ getAppSettings : function() {
+ var map: Map = new Map();
+ map.set('MSDEPLOY_RENAME_LOCKED_FILES', '1');
+ map.set('ScmType', 'ScmType');
+ map.set('WEBSITE_RUN_FROM_PACKAGE', '1');
+ return map;
+ },
+ zipDeploy: function(E, F) {
+ return '{id: "ZIP_DEPLOY_FAILED_ID", status: 3, deployer: "VSTS_ZIP_DEPLOY", author: "VSTS USER"}';
+ },
+ warDeploy: function(G, H) {
+ return '{id: "ZIP_DEPLOY_FAILED_ID", status: 3, deployer: "VSTS_ZIP_DEPLOY", author: "VSTS USER"}';
+ },
+ getDeploymentDetails: function(I) {
+ return "{ type: 'Deployment',url: 'http://MOCK_SCM_WEBSITE/api/deployments/MOCK_DEPLOYMENT_ID'}";
+ }
+ }
+ }
+ });
+
+
+ tr.registerMock('../operations/PublishProfileUtility', {
+ PublishProfileUtility: function(A) {
+ return {
+ GetPropertyValuefromPublishProfile : function(B) {
+ return "SiteUrl";
+ }
+ }
+ }
+ });
+
+ tr.setAnswers(mockTaskArgument());
+ tr.run();
+ }
+
+}
+
+PublishProfileWebAppDeploymentProviderTests.startPublishProfileWebAppDeploymentProviderTests();
diff --git a/_generated/AzureRmWebAppDeploymentV4/Tests/TaskParametersLinuxAppL0Tests.ts b/_generated/AzureRmWebAppDeploymentV4/Tests/TaskParametersLinuxAppL0Tests.ts
new file mode 100644
index 000000000000..764e7f213c03
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/Tests/TaskParametersLinuxAppL0Tests.ts
@@ -0,0 +1,34 @@
+import tl = require('azure-pipelines-task-lib');
+import { TaskParametersUtility, TaskParameters } from '../operations/TaskParameters';
+
+function ValidatePostDeploymentInput() {
+ try {
+ let taskParameters: TaskParameters = TaskParametersUtility.getParameters();
+ if (taskParameters.AppSettings.indexOf('-SCM_COMMAND_IDLE_TIMEOUT') != -1) {
+ tl.setResult(tl.TaskResult.Succeeded, 'SCM_COMMAND_IDLE_TIMEOUT variable PRESENT');
+ }
+ else {
+ tl.setResult(tl.TaskResult.Failed, 'SCM_COMMAND_IDLE_TIMEOUT variable NOT PRESENT');
+ }
+ } catch (error) {
+ tl.setResult(tl.TaskResult.Failed, error.message);
+ }
+}
+
+async function ValidateMsBuildPackage() {
+ try {
+ let taskParameters: TaskParameters = TaskParametersUtility.getParameters();
+ const isMsBuildType = await taskParameters.Package.isMSBuildPackage();
+ if (isMsBuildType) {
+ tl.setResult(tl.TaskResult.Succeeded, 'msbuild package PRESENT');
+ }
+ else {
+ tl.setResult(tl.TaskResult.Failed, 'msbuild package NOT PRESENT');
+ }
+ } catch (error) {
+ tl.setResult(tl.TaskResult.Failed, error.message);
+ }
+}
+
+ValidatePostDeploymentInput();
+ValidateMsBuildPackage();
\ No newline at end of file
diff --git a/_generated/AzureRmWebAppDeploymentV4/Tests/TaskParametersTests.ts b/_generated/AzureRmWebAppDeploymentV4/Tests/TaskParametersTests.ts
new file mode 100644
index 000000000000..9fbb4d0d4eab
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/Tests/TaskParametersTests.ts
@@ -0,0 +1,55 @@
+import tmrm = require('azure-pipelines-task-lib/mock-run');
+import { setAgentsData, setEndpointData, mockTaskArgument } from './utils';
+
+import path = require('path');
+import * as JSZip from "jszip"
+import * as uuid from 'uuid';
+import * as fs from 'fs';
+
+const tempDir = path.join(__dirname, 'temp');
+
+setEndpointData();
+
+export class TaskParametersTests {
+ public static async ValidateLinuxAppTaskParameters() {
+ let tp = path.join(__dirname, 'TaskParametersLinuxAppL0Tests.js');
+ let tr : tmrm.TaskMockRunner = new tmrm.TaskMockRunner(tp);
+ const zipFilePath = await TaskParametersTests.createSampleZipFile(tempDir);
+
+ tr.setInput("ConnectionType", "AzureRM");
+ tr.setInput('ConnectedServiceName', 'AzureRMSpn');
+ tr.setInput('WebAppName', 'mytestapp');
+ tr.setInput('Package', zipFilePath);
+ tr.setInput('UseWebDeploy', 'false');
+ tr.setInput('ImageSource', "Builtin Image");
+ tr.setInput('WebAppKind', "webAppLinux");
+ tr.setInput('RuntimeStack', "dummy|version");
+ tr.setInput('BuiltinLinuxPackage', zipFilePath);
+ tr.setInput('ScriptType', 'Inline Script');
+ tr.setInput('InlineScript','npm install --production');
+ setAgentsData()
+
+ const answers = mockTaskArgument();
+ answers.exist[zipFilePath] = true;
+ answers.stats[zipFilePath] = { "isFile": true };
+ answers.checkPath[zipFilePath] = true;
+
+ tr.setAnswers(answers);
+ tr.run();
+ }
+
+ public static async createSampleZipFile(tempDir: string): Promise {
+ const zip = new JSZip();
+ zip.file("index.html", "index");
+ zip.file("parameters.xml", "parameters");
+ zip.file("systemInfo.xml", "systemInfo");
+ zip.file("file:../s.txt", `1\n`);
+
+ const content = await zip.generateAsync({ type: "nodebuffer" });
+ const outZipPath = path.join(tempDir, `${uuid.v1()}.zip`);
+ fs.writeFileSync(outZipPath, content);
+ return outZipPath;
+ }
+}
+
+TaskParametersTests.ValidateLinuxAppTaskParameters();
\ No newline at end of file
diff --git a/_generated/AzureRmWebAppDeploymentV4/Tests/WebAppAvailabilityFailureTest.ts b/_generated/AzureRmWebAppDeploymentV4/Tests/WebAppAvailabilityFailureTest.ts
new file mode 100644
index 000000000000..d723b6482a1c
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/Tests/WebAppAvailabilityFailureTest.ts
@@ -0,0 +1,8 @@
+var nock = require('nock');
+var azureRestUtiltiy = require('azurerest-common/azurerestutility.js');
+
+nock('http://testwebapp.azurewebsites.net')
+ .get("/")
+ .reply(299, {"statusCode":"299", "statusMessage": "Fail"});
+
+azureRestUtiltiy.testAzureWebAppAvailability('http://testwebapp.azurewebsites.net',100);
\ No newline at end of file
diff --git a/_generated/AzureRmWebAppDeploymentV4/Tests/WebAppAvailabilitySuccessTest.ts b/_generated/AzureRmWebAppDeploymentV4/Tests/WebAppAvailabilitySuccessTest.ts
new file mode 100644
index 000000000000..6d56b67d8547
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/Tests/WebAppAvailabilitySuccessTest.ts
@@ -0,0 +1,8 @@
+var nock = require('nock');
+var azureRestUtiltiy = require('azurerest-common/azurerestutility.js');
+
+nock('http://testwebapp.azurewebsites.net/')
+ .get("/")
+ .reply(200, {});
+
+azureRestUtiltiy.testAzureWebAppAvailability('http://testwebapp.azurewebsites.net',100);
\ No newline at end of file
diff --git a/_generated/AzureRmWebAppDeploymentV4/Tests/WindowsWebAppRunFromZipProviderL0Tests.ts b/_generated/AzureRmWebAppDeploymentV4/Tests/WindowsWebAppRunFromZipProviderL0Tests.ts
new file mode 100644
index 000000000000..afe94231e8d6
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/Tests/WindowsWebAppRunFromZipProviderL0Tests.ts
@@ -0,0 +1,88 @@
+import tl = require('azure-pipelines-task-lib');
+import { WindowsWebAppRunFromZipProvider } from '../deploymentProvider/WindowsWebAppRunFromZipProvider'
+import { TaskParametersUtility, TaskParameters } from '../operations/TaskParameters';
+import { PackageType } from 'azure-pipelines-tasks-webdeployment-common/packageUtility';
+import { getMockEndpoint } from '../node_modules/azure-pipelines-tasks-azure-arm-rest/Tests/mock_utils';
+import { mockAzureARMPreDeploymentSteps, mockRunFromZipSettings } from "./mock_utils";
+
+getMockEndpoint();
+mockAzureARMPreDeploymentSteps();
+mockRunFromZipSettings();
+
+export class WindowsWebAppRunFromZipProviderL0Tests {
+
+ public static async startWindowsWebAppRunFromZipProviderL0Tests() {
+ await WindowsWebAppRunFromZipProviderL0Tests.testForPreDeploymentSteps_RunFromZipProvider();
+ await WindowsWebAppRunFromZipProviderL0Tests.testForPreDeploymentStepsWithSlotEnabled_RunFromZipProvider();
+ await WindowsWebAppRunFromZipProviderL0Tests.testForUpdateDeploymentStatus_RunFromZipProvider();
+ await WindowsWebAppRunFromZipProviderL0Tests.testForDeployWebAppStep_RunFromZipProvider();
+ await WindowsWebAppRunFromZipProviderL0Tests.testForDeployWebAppStepForFolder_RunFromZipProvider();
+ }
+
+ public static async testForPreDeploymentSteps_RunFromZipProvider() {
+ try {
+ var taskParameters: TaskParameters = TaskParametersUtility.getParameters();
+ var windowsWebAppRunFromZipProvider : WindowsWebAppRunFromZipProvider = new WindowsWebAppRunFromZipProvider(taskParameters);
+ await windowsWebAppRunFromZipProvider.PreDeploymentStep();
+ tl.setResult(tl.TaskResult.Succeeded, 'PreDeployment steps for run from zip should succeeded');
+ } catch(error) {
+ tl.setResult(tl.TaskResult.Failed, 'PreDeployment steps for built in run from zip failed with error');
+ }
+ }
+
+ public static async testForPreDeploymentStepsWithSlotEnabled_RunFromZipProvider() {
+ try {
+ var taskParameters: TaskParameters = TaskParametersUtility.getParameters();
+ taskParameters.DeployToSlotOrASEFlag = true;
+ taskParameters.ResourceGroupName = "MOCK_RESOURCE_GROUP_NAME";
+ var windowsWebAppRunFromZipProvider : WindowsWebAppRunFromZipProvider = new WindowsWebAppRunFromZipProvider(taskParameters);
+ await windowsWebAppRunFromZipProvider.PreDeploymentStep();
+ tl.setResult(tl.TaskResult.Succeeded, 'PreDeployment steps for run from zip with slot enabled should succeeded');
+ } catch(error) {
+ tl.setResult(tl.TaskResult.Failed, 'PreDeployment steps for run from zip with slot enabled failed with error');
+ }
+ }
+
+ public static async testForUpdateDeploymentStatus_RunFromZipProvider() {
+ try {
+ var taskParameters: TaskParameters = TaskParametersUtility.getParameters();
+ taskParameters.ScriptType = "Run Script";
+ var windowsWebAppRunFromZipProvider : WindowsWebAppRunFromZipProvider = new WindowsWebAppRunFromZipProvider(taskParameters);
+ await windowsWebAppRunFromZipProvider.PreDeploymentStep();
+ await windowsWebAppRunFromZipProvider.UpdateDeploymentStatus(true);
+ } catch(error) {
+ tl.setResult(tl.TaskResult.Failed, 'UpdateDeploymentStatus for run from zip steps should succeeded but failed with error');
+ }
+ }
+
+ public static async testForDeployWebAppStep_RunFromZipProvider() {
+ try {
+ var taskParameters: TaskParameters = TaskParametersUtility.getParameters();
+ taskParameters.Package.getPackageType = () :PackageType => {return PackageType.zip};
+ taskParameters.Package.getPath = () :string => { return "webAppPkg.zip" };
+ var windowsWebAppRunFromZipProvider : WindowsWebAppRunFromZipProvider = new WindowsWebAppRunFromZipProvider(taskParameters);
+ await windowsWebAppRunFromZipProvider.PreDeploymentStep();
+ await windowsWebAppRunFromZipProvider.DeployWebAppStep();
+ tl.setResult(tl.TaskResult.Succeeded, 'DeployWebAppStep for run from zip steps with zip package succeeded');
+ } catch(error) {
+ tl.setResult(tl.TaskResult.Failed, 'DeployWebAppStep for run from zip steps with zip package should succeeded but failed with error');
+ }
+ }
+
+ public static async testForDeployWebAppStepForFolder_RunFromZipProvider() {
+ try {
+ var taskParameters: TaskParameters = TaskParametersUtility.getParameters();
+ taskParameters.Package.getPackageType = () :PackageType => {return PackageType.folder};
+ taskParameters.Package.getPath = () :string => { return "webAppPkg" };
+ var windowsWebAppRunFromZipProvider : WindowsWebAppRunFromZipProvider = new WindowsWebAppRunFromZipProvider(taskParameters);
+ await windowsWebAppRunFromZipProvider.PreDeploymentStep();
+ await windowsWebAppRunFromZipProvider.DeployWebAppStep();
+ tl.setResult(tl.TaskResult.Succeeded, 'DeployWebAppStep for run from zip steps with folder package succeeded');
+ } catch(error) {
+ tl.setResult(tl.TaskResult.Failed, 'DeployWebAppStep for run from zip steps with folder package should succeeded but failed with error');
+ }
+ }
+
+}
+
+WindowsWebAppRunFromZipProviderL0Tests.startWindowsWebAppRunFromZipProviderL0Tests();
\ No newline at end of file
diff --git a/_generated/AzureRmWebAppDeploymentV4/Tests/WindowsWebAppRunFromZipProviderTests.ts b/_generated/AzureRmWebAppDeploymentV4/Tests/WindowsWebAppRunFromZipProviderTests.ts
new file mode 100644
index 000000000000..9f176751a5a1
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/Tests/WindowsWebAppRunFromZipProviderTests.ts
@@ -0,0 +1,82 @@
+import tmrm = require('azure-pipelines-task-lib/mock-run');
+import * as path from 'path';
+import { setEndpointData, setAgentsData, mockTaskArgument, mockTaskInputParameters } from './utils';
+
+export class WindowsWebAppRunFromZipProviderTests {
+
+ public static startWindowsWebAppRunFromZipProviderTests(){
+ let tp = path.join(__dirname, 'WindowsWebAppRunFromZipProviderL0Tests.js');
+ let tr : tmrm.TaskMockRunner = new tmrm.TaskMockRunner(tp);
+ mockTaskInputParameters(tr);
+ setEndpointData();
+ setAgentsData();
+
+
+ const kudu = {
+ updateDeployment : function(D) {
+ return "MOCK_DEPLOYMENT_ID";
+ },
+ getAppSettings : function() {
+ var map: Map = new Map();
+ map.set('MSDEPLOY_RENAME_LOCKED_FILES', '1');
+ map.set('ScmType', 'ScmType');
+ map.set('WEBSITE_RUN_FROM_PACKAGE', '1');
+ return map;
+ },
+ zipDeploy: function(E, F) {
+ return '{id: "ZIP_DEPLOY_FAILED_ID", status: 3, deployer: "VSTS_ZIP_DEPLOY", author: "VSTS USER"}';
+ },
+ warDeploy: function(G, H) {
+ return '{id: "ZIP_DEPLOY_FAILED_ID", status: 3, deployer: "VSTS_ZIP_DEPLOY", author: "VSTS USER"}';
+ },
+ getDeploymentDetails: function(I) {
+ return "{ type: 'Deployment',url: 'http://MOCK_SCM_WEBSITE/api/deployments/MOCK_DEPLOYMENT_ID'}";
+ }
+ };
+
+ const utility = {
+ getKuduService: function()
+ {
+ return Promise.resolve(kudu);
+ }
+ };
+
+ tr.registerMock('azure-pipelines-tasks-azure-arm-rest/azureAppServiceUtility', {
+ AzureAppServiceUtility: function(_) {
+ return utility;
+ }
+ });
+
+
+ tr.registerMock('azure-pipelines-tasks-webdeployment-common/utility.js', {
+ generateTemporaryFolderForDeployment: function () {
+ return "webAppPkg";
+ },
+ archiveFolderForDeployment: function() {
+ return {
+ "webDeployPkg": "webAppPkg",
+ "tempPackagePath": "webAppPkg"
+ };
+ },
+ getFileNameFromPath: function(A, B) {
+ return "webAppPkg";
+ },
+ generateTemporaryFolderOrZipPath: function(C, D) {
+ return "webAppPkg.zip";
+ }
+ });
+
+ tr.registerMock('azure-pipelines-tasks-webdeployment-common/ziputility.js', {
+ archiveFolder: function(A, B){
+ return "webAppPkg.zip";
+ }
+ });
+
+
+ tr.setAnswers(mockTaskArgument());
+ tr.run();
+ }
+
+}
+
+WindowsWebAppRunFromZipProviderTests.startWindowsWebAppRunFromZipProviderTests();
diff --git a/_generated/AzureRmWebAppDeploymentV4/Tests/WindowsWebAppWarDeployProviderL0Tests.ts b/_generated/AzureRmWebAppDeploymentV4/Tests/WindowsWebAppWarDeployProviderL0Tests.ts
new file mode 100644
index 000000000000..f6e6f446b222
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/Tests/WindowsWebAppWarDeployProviderL0Tests.ts
@@ -0,0 +1,78 @@
+import tl = require('azure-pipelines-task-lib');
+import { WindowsWebAppWarDeployProvider } from '../deploymentProvider/WindowsWebAppWarDeployProvider'
+import { TaskParametersUtility, TaskParameters } from '../operations/TaskParameters';
+import { PackageType } from 'azure-pipelines-tasks-webdeployment-common/packageUtility';
+import { getMockEndpoint } from '../node_modules/azure-pipelines-tasks-azure-arm-rest/Tests/mock_utils';
+import { mockAzureARMPreDeploymentSteps, mockRunFromZipSettings } from "./mock_utils";
+
+getMockEndpoint();
+mockAzureARMPreDeploymentSteps();
+mockRunFromZipSettings();
+
+export class WindowsWebAppWarDeployProviderL0Tests {
+
+ public static async startWindowsWebAppWarDeployProviderL0Tests() {
+ await WindowsWebAppWarDeployProviderL0Tests.testForPreDeploymentSteps_WarDeployProvider();
+ await WindowsWebAppWarDeployProviderL0Tests.testForPreDeploymentStepsWithSlotEnabled_WarDeployProvider();
+ await WindowsWebAppWarDeployProviderL0Tests.testForUpdateDeploymentStatus_WarDeployProvider();
+ await WindowsWebAppWarDeployProviderL0Tests.testForDeployWebAppStep_WarDeployProvider();
+ }
+
+ public static async testForPreDeploymentSteps_WarDeployProvider() {
+ try {
+ var taskParameters: TaskParameters = TaskParametersUtility.getParameters();
+ taskParameters.Package.getPackageType = () :PackageType => {return PackageType.war};
+ taskParameters.Package.getPath = () :string => { return "webAppPkg.war" };
+ var windowsWebAppWarDeployProvider : WindowsWebAppWarDeployProvider = new WindowsWebAppWarDeployProvider(taskParameters);
+ await windowsWebAppWarDeployProvider.PreDeploymentStep();
+ tl.setResult(tl.TaskResult.Succeeded, 'PreDeployment steps for war deploy should succeeded');
+ } catch(error) {
+ tl.setResult(tl.TaskResult.Failed, 'PreDeployment steps for war deploy failed with error');
+ }
+ }
+
+ public static async testForPreDeploymentStepsWithSlotEnabled_WarDeployProvider() {
+ try {
+ var taskParameters: TaskParameters = TaskParametersUtility.getParameters();
+ taskParameters.Package.getPackageType = () :PackageType => {return PackageType.war};
+ taskParameters.Package.getPath = () :string => { return "webAppPkg.war" };
+ taskParameters.DeployToSlotOrASEFlag = true;
+ taskParameters.ResourceGroupName = "MOCK_RESOURCE_GROUP_NAME";
+ var windowsWebAppWarDeployProvider : WindowsWebAppWarDeployProvider = new WindowsWebAppWarDeployProvider(taskParameters);
+ await windowsWebAppWarDeployProvider.PreDeploymentStep();
+ tl.setResult(tl.TaskResult.Succeeded, 'PreDeployment steps for war deploy with slot enabled should succeeded');
+ } catch(error) {
+ tl.setResult(tl.TaskResult.Failed, 'PreDeployment steps for war deploy with slot enabled failed with error');
+ }
+ }
+
+ public static async testForUpdateDeploymentStatus_WarDeployProvider() {
+ try {
+ var taskParameters: TaskParameters = TaskParametersUtility.getParameters();
+ taskParameters.Package.getPackageType = () :PackageType => {return PackageType.war};
+ taskParameters.Package.getPath = () :string => { return "webAppPkg.war" };
+ var windowsWebAppWarDeployProvider : WindowsWebAppWarDeployProvider = new WindowsWebAppWarDeployProvider(taskParameters);
+ await windowsWebAppWarDeployProvider.PreDeploymentStep();
+ await windowsWebAppWarDeployProvider.UpdateDeploymentStatus(true);
+ } catch(error) {
+ tl.setResult(tl.TaskResult.Failed, 'UpdateDeploymentStatus for war deploy steps should succeeded but failed with error');
+ }
+ }
+
+ public static async testForDeployWebAppStep_WarDeployProvider() {
+ try {
+ var taskParameters: TaskParameters = TaskParametersUtility.getParameters();
+ taskParameters.Package.getPackageType = () :PackageType => {return PackageType.war};
+ taskParameters.Package.getPath = () :string => { return "webAppPkg.war" };
+ var windowsWebAppWarDeployProvider : WindowsWebAppWarDeployProvider = new WindowsWebAppWarDeployProvider(taskParameters);
+ await windowsWebAppWarDeployProvider.PreDeploymentStep();
+ await windowsWebAppWarDeployProvider.DeployWebAppStep();
+ tl.setResult(tl.TaskResult.Succeeded, 'DeployWebAppStep for war deploy steps with war package succeeded');
+ } catch(error) {
+ tl.setResult(tl.TaskResult.Failed, 'DeployWebAppStep for war deploy steps with war package should succeeded but failed with error');
+ }
+ }
+
+}
+
+WindowsWebAppWarDeployProviderL0Tests.startWindowsWebAppWarDeployProviderL0Tests();
\ No newline at end of file
diff --git a/_generated/AzureRmWebAppDeploymentV4/Tests/WindowsWebAppWarDeployProviderTests.ts b/_generated/AzureRmWebAppDeploymentV4/Tests/WindowsWebAppWarDeployProviderTests.ts
new file mode 100644
index 000000000000..81fd7dcc2b07
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/Tests/WindowsWebAppWarDeployProviderTests.ts
@@ -0,0 +1,55 @@
+import tmrm = require('azure-pipelines-task-lib/mock-run');
+import * as path from 'path';
+import { setEndpointData, setAgentsData, mockTaskArgument, mockTaskInputParameters } from './utils';
+
+export class WindowsWebAppWarDeployProviderTests {
+
+ public static startWindowsWebAppWarDeployProviderTests(){
+ let tp = path.join(__dirname, 'WindowsWebAppWarDeployProviderL0Tests.js');
+ let tr : tmrm.TaskMockRunner = new tmrm.TaskMockRunner(tp);
+ mockTaskInputParameters(tr);
+ setEndpointData();
+ setAgentsData();
+
+ const kudu = {
+ updateDeployment : function(D) {
+ return "MOCK_DEPLOYMENT_ID";
+ },
+ getAppSettings : function() {
+ var map: Map = new Map();
+ map.set('MSDEPLOY_RENAME_LOCKED_FILES', '1');
+ map.set('ScmType', 'ScmType');
+ map.set('WEBSITE_RUN_FROM_PACKAGE', '1');
+ return map;
+ },
+ zipDeploy: function(E, F) {
+ return '{id: "ZIP_DEPLOY_FAILED_ID", status: 3, deployer: "VSTS_ZIP_DEPLOY", author: "VSTS USER"}';
+ },
+ warDeploy: function(G, H) {
+ return '{id: "ZIP_DEPLOY_FAILED_ID", status: 3, deployer: "VSTS_ZIP_DEPLOY", author: "VSTS USER"}';
+ },
+ getDeploymentDetails: function(I) {
+ return "{ type: 'Deployment',url: 'http://MOCK_SCM_WEBSITE/api/deployments/MOCK_DEPLOYMENT_ID'}";
+ }
+ };
+
+ const utility = {
+ getKuduService: function()
+ {
+ return Promise.resolve(kudu);
+ }
+ };
+
+ tr.registerMock('azure-pipelines-tasks-azure-arm-rest/azureAppServiceUtility', {
+ AzureAppServiceUtility: function(_) {
+ return utility;
+ }
+ });
+
+ tr.setAnswers(mockTaskArgument());
+ tr.run();
+ }
+
+}
+
+WindowsWebAppWarDeployProviderTests.startWindowsWebAppWarDeployProviderTests();
diff --git a/_generated/AzureRmWebAppDeploymentV4/Tests/WindowsWebAppWebDeployProviderL0Tests.ts b/_generated/AzureRmWebAppDeploymentV4/Tests/WindowsWebAppWebDeployProviderL0Tests.ts
new file mode 100644
index 000000000000..e0a2d5e9062f
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/Tests/WindowsWebAppWebDeployProviderL0Tests.ts
@@ -0,0 +1,89 @@
+import tl = require('azure-pipelines-task-lib');
+import { WindowsWebAppWebDeployProvider } from '../deploymentProvider/WindowsWebAppWebDeployProvider'
+import { TaskParametersUtility, TaskParameters } from '../operations/TaskParameters';
+import { PackageType } from 'azure-pipelines-tasks-webdeployment-common/packageUtility';
+import { getMockEndpoint } from '../node_modules/azure-pipelines-tasks-azure-arm-rest/Tests/mock_utils';
+import { mockAzureARMPreDeploymentSteps, mockZipDeploySettings } from "./mock_utils";
+
+getMockEndpoint();
+mockAzureARMPreDeploymentSteps();
+mockZipDeploySettings();
+
+export class WindowsWebAppWebDeployProviderL0Tests {
+
+ public static async startWindowsWebAppWebDeployProviderL0Tests() {
+ await WindowsWebAppWebDeployProviderL0Tests.testForPreDeploymentSteps_WebDeployProvider();
+ await WindowsWebAppWebDeployProviderL0Tests.testForPreDeploymentStepsWithSlotEnabled_WebDeployProvider();
+ await WindowsWebAppWebDeployProviderL0Tests.testForUpdateDeploymentStatus_WebDeployProvider();
+ await WindowsWebAppWebDeployProviderL0Tests.testForDeployWebAppStep_WebDeployProvider();
+ await WindowsWebAppWebDeployProviderL0Tests.testForDeployWebAppStepForVirtualApplication_WebDeployProvider();
+ }
+
+ public static async testForPreDeploymentSteps_WebDeployProvider() {
+ try {
+ var taskParameters: TaskParameters = TaskParametersUtility.getParameters();
+ var windowsWebAppWebDeployProvider : WindowsWebAppWebDeployProvider = new WindowsWebAppWebDeployProvider(taskParameters);
+ await windowsWebAppWebDeployProvider.PreDeploymentStep();
+ tl.setResult(tl.TaskResult.Succeeded, 'PreDeployment steps for web deploy should succeeded');
+ } catch(error) {
+ tl.setResult(tl.TaskResult.Failed, 'PreDeployment steps for web deploy failed with error');
+ }
+ }
+
+ public static async testForPreDeploymentStepsWithSlotEnabled_WebDeployProvider() {
+ try {
+ var taskParameters: TaskParameters = TaskParametersUtility.getParameters();
+ taskParameters.DeployToSlotOrASEFlag = true;
+ taskParameters.ResourceGroupName = "MOCK_RESOURCE_GROUP_NAME";
+ var windowsWebAppWebDeployProvider : WindowsWebAppWebDeployProvider = new WindowsWebAppWebDeployProvider(taskParameters);
+ await windowsWebAppWebDeployProvider.PreDeploymentStep();
+ tl.setResult(tl.TaskResult.Succeeded, 'PreDeployment steps for web deploy with slot enabled should succeeded');
+ } catch(error) {
+ tl.setResult(tl.TaskResult.Failed, 'PreDeployment steps for web deploy with slot enabled failed with error');
+ }
+ }
+
+ public static async testForUpdateDeploymentStatus_WebDeployProvider() {
+ try {
+ var taskParameters: TaskParameters = TaskParametersUtility.getParameters();
+ taskParameters.ScriptType = "Run Script";
+ var windowsWebAppWebDeployProvider : WindowsWebAppWebDeployProvider = new WindowsWebAppWebDeployProvider(taskParameters);
+ await windowsWebAppWebDeployProvider.PreDeploymentStep();
+ await windowsWebAppWebDeployProvider.UpdateDeploymentStatus(true);
+ } catch(error) {
+ tl.setResult(tl.TaskResult.Failed, 'UpdateDeploymentStatus for web deploy steps should succeeded but failed with error');
+ }
+ }
+
+ public static async testForDeployWebAppStep_WebDeployProvider() {
+ try {
+ var taskParameters: TaskParameters = TaskParametersUtility.getParameters();
+ taskParameters.Package.getPackageType = () :PackageType => {return PackageType.zip};
+ taskParameters.Package.getPath = () :string => { return "webAppPkg.zip" };
+ var windowsWebAppWebDeployProvider : WindowsWebAppWebDeployProvider = new WindowsWebAppWebDeployProvider(taskParameters);
+ await windowsWebAppWebDeployProvider.PreDeploymentStep();
+ await windowsWebAppWebDeployProvider.DeployWebAppStep();
+ tl.setResult(tl.TaskResult.Succeeded, 'DeployWebAppStep for web deploy steps with zip package succeeded');
+ } catch(error) {
+ tl.setResult(tl.TaskResult.Failed, 'DeployWebAppStep for web deploy steps with zip package should succeeded but failed with error');
+ }
+ }
+
+ public static async testForDeployWebAppStepForVirtualApplication_WebDeployProvider() {
+ try {
+ var taskParameters: TaskParameters = TaskParametersUtility.getParameters();
+ taskParameters.Package.getPackageType = () :PackageType => {return PackageType.zip};
+ taskParameters.Package.getPath = () :string => { return "webAppPkg.zip" };
+ taskParameters.VirtualApplication = "VirtualApplication";
+ var windowsWebAppWebDeployProvider : WindowsWebAppWebDeployProvider = new WindowsWebAppWebDeployProvider(taskParameters);
+ await windowsWebAppWebDeployProvider.PreDeploymentStep();
+ await windowsWebAppWebDeployProvider.DeployWebAppStep();
+ tl.setResult(tl.TaskResult.Succeeded, 'DeployWebAppStep for web deploy steps with virtual application with zip package succeeded');
+ } catch(error) {
+ tl.setResult(tl.TaskResult.Failed, 'DeployWebAppStep for web deploy steps with virtual application with zip package should succeeded but failed with error');
+ }
+ }
+
+}
+
+WindowsWebAppWebDeployProviderL0Tests.startWindowsWebAppWebDeployProviderL0Tests();
\ No newline at end of file
diff --git a/_generated/AzureRmWebAppDeploymentV4/Tests/WindowsWebAppWebDeployProviderTests.ts b/_generated/AzureRmWebAppDeploymentV4/Tests/WindowsWebAppWebDeployProviderTests.ts
new file mode 100644
index 000000000000..85f07ba20ebb
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/Tests/WindowsWebAppWebDeployProviderTests.ts
@@ -0,0 +1,60 @@
+import tmrm = require('azure-pipelines-task-lib/mock-run');
+import * as path from 'path';
+import { setEndpointData, setAgentsData, mockTaskArgument, mockTaskInputParameters } from './utils';
+
+export class WindowsWebAppWebDeployProviderTests {
+
+ public static startWindowsWebAppWebDeployProviderTests(){
+ let tp = path.join(__dirname, 'WindowsWebAppWebDeployProviderL0Tests.js');
+ let tr : tmrm.TaskMockRunner = new tmrm.TaskMockRunner(tp);
+ mockTaskInputParameters(tr);
+ setEndpointData();
+ setAgentsData();
+
+ const kudu = {
+ updateDeployment : function(D) {
+ return "MOCK_DEPLOYMENT_ID";
+ },
+ getAppSettings : function() {
+ var map: Map = new Map();
+ map.set('MSDEPLOY_RENAME_LOCKED_FILES', '1');
+ map.set('ScmType', 'ScmType');
+ return map;
+ },
+ zipDeploy: function(E, F) {
+ return '{id: "ZIP_DEPLOY_FAILED_ID", status: 3, deployer: "VSTS_ZIP_DEPLOY", author: "VSTS USER"}';
+ },
+ warDeploy: function(G, H) {
+ return '{id: "ZIP_DEPLOY_FAILED_ID", status: 3, deployer: "VSTS_ZIP_DEPLOY", author: "VSTS USER"}';
+ },
+ getDeploymentDetails: function(I) {
+ return "{ type: 'Deployment',url: 'http://MOCK_SCM_WEBSITE/api/deployments/MOCK_DEPLOYMENT_ID'}";
+ },
+ extractZIP: function(J, K){
+
+ },
+ listDir: function(L){
+ return "VirtualApplication";
+ }
+ };
+
+ const utility = {
+ getKuduService: function()
+ {
+ return Promise.resolve(kudu);
+ }
+ };
+
+ tr.registerMock('azure-pipelines-tasks-azure-arm-rest/azureAppServiceUtility', {
+ AzureAppServiceUtility: function(_) {
+ return utility;
+ }
+ });
+
+ tr.setAnswers(mockTaskArgument());
+ tr.run();
+ }
+
+}
+
+WindowsWebAppWebDeployProviderTests.startWindowsWebAppWebDeployProviderTests();
diff --git a/_generated/AzureRmWebAppDeploymentV4/Tests/WindowsWebAppZipDeployProviderL0Tests.ts b/_generated/AzureRmWebAppDeploymentV4/Tests/WindowsWebAppZipDeployProviderL0Tests.ts
new file mode 100644
index 000000000000..8061a036fe02
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/Tests/WindowsWebAppZipDeployProviderL0Tests.ts
@@ -0,0 +1,88 @@
+import tl = require('azure-pipelines-task-lib');
+import { WindowsWebAppZipDeployProvider } from '../deploymentProvider/WindowsWebAppZipDeployProvider'
+import { TaskParametersUtility, TaskParameters } from '../operations/TaskParameters';
+import { PackageType } from 'azure-pipelines-tasks-webdeployment-common/packageUtility';
+import { getMockEndpoint } from '../node_modules/azure-pipelines-tasks-azure-arm-rest/Tests/mock_utils';
+import { mockAzureARMPreDeploymentSteps, mockZipDeploySettings } from "./mock_utils";
+
+getMockEndpoint();
+mockAzureARMPreDeploymentSteps();
+mockZipDeploySettings();
+
+export class WindowsWebAppZipDeployProviderL0Tests {
+
+ public static async startWindowsWebAppZipDeployProviderL0Tests() {
+ await WindowsWebAppZipDeployProviderL0Tests.testForPreDeploymentSteps_ZipDeployProvider();
+ await WindowsWebAppZipDeployProviderL0Tests.testForPreDeploymentStepsWithSlotEnabled_ZipDeployProvider();
+ await WindowsWebAppZipDeployProviderL0Tests.testForUpdateDeploymentStatus_ZipDeployProvider();
+ await WindowsWebAppZipDeployProviderL0Tests.testForDeployWebAppStep_ZipDeployProvider();
+ await WindowsWebAppZipDeployProviderL0Tests.testForDeployWebAppStepForFolder_ZipDeployProvider();
+ }
+
+ public static async testForPreDeploymentSteps_ZipDeployProvider() {
+ try {
+ var taskParameters: TaskParameters = TaskParametersUtility.getParameters();
+ var windowsWebAppZipDeployProvider : WindowsWebAppZipDeployProvider = new WindowsWebAppZipDeployProvider(taskParameters);
+ await windowsWebAppZipDeployProvider.PreDeploymentStep();
+ tl.setResult(tl.TaskResult.Succeeded, 'PreDeployment steps for zip deploy should succeeded');
+ } catch(error) {
+ tl.setResult(tl.TaskResult.Failed, 'PreDeployment steps for zip deploy failed with error');
+ }
+ }
+
+ public static async testForPreDeploymentStepsWithSlotEnabled_ZipDeployProvider() {
+ try {
+ var taskParameters: TaskParameters = TaskParametersUtility.getParameters();
+ taskParameters.DeployToSlotOrASEFlag = true;
+ taskParameters.ResourceGroupName = "MOCK_RESOURCE_GROUP_NAME";
+ var windowsWebAppZipDeployProvider : WindowsWebAppZipDeployProvider = new WindowsWebAppZipDeployProvider(taskParameters);
+ await windowsWebAppZipDeployProvider.PreDeploymentStep();
+ tl.setResult(tl.TaskResult.Succeeded, 'PreDeployment steps for zip deploy with slot enabled should succeeded');
+ } catch(error) {
+ tl.setResult(tl.TaskResult.Failed, 'PreDeployment steps for zip deploy with slot enabled failed with error');
+ }
+ }
+
+ public static async testForUpdateDeploymentStatus_ZipDeployProvider() {
+ try {
+ var taskParameters: TaskParameters = TaskParametersUtility.getParameters();
+ taskParameters.ScriptType = "Run Script";
+ var windowsWebAppZipDeployProvider : WindowsWebAppZipDeployProvider = new WindowsWebAppZipDeployProvider(taskParameters);
+ await windowsWebAppZipDeployProvider.PreDeploymentStep();
+ await windowsWebAppZipDeployProvider.UpdateDeploymentStatus(true);
+ } catch(error) {
+ tl.setResult(tl.TaskResult.Failed, 'UpdateDeploymentStatus for zip deploy steps should succeeded but failed with error');
+ }
+ }
+
+ public static async testForDeployWebAppStep_ZipDeployProvider() {
+ try {
+ var taskParameters: TaskParameters = TaskParametersUtility.getParameters();
+ taskParameters.Package.getPackageType = () :PackageType => {return PackageType.zip};
+ taskParameters.Package.getPath = () :string => { return "webAppPkg.zip" };
+ var windowsWebAppZipDeployProvider : WindowsWebAppZipDeployProvider = new WindowsWebAppZipDeployProvider(taskParameters);
+ await windowsWebAppZipDeployProvider.PreDeploymentStep();
+ await windowsWebAppZipDeployProvider.DeployWebAppStep();
+ tl.setResult(tl.TaskResult.Succeeded, 'DeployWebAppStep for zip deploy steps with zip package succeeded');
+ } catch(error) {
+ tl.setResult(tl.TaskResult.Failed, 'DeployWebAppStep for zip deploy steps with zip package should succeeded but failed with error');
+ }
+ }
+
+ public static async testForDeployWebAppStepForFolder_ZipDeployProvider() {
+ try {
+ var taskParameters: TaskParameters = TaskParametersUtility.getParameters();
+ taskParameters.Package.getPackageType = () :PackageType => {return PackageType.folder};
+ taskParameters.Package.getPath = () :string => { return "webAppPkg" };
+ var windowsWebAppZipDeployProvider : WindowsWebAppZipDeployProvider = new WindowsWebAppZipDeployProvider(taskParameters);
+ await windowsWebAppZipDeployProvider.PreDeploymentStep();
+ await windowsWebAppZipDeployProvider.DeployWebAppStep();
+ tl.setResult(tl.TaskResult.Succeeded, 'DeployWebAppStep for zip deploy steps with folder package succeeded');
+ } catch(error) {
+ tl.setResult(tl.TaskResult.Failed, 'DeployWebAppStep for zip deploy steps with folder package should succeeded but failed with error');
+ }
+ }
+
+}
+
+WindowsWebAppZipDeployProviderL0Tests.startWindowsWebAppZipDeployProviderL0Tests();
\ No newline at end of file
diff --git a/_generated/AzureRmWebAppDeploymentV4/Tests/WindowsWebAppZipDeployProviderTests.ts b/_generated/AzureRmWebAppDeploymentV4/Tests/WindowsWebAppZipDeployProviderTests.ts
new file mode 100644
index 000000000000..4c012622208d
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/Tests/WindowsWebAppZipDeployProviderTests.ts
@@ -0,0 +1,79 @@
+import tmrm = require('azure-pipelines-task-lib/mock-run');
+import * as path from 'path';
+import { setEndpointData, setAgentsData, mockTaskArgument, mockTaskInputParameters } from './utils';
+
+export class WindowsWebAppZipDeployProviderTests {
+
+ public static startWindowsWebAppZipDeployProviderTests(){
+ let tp = path.join(__dirname, 'WindowsWebAppZipDeployProviderL0Tests.js');
+ let tr : tmrm.TaskMockRunner = new tmrm.TaskMockRunner(tp);
+ mockTaskInputParameters(tr);
+ setEndpointData();
+ setAgentsData();
+
+ const kudu = {
+ updateDeployment : function(D) {
+ return "MOCK_DEPLOYMENT_ID";
+ },
+ getAppSettings : function() {
+ var map: Map = new Map();
+ map.set('MSDEPLOY_RENAME_LOCKED_FILES', '1');
+ map.set('ScmType', 'ScmType');
+ return map;
+ },
+ zipDeploy: function(E, F) {
+ return '{id: "ZIP_DEPLOY_FAILED_ID", status: 3, deployer: "VSTS_ZIP_DEPLOY", author: "VSTS USER"}';
+ },
+ warDeploy: function(G, H) {
+ return '{id: "ZIP_DEPLOY_FAILED_ID", status: 3, deployer: "VSTS_ZIP_DEPLOY", author: "VSTS USER"}';
+ },
+ getDeploymentDetails: function(I) {
+ return "{ type: 'Deployment',url: 'http://MOCK_SCM_WEBSITE/api/deployments/MOCK_DEPLOYMENT_ID'}";
+ }
+ };
+
+ const utility = {
+ getKuduService: function()
+ {
+ return Promise.resolve(kudu);
+ }
+ };
+
+ tr.registerMock('azure-pipelines-tasks-azure-arm-rest/azureAppServiceUtility', {
+ AzureAppServiceUtility: function(_) {
+ return utility;
+ }
+ });
+
+ tr.registerMock('azure-pipelines-tasks-webdeployment-common/utility.js', {
+ generateTemporaryFolderForDeployment: function () {
+ return "webAppPkg";
+ },
+ archiveFolderForDeployment: function() {
+ return {
+ "webDeployPkg": "webAppPkg",
+ "tempPackagePath": "webAppPkg"
+ };
+ },
+ getFileNameFromPath: function(A, B) {
+ return "webAppPkg";
+ },
+ generateTemporaryFolderOrZipPath: function(C, D) {
+ return "webAppPkg.zip";
+ }
+ });
+
+ tr.registerMock('azure-pipelines-tasks-webdeployment-common/ziputility.js', {
+ archiveFolder: function(A, B){
+ return "webAppPkg.zip";
+ }
+ });
+
+
+ tr.setAnswers(mockTaskArgument());
+ tr.run();
+ }
+
+}
+
+WindowsWebAppZipDeployProviderTests.startWindowsWebAppZipDeployProviderTests();
diff --git a/_generated/AzureRmWebAppDeploymentV4/Tests/mock_utils.ts b/_generated/AzureRmWebAppDeploymentV4/Tests/mock_utils.ts
new file mode 100644
index 000000000000..4b4c62c316ff
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/Tests/mock_utils.ts
@@ -0,0 +1,310 @@
+export var nock = require('nock');
+
+export function mockAzureARMPreDeploymentSteps() {
+ nock('https://management.azure.com', {
+ reqheaders: {
+ "authorization": "Bearer DUMMY_ACCESS_TOKEN",
+ "content-type": "application/json; charset=utf-8",
+ "user-agent": "TFS_useragent"
+ }
+ }).get("/subscriptions/MOCK_SUBSCRIPTION_ID/resources?$filter=resourceType%20EQ%20%27Microsoft.Web%2FSites%27%20AND%20name%20EQ%20%27mytestapp%27&api-version=2016-07-01")
+ .reply(200, {
+ value: [{
+ id: "/subscriptions/MOCK_SUBSCRIPTION_ID/resourceGroups/MOCK_RESOURCE_GROUP_NAME/providers/microsoft.web/sites/mytestapp",
+ name: "MOCK_APP_INSIGHTS_NAME",
+ type: "microsoft.insights/components",
+ tags: {},
+ properties: {}
+ }]
+ }).persist();
+
+ nock('https://management.azure.com', {
+ reqheaders: {
+ "authorization": "Bearer DUMMY_ACCESS_TOKEN",
+ "content-type": "application/json; charset=utf-8",
+ "user-agent": "TFS_useragent"
+ }
+ }).post("/subscriptions/MOCK_SUBSCRIPTION_ID/resourceGroups/MOCK_RESOURCE_GROUP_NAME/providers/Microsoft.Web/sites/mytestapp/config/publishingcredentials/list?api-version=2016-08-01")
+ .reply(200, {
+ id: "/subscriptions/MOCK_SUBSCRIPTION_ID/resourceGroups/vincaAzureRG/providers/Microsoft.Web/sites/mytestapp/publishingcredentials/$mytestapp",
+ name: "mytestapp",
+ type: "Microsoft.Web/sites",
+ kind: "app",
+ location: "South Central US",
+ properties: {
+ publishingUserName: "$mytestapp",
+ publishingPassword: "MOCK_APP_SERVICE_MSDEPLOY_PASSWORD",
+ scmUri: "https://$mytestapp:MOCK_APP_SERVICE_MSDEPLOY_PASSWORD@mytestapp.scm.azurewebsites.net"
+ }
+ }).persist();
+
+ nock('https://management.azure.com', {
+ reqheaders: {
+ "authorization": "Bearer DUMMY_ACCESS_TOKEN",
+ "content-type": "application/json; charset=utf-8",
+ "user-agent": "TFS_useragent"
+ }
+ }).post("/subscriptions/MOCK_SUBSCRIPTION_ID/resourceGroups/MOCK_RESOURCE_GROUP_NAME/providers/Microsoft.Web/sites/mytestapp/publishxml?api-version=2016-08-01")
+ .reply(200,`
+
+
+ `).persist();
+
+ nock('https://$mytestapp:MOCK_APP_SERVICE_MSDEPLOY_PASSWORD@mytestapp.scm.azurewebsites.net',
+ {
+ reqheaders: {
+ "authorization": "Bearer DUMMY_ACCESS_TOKEN",
+ "content-type": "application/json; charset=utf-8",
+ "user-agent": "TFS_useragent"
+ }
+ }).
+ put('/api/deployments/MOCK_DEPLOYMENT_ID').reply(200, {
+ type: 'Deployment',
+ url: 'http://MOCK_SCM_WEBSITE/api/deployments/MOCK_DEPLOYMENT_ID'
+ });
+
+ // linux built in app
+ nock('https://management.azure.com', {
+ reqheaders: {
+ "authorization": "Bearer DUMMY_ACCESS_TOKEN",
+ "content-type": "application/json; charset=utf-8",
+ "user-agent": "TFS_useragent"
+ }
+ }).get("/subscriptions/MOCK_SUBSCRIPTION_ID/resourceGroups/MOCK_RESOURCE_GROUP_NAME/providers/Microsoft.Web/sites/mytestapp/config/web?api-version=2018-02-01")
+ .reply(200, {
+ id: "/subscriptions/MOCK_SUBSCRIPTION_ID/resourceGroups/vincaAzureRG/providers/Microsoft.Web/sites/mytestapp/config/web",
+ name: "mytestapp",
+ type: "Microsoft.Web/sites",
+ kind: "app",
+ location: "South Central US",
+ properties: {
+ "alwaysOn": true,
+ "virtualApplications": [ {"physicalPath" : "physicalPath", "virtualPath": "/virtualApplication" }]
+ }
+ }).persist();
+
+ nock('https://management.azure.com', {
+ reqheaders: {
+ "authorization": "Bearer DUMMY_ACCESS_TOKEN",
+ "content-type": "application/json; charset=utf-8",
+ "user-agent": "TFS_useragent"
+ }
+ }).patch("/subscriptions/MOCK_SUBSCRIPTION_ID/resourceGroups/MOCK_RESOURCE_GROUP_NAME/providers/Microsoft.Web/sites/mytestapp/config/web?api-version=2018-02-01")
+ .reply(200, {
+ id: "/subscriptions/MOCK_SUBSCRIPTION_ID/resourceGroups/vincaAzureRG/providers/Microsoft.Web/sites/mytestapp/config/web",
+ name: "mytestapp",
+ type: "Microsoft.Web/sites",
+ kind: "app",
+ location: "South Central US",
+ properties: {
+ "alwaysOn": true
+ }
+ }).persist();
+}
+
+export function mockLinuxAppSettings() {
+ nock('https://management.azure.com', {
+ reqheaders: {
+ "authorization": "Bearer DUMMY_ACCESS_TOKEN",
+ "content-type": "application/json; charset=utf-8",
+ "user-agent": "TFS_useragent"
+ }
+ }).post("/subscriptions/MOCK_SUBSCRIPTION_ID/resourceGroups/MOCK_RESOURCE_GROUP_NAME/providers/Microsoft.Web/sites/mytestapp/config/appsettings/list?api-version=2016-08-01")
+ .reply(200, {
+ id: "/subscriptions/MOCK_SUBSCRIPTION_ID/resourceGroups/MOCK_RESOURCE_GROUP_NAME/providers/Microsoft.Web/sites/mytestapp/config/appsettings",
+ name: "mytestapp",
+ type: "Microsoft.Web/sites/config",
+ location: "South Central US",
+ properties: {
+ "WEBSITE_NODE_DEFAULT_VERSION": "6.9.1",
+ "MSDEPLOY_RENAME_LOCKED_FILES": "1",
+ "INIT_SCRIPT":"/home/site/wwwroot/startupscript_webAppPkg.sh"
+ }
+ }).persist();
+
+ var appSettings = {
+ id: "/subscriptions/MOCK_SUBSCRIPTION_ID/resourceGroups/MOCK_RESOURCE_GROUP_NAME/providers/Microsoft.Web/sites/mytestapp/config/appsettings",
+ name: "mytestapp",
+ type: "Microsoft.Web/sites/config",
+ location: "South Central US",
+ properties: {
+ "WEBSITE_NODE_DEFAULT_VERSION":"6.9.1",
+ "MSDEPLOY_RENAME_LOCKED_FILES":"1",
+ "INIT_SCRIPT":"/home/site/wwwroot/startupscript_webAppPkg.sh"
+ }
+ };
+
+ nock('https://management.azure.com', {
+ reqheaders: {
+ "authorization": "Bearer DUMMY_ACCESS_TOKEN",
+ "content-type": "application/json; charset=utf-8",
+ "user-agent": "TFS_useragent"
+ }
+ }).put("/subscriptions/MOCK_SUBSCRIPTION_ID/resourceGroups/MOCK_RESOURCE_GROUP_NAME/providers/Microsoft.Web/sites/mytestapp/config/appsettings?api-version=2016-08-01", JSON.stringify(appSettings))
+ .reply(200, {
+ id: "/subscriptions/MOCK_SUBSCRIPTION_ID/resourceGroups/MOCK_RESOURCE_GROUP_NAME/providers/Microsoft.Web/sites/mytestapp/appsettings",
+ name: "mytestapp",
+ type: "Microsoft.Web/sites/config",
+ location: "South Central US",
+ properties: {
+ "WEBSITE_NODE_DEFAULT_VERSION": "6.9.1",
+ "MSDEPLOY_RENAME_LOCKED_FILES": "1",
+ "INIT_SCRIPT": "/home/site/wwwroot/startupscript_webAppPkg.sh"
+ }
+ }).persist();
+}
+
+export function mockRunFromZipSettings() {
+ nock('https://management.azure.com', {
+ reqheaders: {
+ "authorization": "Bearer DUMMY_ACCESS_TOKEN",
+ "content-type": "application/json; charset=utf-8",
+ "user-agent": "TFS_useragent"
+ }
+ }).post("/subscriptions/MOCK_SUBSCRIPTION_ID/resourceGroups/MOCK_RESOURCE_GROUP_NAME/providers/Microsoft.Web/sites/mytestapp/config/appsettings/list?api-version=2016-08-01")
+ .reply(200, {
+ id: "/subscriptions/MOCK_SUBSCRIPTION_ID/resourceGroups/MOCK_RESOURCE_GROUP_NAME/providers/Microsoft.Web/sites/mytestapp/config/appsettings",
+ name: "mytestapp",
+ type: "Microsoft.Web/sites/config",
+ location: "South Central US",
+ properties: {
+ "WEBSITE_NODE_DEFAULT_VERSION": "6.9.1",
+ "MSDEPLOY_RENAME_LOCKED_FILES": "1",
+ "WEBSITE_RUN_FROM_PACKAGE":"1"
+ }
+ }).persist();
+
+ var appSettings = {
+ id: "/subscriptions/MOCK_SUBSCRIPTION_ID/resourceGroups/MOCK_RESOURCE_GROUP_NAME/providers/Microsoft.Web/sites/mytestapp/config/appsettings",
+ name: "mytestapp",
+ type: "Microsoft.Web/sites/config",
+ location: "South Central US",
+ properties: {
+ "WEBSITE_NODE_DEFAULT_VERSION":"6.9.1",
+ "MSDEPLOY_RENAME_LOCKED_FILES":"1",
+ "WEBSITE_RUN_FROM_PACKAGE":"1"
+ }
+ };
+
+ nock('https://management.azure.com', {
+ reqheaders: {
+ "authorization": "Bearer DUMMY_ACCESS_TOKEN",
+ "content-type": "application/json; charset=utf-8",
+ "user-agent": "TFS_useragent"
+ }
+ }).put("/subscriptions/MOCK_SUBSCRIPTION_ID/resourceGroups/MOCK_RESOURCE_GROUP_NAME/providers/Microsoft.Web/sites/mytestapp/config/appsettings?api-version=2016-08-01", JSON.stringify(appSettings))
+ .reply(200, {
+ id: "/subscriptions/MOCK_SUBSCRIPTION_ID/resourceGroups/MOCK_RESOURCE_GROUP_NAME/providers/Microsoft.Web/sites/mytestapp/appsettings",
+ name: "mytestapp",
+ type: "Microsoft.Web/sites/config",
+ location: "South Central US",
+ properties: {
+ "WEBSITE_NODE_DEFAULT_VERSION": "6.9.1",
+ "MSDEPLOY_RENAME_LOCKED_FILES": "1",
+ "WEBSITE_RUN_FROM_PACKAGE":"1"
+ }
+ }).persist();
+}
+
+export function mockZipDeploySettings() {
+ nock('https://management.azure.com', {
+ reqheaders: {
+ "authorization": "Bearer DUMMY_ACCESS_TOKEN",
+ "content-type": "application/json; charset=utf-8",
+ "user-agent": "TFS_useragent"
+ }
+ }).post("/subscriptions/MOCK_SUBSCRIPTION_ID/resourceGroups/MOCK_RESOURCE_GROUP_NAME/providers/Microsoft.Web/sites/mytestapp/config/appsettings/list?api-version=2016-08-01")
+ .reply(200, {
+ id: "/subscriptions/MOCK_SUBSCRIPTION_ID/resourceGroups/MOCK_RESOURCE_GROUP_NAME/providers/Microsoft.Web/sites/mytestapp/config/appsettings",
+ name: "mytestapp",
+ type: "Microsoft.Web/sites/config",
+ location: "South Central US",
+ properties: {
+ "WEBSITE_NODE_DEFAULT_VERSION": "6.9.1",
+ "MSDEPLOY_RENAME_LOCKED_FILES": "1"
+ }
+ }).persist();
+
+ var appSettings = {
+ id: "/subscriptions/MOCK_SUBSCRIPTION_ID/resourceGroups/MOCK_RESOURCE_GROUP_NAME/providers/Microsoft.Web/sites/mytestapp/config/appsettings",
+ name: "mytestapp",
+ type: "Microsoft.Web/sites/config",
+ location: "South Central US",
+ properties: {
+ "WEBSITE_NODE_DEFAULT_VERSION":"6.9.1",
+ "MSDEPLOY_RENAME_LOCKED_FILES":"1"
+ }
+ };
+
+ nock('https://management.azure.com', {
+ reqheaders: {
+ "authorization": "Bearer DUMMY_ACCESS_TOKEN",
+ "content-type": "application/json; charset=utf-8",
+ "user-agent": "TFS_useragent"
+ }
+ }).put("/subscriptions/MOCK_SUBSCRIPTION_ID/resourceGroups/MOCK_RESOURCE_GROUP_NAME/providers/Microsoft.Web/sites/mytestapp/config/appsettings?api-version=2016-08-01", JSON.stringify(appSettings))
+ .reply(200, {
+ id: "/subscriptions/MOCK_SUBSCRIPTION_ID/resourceGroups/MOCK_RESOURCE_GROUP_NAME/providers/Microsoft.Web/sites/mytestapp/appsettings",
+ name: "mytestapp",
+ type: "Microsoft.Web/sites/config",
+ location: "South Central US",
+ properties: {
+ "WEBSITE_NODE_DEFAULT_VERSION": "6.9.1",
+ "MSDEPLOY_RENAME_LOCKED_FILES": "1"
+ }
+ }).persist();
+}
+
+export function mockContainerDeploySettings() {
+ nock('https://management.azure.com', {
+ reqheaders: {
+ "authorization": "Bearer DUMMY_ACCESS_TOKEN",
+ "content-type": "application/json; charset=utf-8",
+ "user-agent": "TFS_useragent"
+ }
+ }).post("/subscriptions/MOCK_SUBSCRIPTION_ID/resourceGroups/MOCK_RESOURCE_GROUP_NAME/providers/Microsoft.Web/sites/mytestapp/config/appsettings/list?api-version=2016-08-01")
+ .reply(200, {
+ id: "/subscriptions/MOCK_SUBSCRIPTION_ID/resourceGroups/MOCK_RESOURCE_GROUP_NAME/providers/Microsoft.Web/sites/mytestapp/config/appsettings",
+ name: "mytestapp",
+ type: "Microsoft.Web/sites/config",
+ location: "South Central US",
+ properties: {
+ "WEBSITE_NODE_DEFAULT_VERSION": "6.9.1",
+ "MSDEPLOY_RENAME_LOCKED_FILES": "1",
+ "DOCKER_CUSTOM_IMAGE_NAME": "dockernamespace/dockerrepository:DockerImageTag"
+ }
+ }).persist();
+
+ var appSettings = {
+ id: "/subscriptions/MOCK_SUBSCRIPTION_ID/resourceGroups/MOCK_RESOURCE_GROUP_NAME/providers/Microsoft.Web/sites/mytestapp/config/appsettings",
+ name: "mytestapp",
+ type: "Microsoft.Web/sites/config",
+ location: "South Central US",
+ properties: {
+ "WEBSITE_NODE_DEFAULT_VERSION":"6.9.1",
+ "MSDEPLOY_RENAME_LOCKED_FILES":"1",
+ "DOCKER_CUSTOM_IMAGE_NAME": "dockernamespace/dockerrepository:DockerImageTag"
+ }
+ };
+
+ nock('https://management.azure.com', {
+ reqheaders: {
+ "authorization": "Bearer DUMMY_ACCESS_TOKEN",
+ "content-type": "application/json; charset=utf-8",
+ "user-agent": "TFS_useragent"
+ }
+ }).put("/subscriptions/MOCK_SUBSCRIPTION_ID/resourceGroups/MOCK_RESOURCE_GROUP_NAME/providers/Microsoft.Web/sites/mytestapp/config/appsettings?api-version=2016-08-01", JSON.stringify(appSettings))
+ .reply(200, {
+ id: "/subscriptions/MOCK_SUBSCRIPTION_ID/resourceGroups/MOCK_RESOURCE_GROUP_NAME/providers/Microsoft.Web/sites/mytestapp/appsettings",
+ name: "mytestapp",
+ type: "Microsoft.Web/sites/config",
+ location: "South Central US",
+ properties: {
+ "WEBSITE_NODE_DEFAULT_VERSION": "6.9.1",
+ "MSDEPLOY_RENAME_LOCKED_FILES": "1",
+ "DOCKER_CUSTOM_IMAGE_NAME": "dockernamespace/dockerrepository:DockerImageTag"
+ }
+ }).persist();
+}
\ No newline at end of file
diff --git a/_generated/AzureRmWebAppDeploymentV4/Tests/package-lock.json b/_generated/AzureRmWebAppDeploymentV4/Tests/package-lock.json
new file mode 100644
index 000000000000..775b9805f39b
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/Tests/package-lock.json
@@ -0,0 +1,145 @@
+{
+ "name": "vsts-tasks-azurermappservicedeployment",
+ "version": "1.0.1",
+ "lockfileVersion": 1,
+ "requires": true,
+ "dependencies": {
+ "core-util-is": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
+ "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==",
+ "dev": true
+ },
+ "debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dev": true,
+ "requires": {
+ "ms": "2.1.2"
+ }
+ },
+ "immediate": {
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz",
+ "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==",
+ "dev": true
+ },
+ "inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "dev": true
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
+ "dev": true
+ },
+ "json-stringify-safe": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
+ "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==",
+ "dev": true
+ },
+ "jszip": {
+ "version": "3.10.1",
+ "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz",
+ "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==",
+ "dev": true,
+ "requires": {
+ "lie": "~3.3.0",
+ "pako": "~1.0.2",
+ "readable-stream": "~2.3.6",
+ "setimmediate": "^1.0.5"
+ }
+ },
+ "lie": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz",
+ "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==",
+ "dev": true,
+ "requires": {
+ "immediate": "~3.0.5"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ },
+ "nock": {
+ "version": "13.4.0",
+ "resolved": "https://registry.npmjs.org/nock/-/nock-13.4.0.tgz",
+ "integrity": "sha512-W8NVHjO/LCTNA64yxAPHV/K47LpGYcVzgKd3Q0n6owhwvD0Dgoterc25R4rnZbckJEb6Loxz1f5QMuJpJnbSyQ==",
+ "dev": true,
+ "requires": {
+ "debug": "^4.1.0",
+ "json-stringify-safe": "^5.0.1",
+ "propagate": "^2.0.0"
+ }
+ },
+ "pako": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
+ "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==",
+ "dev": true
+ },
+ "process-nextick-args": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
+ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
+ "dev": true
+ },
+ "propagate": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/propagate/-/propagate-2.0.1.tgz",
+ "integrity": "sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "dev": true
+ },
+ "setimmediate": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
+ "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==",
+ "dev": true
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
+ "dev": true
+ }
+ }
+}
diff --git a/_generated/AzureRmWebAppDeploymentV4/Tests/package.json b/_generated/AzureRmWebAppDeploymentV4/Tests/package.json
new file mode 100644
index 000000000000..756191a90e5b
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/Tests/package.json
@@ -0,0 +1,23 @@
+{
+ "name": "vsts-tasks-azurermappservicedeployment",
+ "version": "1.0.1",
+ "description": "Azure Pipelines Azure RM App Service Deployment",
+ "main": "azurermappservicedeployment.js",
+ "scripts": {
+ "test": "echo \"Error: no test specified\" && exit 1"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+ssh://git@github.com/Microsoft/azure-pipelines-tasks.git"
+ },
+ "author": "Microsoft Corporation",
+ "license": "MIT",
+ "bugs": {
+ "url": "https://github.com/Microsoft/azure-pipelines-tasks/issues"
+ },
+ "homepage": "https://github.com/Microsoft/azure-pipelines-tasks#readme",
+ "devDependencies": {
+ "jszip": "^3.10.1",
+ "nock": "^13.4.0"
+ }
+}
diff --git a/_generated/AzureRmWebAppDeploymentV4/Tests/utils.ts b/_generated/AzureRmWebAppDeploymentV4/Tests/utils.ts
new file mode 100644
index 000000000000..9b1aa18cb2c3
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/Tests/utils.ts
@@ -0,0 +1,87 @@
+import ma = require('azure-pipelines-task-lib/mock-answer');
+
+export function extendObject(output, target) {
+ output = output || {};
+
+ if (target) {
+ for (var key in target) {
+ if (target.hasOwnProperty(key)) {
+ output[key] = target[key];
+ }
+ }
+ }
+
+ return output;
+}
+
+export function setEndpointData() {
+ process.env["ENDPOINT_AUTH_AzureRMSpn"] = "{\"parameters\":{\"serviceprincipalid\":\"MOCK_SPN_ID\",\"serviceprincipalkey\":\"MOCK_SPN_KEY\",\"tenantid\":\"MOCK_TENANT_ID\"},\"scheme\":\"ServicePrincipal\"}";
+ process.env["ENDPOINT_AUTH_PARAMETER_AzureRMSpn_SERVICEPRINCIPALID"] = "MOCK_SPN_ID";
+ process.env["ENDPOINT_AUTH_PARAMETER_AzureRMSpn_SERVICEPRINCIPALKEY"] = "MOCK_SPN_KEY";
+ process.env["ENDPOINT_AUTH_PARAMETER_AzureRMSpn_TENANTID"] = "MOCK_TENANT_ID";
+ process.env["ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONNAME"] = "MOCK_SUBSCRIPTION_NAME";
+ process.env["ENDPOINT_DATA_AzureRMSpn_SUBSCRIPTIONID"] = "MOCK_SUBSCRIPTION_ID";
+ process.env["ENDPOINT_URL_AzureRMSpn"] = "https://management.azure.com/";
+ process.env["ENDPOINT_DATA_AzureRMSpn_ENVIRONMENTAUTHORITYURL"] = "https://login.windows.net/";
+ process.env["ENDPOINT_DATA_AzureRMSpn_ACTIVEDIRECTORYSERVICEENDPOINTRESOURCEID"] = "https://management.azure.com/";
+}
+
+export function setAgentsData() {
+ process.env['TASK_TEST_TRACE'] = "1";
+ process.env["AZURE_HTTP_USER_AGENT"] = "TFS_useragent";
+ process.env["SYSTEM_DEFAULTWORKINGDIRECTORY"] = "DefaultWorkingDirectory";
+ process.env["AGENT_NAME"] = "author";
+ process.env["AGENT_TEMPDIRECTORY"] = process.cwd();
+ process.env["BUILD_BUILDID"] = 'Build.BuildId';
+ process.env["USE_MSAL"] = "false";
+}
+
+export function mockTaskArgument(): ma.TaskLibAnswers{
+ // provide answers for task mock
+ let a: ma.TaskLibAnswers = {
+ "which": {
+ "cmd": "cmd"
+ },
+ "stats": {
+ "webAppPkg.zip": {
+ "isFile": true
+ },
+ "publishxml.pubxml": {
+ "isFile": true
+ },
+ "webAppPkg": {
+ "isDirectory": true
+ }
+ },
+ "osType": {
+ "osType": "Linux"
+ },
+ "checkPath": {
+ "cmd": true,
+ "webAppPkg.zip": true,
+ "publishxml.pubxml": true,
+ "publishxml": true,
+ "webAppPkg": true
+ },
+ "exist": {
+ "webAppPkg.zip": true,
+ "webAppPkg": true,
+ "publishxml.pubxml": true,
+ "publishxml": true
+ }
+ }
+
+ return a;
+}
+
+export function mockTaskInputParameters(tr) {
+ tr.setInput("ConnectionType", "AzureRM");
+ tr.setInput('ConnectedServiceName', 'AzureRMSpn');
+ tr.setInput('WebAppName', 'mytestapp');
+ tr.setInput('Package', 'webAppPkg.zip');
+ tr.setInput('UseWebDeploy', 'false');
+ tr.setInput('ImageSource', "Builtin Image");
+ tr.setInput('WebAppKind', "webAppLinux");
+ tr.setInput('RuntimeStack', "dummy|version");
+ tr.setInput('BuiltinLinuxPackage', 'webAppPkg.zip');
+}
\ No newline at end of file
diff --git a/_generated/AzureRmWebAppDeploymentV4/ThirdPartyNotices.txt b/_generated/AzureRmWebAppDeploymentV4/ThirdPartyNotices.txt
new file mode 100644
index 000000000000..23bf6b698d0c
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/ThirdPartyNotices.txt
@@ -0,0 +1,2248 @@
+
+THIRD-PARTY SOFTWARE NOTICES AND INFORMATION
+Do Not Translate or Localize
+
+Azure App Service Deploy incorporates third party material from the projects listed below. The original copyright notice and the license under which Microsoft received such third party material are set forth below. Microsoft reserves all other rights not expressly granted, whether by implication, estoppel or otherwise.
+
+1. abbrev (https://github.com/isaacs/abbrev-js)
+2. Archiver (https://github.com/archiverjs/node-archiver)
+3. archiver-utils (https://github.com/archiverjs/archiver-utils)
+4. async (https://github.com/caolan/async)
+5. balanced-match (https://github.com/juliangruber/balanced-match)
+6. binary (https://github.com/substack/node-binary)
+7. bl (Buffer List) (https://github.com/rvagg/bl)
+8. brace-expansion (https://github.com/juliangruber/brace-expansion)
+9. buffer-crc32 (https://github.com/brianloveswords/buffer-crc32)
+10. buffers (DefinitelyTyped) (https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/buffers)
+11. buffer-equal-constant-time (https://github.com/salesforce/buffer-equal-constant-time)
+12. buffer-shims (https://github.com/calvinmetcalf/buffer-shims)
+13. chainsaw (https://github.com/substack/node-chainsaw)
+14. compress-commons (https://github.com/archiverjs/node-compress-commons)
+15. concat-map (https://github.com/substack/node-concat-map)
+16. core-util-is (https://github.com/isaacs/core-util-is)
+17. Crc32-stream (https://github.com/archiverjs/node-crc32-stream)
+18. Ctt (https://ctt.codeplex.com)
+19. decompress-zip (https://github.com/bower/decompress-zip)
+20. end-of-stream (https://github.com/mafintosh/end-of-stream)
+21. fs.realpath (https://github.com/isaacs/fs.realpath)
+22. Glob (https://github.com/isaacs/node-glob)
+23. graceful-fs (https://github.com/isaacs/node-graceful-fs)
+24. hoek (https://github.com/hapijs/hoek)
+25. inflight (https://github.com/npm/inflight)
+26. inherits (https://github.com/isaacs/inherits)
+27. isarray (https://github.com/juliangruber/isarray/)
+28. isemail (https://github.com/hapijs/isemail)
+29. joi (https://github.com/hapijs/joi)
+30. jsonwebtoken (https://github.com/auth0/node-jsonwebtoken)
+31. lazystream (https://github.com/jpommerening/node-lazystream)
+32. lodash (https://lodash.com/)
+ Includes:File(s) copyright John Resig (http://ejohn.org/blog/javascript-micro-templating/)
+ Includes:File(s) copyright Laura Doktorova (https://github.com/olado/doT)
+33. lodash.once (https://github.com/lodash/lodash)
+34. Ltx (https://github.com/node-xmpp/ltx)
+35. minimatch (https://github.com/isaacs/minimatch)
+36. mkpath (https://github.com/jrajav/mkpath)
+37. Mockery (https://github.com/mfncooper/mockery)
+38. Moment (https://github.com/moment/moment)
+39. ms (https://github.com/zeit/ms)
+40. Node.js (https://nodejs.org/)
+41. node-ecdsa-sig-formatter (https://github.com/Brightspace/node-ecdsa-sig-formatter)
+42. node-jwa (https://github.com/brianloveswords/node-jwa)
+43. node-jws (https://github.com/brianloveswords/node-jws)
+44. node-tar (https://github.com/npm/node-tar/)
+45. node-uuid (https://github.com/broofa/node-uuid/)
+46. nopt (https://github.com/npm/nopt)
+47. normalize-path (https://github.com/jonschlinkert/normalize-path)
+48. OpenSSL (http://www.openssl.org)
+49. once (https://github.com/isaacs/once)
+50. path-is-absolute (https://github.com/sindresorhus/path-is-absolute)
+51. process-nextick-args (https://github.com/calvinmetcalf/process-nextick-args)
+52. Q (https://github.com/kriskowal/q)
+53. readable-stream (https://github.com/isaacs/readable-stream)
+54. safe-buffer (https://github.com/feross/safe-buffer)
+55. sax js (https://github.com/isaacs/sax-js)
+56. semver (https://github.com/npm/node-semver/)
+57. ShellJS (https://github.com/shelljs/shelljs)
+58. string_decoder (https://github.com/rvagg/string_decoder)
+59. tar-stream (https://github.com/mafintosh/tar-stream)
+60. topo (https://github.com/hapijs/topo)
+61. touch (https://github.com/isaacs/node-touch)
+62. traverse (https://github.com/substack/js-traverse)
+63. tunnel (https://github.com/koichik/node-tunnel)
+64. underscore.js (http://underscorejs.org/; https://github.com/jashkenas/underscore)
+65. util-deprecate (https://github.com/TooTallNate/util-deprecate)
+66. VSTS-task-lib (https://github.com/Microsoft/vsts-task-lib)
+67. winreg (https://github.com/fresc81/node-winreg)
+68. wrappy (https://github.com/npm/wrappy)
+69. Xml2JS (https://github.com/Leonidas-from-XIV/node-xml2js)
+70. Xmlbuilder (https://github.com/oozcitak/xmlbuilder-js)
+71. xtend (https://github.com/Raynos/xtend)
+72. zip-stream (https://github.com/archiverjs/node-zip-stream)
+73. uuid (https://github.com/kelektiv/node-uuid)
+74. @types/node (https://www.github.com/DefinitelyTyped/DefinitelyTyped.git)
+75. @types/q (https://www.github.com/DefinitelyTyped/DefinitelyTyped.git)
+76. @types/mocha (https://github.com/DefinitelyTyped/DefinitelyTyped.git)
+
+
+%% abbrev NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+The ISC License
+
+Copyright (c) Isaac Z. Schlueter and Contributors
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED AS IS AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+=========================================
+END OF abbrev NOTICES, INFORMATION, AND LICENSE
+
+%% Archiver NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright (c) 2012-2014 Chris Talkington, contributors.
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+=========================================
+END OF Archiver NOTICES, INFORMATION, AND LICENSE
+
+%% archiver-utils NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright (c) 2015 Chris Talkington.
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+=========================================
+END OF archiver-utils NOTICES, INFORMATION, AND LICENSE
+
+%% async NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+
+Copyright (c) 2010-2016 Caolan McMahon
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the Software), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+=========================================
+END OF async NOTICES, INFORMATION, AND LICENSE
+
+%% balanced-match NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+(MIT)
+
+Copyright (c) 2013 Julian Gruber
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+=========================================
+END OF balanced-match NOTICES, INFORMATION, AND LICENSE
+
+%% binary NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright (c) 2012 James Halliday
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the Software), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+=========================================
+END OF binary NOTICES, INFORMATION, AND LICENSE
+
+%% bl (Buffer List) NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+The MIT License (MIT)
+Copyright (c) 2014 bl contributors
+
+bl contributors listed at https://github.com/rvagg/bl#contributors
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the Software), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+=========================================
+END OF bl (Buffer List) NOTICES, INFORMATION, AND LICENSE
+
+%% brace-expansion NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+(MIT)
+
+Copyright (c) 2013 Julian Gruber
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+=========================================
+END OF brace-expansion NOTICES, INFORMATION, AND LICENSE
+
+%% buffer-crc32 NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+The MIT License
+
+Copyright (c) 2013 Brian J. Brennan
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the
+Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
+INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
+PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
+FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+=========================================
+END OF buffer-crc32 NOTICES, INFORMATION, AND LICENSE
+
+%% buffer-equal-constant-time NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright (c) 2013, GoInstant Inc., a salesforce.com company
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+
+* Neither the name of salesforce.com, nor GoInstant, nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+=========================================
+END OF buffer-equal-constant-time NOTICES, INFORMATION, AND LICENSE
+
+%% buffers (DefinitelyTyped) NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+This project is licensed under the MIT license.
+
+Copyrights are respective of each contributor listed at the beginning of each definition file.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+=========================================
+END OF buffers (DefinitelyTyped) NOTICES, INFORMATION, AND LICENSE
+
+%% buffer-shims NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+# Copyright (c) 2016 Calvin Metcalf
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+**THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.**
+
+=========================================
+END OF buffer-shims NOTICES, INFORMATION, AND LICENSE
+
+%% chainsaw NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright 2010 James Halliday (mail@substack.net)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the Software), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+=========================================
+END OF chainsaw NOTICES, INFORMATION, AND LICENSE
+
+%% compress-commons NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright (c) 2014 Chris Talkington, contributors.
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+=========================================
+END OF compress-commons NOTICES, INFORMATION, AND LICENSE
+
+%% concat-map NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright (c) James Halliday/substack
+
+This software is released under the MIT license:
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+=========================================
+END OF concat-map NOTICES, INFORMATION, AND LICENSE
+
+%% core-util-is NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright Node.js contributors. All rights reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the Software), to
+deal in the Software without restriction, including without limitation the
+rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+IN THE SOFTWARE.
+=========================================
+END OF core-util-is NOTICES, INFORMATION, AND LICENSE
+
+%% Crc32-stream NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright (c) 2014 Chris Talkington, contributors.
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+=========================================
+END OF Crc32-stream NOTICES, INFORMATION, AND LICENSE
+
+%% Ctt NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Microsoft Public License (Ms-PL)
+
+This license governs use of the accompanying software. If you use the software, you accept this license. If you do not accept the license, do not use the software.
+
+1. Definitions
+
+The terms "reproduce," "reproduction," "derivative works," and "distribution" have the same meaning here as under U.S. copyright law.
+
+A "contribution" is the original software, or any additions or changes to the software.
+
+A "contributor" is any person that distributes its contribution under this license.
+
+"Licensed patents" are a contributor's patent claims that read directly on its contribution.
+
+2. Grant of Rights
+
+(A) Copyright Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free copyright license to reproduce its contribution, prepare derivative works of its contribution, and distribute its contribution or any derivative works that you create.
+
+(B) Patent Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free license under its licensed patents to make, have made, use, sell, offer for sale, import, and/or otherwise dispose of its contribution in the software or derivative works of the contribution in the software.
+
+3. Conditions and Limitations
+
+(A) No Trademark License- This license does not grant you rights to use any contributors' name, logo, or trademarks.
+
+(B) If you bring a patent claim against any contributor over patents that you claim are infringed by the software, your patent license from such contributor to the software ends automatically.
+
+(C) If you distribute any portion of the software, you must retain all copyright, patent, trademark, and attribution notices that are present in the software.
+
+(D) If you distribute any portion of the software in source code form, you may do so only under this license by including a complete copy of this license with your distribution. If you distribute any portion of the software in compiled or object code form, you may only do so under a license that complies with this license.
+
+(E) The software is licensed "as-is." You bear the risk of using it. The contributors give no express warranties, guarantees or conditions. You may have additional consumer rights under your local laws which this license cannot change. To the extent permitted under your local laws, the contributors exclude the implied warranties of merchantability, fitness for a particular purpose and non-infringement.
+=========================================
+END OF Ctt NOTICES, INFORMATION, AND LICENSE
+
+%% decompress-zip NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright (c) Bower Team
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the Software), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+=========================================
+END OF decompress-zip NOTICES, INFORMATION, AND LICENSE
+
+%% end-of-stream NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+The MIT License (MIT)
+
+Copyright (c) 2014 Mathias Buus
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the Software), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+=========================================
+END OF end-of-stream NOTICES, INFORMATION, AND LICENSE
+
+%% fs.realpath NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+The ISC License
+
+Copyright (c) Isaac Z. Schlueter and Contributors
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+----
+
+This library bundles a version of the `fs.realpath` and `fs.realpathSync`
+methods from Node.js v0.10 under the terms of the Node.js MIT license, as follows:
+
+ Copyright Joyent, Inc. and other Node contributors.
+
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and associated documentation files (the "Software"),
+ to deal in the Software without restriction, including without limitation
+ the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ and/or sell copies of the Software, and to permit persons to whom the
+ Software is furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in
+ all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ DEALINGS IN THE SOFTWARE.
+
+=========================================
+END OF fs.realpath NOTICES, INFORMATION, AND LICENSE
+
+%% Glob NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+The ISC License
+
+Copyright (c) Isaac Z. Schlueter and Contributors
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+=========================================
+END OF Glob NOTICES, INFORMATION, AND LICENSE
+
+%% graceful-fs NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+The ISC License
+
+Copyright (c) Isaac Z. Schlueter and Contributors
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED AS IS AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+=========================================
+END OF graceful-fs NOTICES, INFORMATION, AND LICENSE
+
+%% hoek NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+
+Copyright (c) 2011-2014, Walmart and other contributors.
+Copyright (c) 2011, Yahoo Inc.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * The names of any contributors may not be used to endorse or promote
+ products derived from this software without specific prior written
+ permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ * * *
+
+The complete list of contributors can be found at: https://github.com/hapijs/hapi/graphs/contributors
+Portions of this project were initially based on the Yahoo! Inc. Postmile project,
+published at https://github.com/yahoo/postmile.
+=========================================
+Includes code from Deep-eql
+
+Copyright (c) 2013 Jake Luer jake@alogicalparadox.com
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+=========================================
+END OF hoek NOTICES, INFORMATION, AND LICENSE
+
+%% inflight NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+The ISC License
+
+Copyright (c) Isaac Z. Schlueter
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+=========================================
+END OF inflight NOTICES, INFORMATION, AND LICENSE
+
+%% inherits NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+The ISC License
+
+Copyright (c) Isaac Z. Schlueter
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+=========================================
+END OF inherits NOTICES, INFORMATION, AND LICENSE
+
+%% isarray NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+(MIT)
+
+Copyright (c) 2013 Julian Gruber
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the Software), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+=========================================
+END OF isarray NOTICES, INFORMATION, AND LICENSE
+
+%% isemail NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright (c) 2008-2011, Dominic Sayers
+Copyright (c) 2013-2014, GlobeSherpa
+Copyright (c) 2014-2015, Eli Skeggs
+
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+- Neither the name of Dominic Sayers nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+=========================================
+END OF isemail NOTICES, INFORMATION, AND LICENSE
+
+%% joi NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright (c) 2012-2014, Walmart and other contributors.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * The names of any contributors may not be used to endorse or promote
+ products derived from this software without specific prior written
+ permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ * * *
+
+The complete list of contributors can be found at: https://github.com/hapijs/joi/graphs/contributors
+=========================================
+END OF joi NOTICES, INFORMATION, AND LICENSE
+
+%% jsonwebtoken NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+The MIT License (MIT)
+
+Copyright (c) 2015 Auth0, Inc. (http://auth0.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+=========================================
+END OF jsonwebtoken NOTICES, INFORMATION, AND LICENSE
+
+%% lazystream NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright (c) 2013 J. Pommerening, contributors.
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+=========================================
+END OF lazystream NOTICES, INFORMATION, AND LICENSE
+
+%% lodash NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright jQuery Foundation and other contributors
+
+Based on Underscore.js, copyright Jeremy Ashkenas,
+DocumentCloud and Investigative Reporters & Editors
+
+This software consists of voluntary contributions made by many
+individuals. For exact contribution history, see the revision history
+available at https://github.com/lodash/lodash
+
+The following license applies to all parts of this software except as
+documented below:
+
+====
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+====
+
+Copyright and related rights for sample code are waived via CC0. Sample
+code is defined as all source code displayed within the prose of the
+documentation.
+
+CC0: http://creativecommons.org/publicdomain/zero/1.0/
+
+====
+
+Files located in the node_modules and vendor directories are externally
+maintained libraries used by this software which have their own
+licenses; we recommend you read them, as their terms may differ from the
+terms above.
+
+=========================================
+// Based on John Resig's `tmpl` implementation (http://ejohn.org/blog/javascript-micro-templating/)
+
+Copyright 2008 John Resig
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+=========================================
+// Based on Laura Doktorova's doT.js (https://github.com/olado/doT).
+
+Copyright (c) 2011 Laura Doktorova
+
+Software includes portions from jQote2 Copyright (c) 2010 aefxx,
+http://aefxx.com/ licensed under the MIT license.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+=========================================
+END OF lodash NOTICES, INFORMATION, AND LICENSE
+
+%% lodash.once NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright jQuery Foundation and other contributors
+
+Based on Underscore.js, copyright Jeremy Ashkenas,
+DocumentCloud and Investigative Reporters & Editors
+
+This software consists of voluntary contributions made by many
+individuals. For exact contribution history, see the revision history
+available at https://github.com/lodash/lodash
+
+The following license applies to all parts of this software except as
+documented below:
+
+====
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+====
+
+Copyright and related rights for sample code are waived via CC0. Sample
+code is defined as all source code displayed within the prose of the
+documentation.
+
+CC0: http://creativecommons.org/publicdomain/zero/1.0/
+
+====
+
+Files located in the node_modules and vendor directories are externally
+maintained libraries used by this software which have their own
+licenses; we recommend you read them, as their terms may differ from the
+terms above.
+=========================================
+END OF lodash.once NOTICES, INFORMATION, AND LICENSE
+
+%% Ltx NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright (c) 2010 Stephan Maka
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+=========================================
+END OF Ltx NOTICES, INFORMATION, AND LICENSE
+
+%% minimatch NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+The ISC License
+
+Copyright (c) Isaac Z. Schlueter and Contributors
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+=========================================
+END OF minimatch NOTICES, INFORMATION, AND LICENSE
+
+%% mkpath NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright (C) 2012 Jonathan Rajavuori
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the Software), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+=========================================
+END OF mkpath NOTICES, INFORMATION, AND LICENSE
+
+%% Mockery NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyrights for code authored by Yahoo! Inc. is licensed under the following
+terms:
+
+ MIT License
+
+ Copyright (c) 2011 Yahoo! Inc. All Rights Reserved.
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to
+ deal in the Software without restriction, including without limitation the
+ rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ sell copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in
+ all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ DEALINGS IN THE SOFTWARE.
+=========================================
+END OF Mockery NOTICES, INFORMATION, AND LICENSE
+
+%% Moment NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright (c) JS Foundation and other contributors
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+=========================================
+Files with code from Closure
+
+Copyright (c) 2006 The Closure Library Authors. All Rights Reserved.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+=========================================
+END OF Moment NOTICES, INFORMATION, AND LICENSE
+
+%% ms NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+(The MIT License)
+
+Copyright (c) 2014 Guillermo Rauch
+Copyright (c) 2016 Zeit, Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the Software), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+=========================================
+END OF ms NOTICES, INFORMATION, AND LICENSE
+
+%% Node.js NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Node.js is licensed for use as follows:
+
+"""
+Copyright Node.js contributors. All rights reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to
+deal in the Software without restriction, including without limitation the
+rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+IN THE SOFTWARE.
+"""
+
+This license applies to parts of Node.js originating from the
+https://github.com/joyent/node repository:
+
+"""
+Copyright Joyent, Inc. and other Node contributors. All rights reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to
+deal in the Software without restriction, including without limitation the
+rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+IN THE SOFTWARE.
+"""
+
+The Node.js license applies to all parts of Node.js that are not externally
+maintained libraries.
+=========================================
+END OF Node.js NOTICES, INFORMATION, AND LICENSE
+
+%% node-ecdsa-sig-formatter NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+ Copyright 2015 D2L Corporation
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+=========================================
+END OF node-ecdsa-sig-formatter NOTICES, INFORMATION, AND LICENSE
+
+%% node-jwa NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright (c) 2013 Brian J. Brennan
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the
+Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
+INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
+PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
+FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+=========================================
+END OF node-jwa NOTICES, INFORMATION, AND LICENSE
+
+%% node-jws NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright (c) 2013 Brian J. Brennan
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the
+Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
+INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
+PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
+FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+=========================================
+END OF node-jws NOTICES, INFORMATION, AND LICENSE
+
+%% node-tar NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+The ISC License
+Copyright (c) Isaac Z. Schlueter and Contributors
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+=========================================
+END OF node-tar NOTICES, INFORMATION, AND LICENSE
+
+%% node-uuid NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+The MIT License (MIT)
+
+Copyright (c) 2010-2012 Robert Kieffer
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the Software), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+=========================================
+END OF node-uuid NOTICES, INFORMATION, AND LICENSE
+
+%% nopt NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+The ISC License
+
+Copyright (c) Isaac Z. Schlueter and Contributors
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED AS IS AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+=========================================
+END OF nopt NOTICES, INFORMATION, AND LICENSE
+
+%% normalize-path NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+The MIT License (MIT)
+
+Copyright (c) 2014-2015, Jon Schlinkert.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+=========================================
+END OF normalize-path NOTICES, INFORMATION, AND LICENSE
+
+%% OpenSSL NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+ LICENSE ISSUES
+ ==============
+
+ The OpenSSL toolkit stays under a dual license, i.e. both the conditions of
+ the OpenSSL License and the original SSLeay license apply to the toolkit.
+ See below for the actual license texts. Actually both licenses are BSD-style
+ Open Source licenses. In case of any license issues related to OpenSSL
+ please contact openssl-core@openssl.org.
+
+ OpenSSL License
+ ---------------
+
+/* ====================================================================
+ * Copyright (c) 1998-2011 The OpenSSL Project. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. All advertising materials mentioning features or use of this
+ * software must display the following acknowledgment:
+ * This product includes software developed by the OpenSSL Project
+ * for use in the OpenSSL Toolkit. (http://www.openssl.org/)
+ *
+ * 4. The names OpenSSL Toolkit and OpenSSL Project must not be used to
+ * endorse or promote products derived from this software without
+ * prior written permission. For written permission, please contact
+ * openssl-core@openssl.org.
+ *
+ * 5. Products derived from this software may not be called OpenSSL
+ * nor may OpenSSL appear in their names without prior written
+ * permission of the OpenSSL Project.
+ *
+ * 6. Redistributions of any form whatsoever must retain the following
+ * acknowledgment:
+ * This product includes software developed by the OpenSSL Project
+ * for use in the OpenSSL Toolkit (http://www.openssl.org/)
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
+ * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This product includes cryptographic software written by Eric Young
+ * (eay@cryptsoft.com). This product includes software written by Tim
+ * Hudson (tjh@cryptsoft.com).
+ *
+ */
+
+ Original SSLeay License
+ -----------------------
+
+/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
+ * All rights reserved.
+ *
+ * This package is an SSL implementation written
+ * by Eric Young (eay@cryptsoft.com).
+ * The implementation was written so as to conform with Netscapes SSL.
+ *
+ * This library is free for commercial and non-commercial use as long as
+ * the following conditions are aheared to. The following conditions
+ * apply to all code found in this distribution, be it the RC4, RSA,
+ * lhash, DES, etc., code; not just the SSL code. The SSL documentation
+ * included with this distribution is covered by the same copyright terms
+ * except that the holder is Tim Hudson (tjh@cryptsoft.com).
+ *
+ * Copyright remains Eric Young's, and as such any Copyright notices in
+ * the code are not to be removed.
+ * If this package is used in a product, Eric Young should be given attribution
+ * as the author of the parts of the library used.
+ * This can be in the form of a textual message at program startup or
+ * in documentation (online or textual) provided with the package.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes cryptographic software written by
+ * Eric Young (eay@cryptsoft.com)
+ * The word 'cryptographic' can be left out if the rouines from the library
+ * being used are not cryptographic related :-).
+ * 4. If you include any Windows specific code (or a derivative thereof) from
+ * the apps directory (application code) you must include an acknowledgement:
+ * This product includes software written by Tim Hudson (tjh@cryptsoft.com)
+ *
+ * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * The licence and distribution terms for any publically available version or
+ * derivative of this code cannot be changed. i.e. this code cannot simply be
+ * copied and put under another distribution licence
+ * [including the GNU Public Licence.]
+=========================================
+END OF OpenSSL NOTICES, INFORMATION, AND LICENSE
+
+%% once NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+The ISC License
+
+Copyright (c) Isaac Z. Schlueter and Contributors
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+=========================================
+END OF once NOTICES, INFORMATION, AND LICENSE
+
+%% path-is-absolute NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+path-is-absolute
+
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the Software), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+node.js:
+
+Copyright Joyent, Inc. and other Node contributors.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the
+Software), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to permit
+persons to whom the Software is furnished to do so, subject to the
+following conditions:
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
+NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+USE OR OTHER DEALINGS IN THE SOFTWARE.
+=========================================
+END OF path-is-absolute NOTICES, INFORMATION, AND LICENSE
+
+%% process-nextick-args NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright (c) 2015 Calvin Metcalf
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the Software), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+=========================================
+END OF process-nextick-args NOTICES, INFORMATION, AND LICENSE
+
+%% Q NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright 2009�2014 Kristopher Michael Kowal. All rights reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to
+deal in the Software without restriction, including without limitation the
+rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+IN THE SOFTWARE.
+
+The file q.js is prefaced by the following additional third-party subcomponent information:
+
+/*!
+ *
+ * Copyright 2009-2012 Kris Kowal under the terms of the MIT
+ * license found at http://github.com/kriskowal/q/raw/master/LICENSE
+ *
+ * With parts by Tyler Close
+ * Copyright 2007-2009 Tyler Close under the terms of the MIT X license found
+ * at http://www.opensource.org/licenses/mit-license.html
+ * Forked at ref_send.js version: 2009-05-11
+ *
+ * With parts by Mark Miller
+ * Copyright (C) 2011 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+=========================================
+END OF Q NOTICES, INFORMATION, AND LICENSE
+
+%% readable-stream NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright Joyent, Inc. and other Node contributors. All rights reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the Software), to
+deal in the Software without restriction, including without limitation the
+rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+IN THE SOFTWARE.
+=========================================
+END OF readable-stream NOTICES, INFORMATION, AND LICENSE
+
+%% safe-buffer NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+The MIT License (MIT)
+
+Copyright (c) Feross Aboukhadijeh
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+=========================================
+END OF safe-buffer NOTICES, INFORMATION, AND LICENSE
+
+
+%% sax js NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+The ISC License
+
+Copyright (c) Isaac Z. Schlueter and Contributors
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+====
+
+`String.fromCodePoint` by Mathias Bynens used according to terms of MIT
+License, as follows:
+
+ Copyright Mathias Bynens
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+=========================================
+END OF sax js NOTICES, INFORMATION, AND LICENSE
+
+%% semver NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+The ISC License
+
+Copyright (c) Isaac Z. Schlueter and Contributors
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+=========================================
+END OF semver NOTICES, INFORMATION, AND LICENSE
+
+%% ShellJS NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright (c) 2012, Artur Adib
+All rights reserved.
+
+You may use this project under the terms of the New BSD license as follows:
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of Artur Adib nor the
+ names of the contributors may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL ARTUR ADIB BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+=========================================
+END OF ShellJS NOTICES, INFORMATION, AND LICENSE
+
+%% string_decoder NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+
+Copyright Joyent, Inc. and other Node contributors.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the
+Software), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to permit
+persons to whom the Software is furnished to do so, subject to the
+following conditions:
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
+NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+USE OR OTHER DEALINGS IN THE SOFTWARE.
+=========================================
+END OF string_decoder NOTICES, INFORMATION, AND LICENSE
+
+%% tar-stream NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+The MIT License (MIT)
+
+Copyright (c) 2014 Mathias Buus
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the Software), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+=========================================
+END OF tar-stream NOTICES, INFORMATION, AND LICENSE
+
+%% topo NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright (c) 2012-2014, Walmart and other contributors.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * The names of any contributors may not be used to endorse or promote
+ products derived from this software without specific prior written
+ permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ * * *
+
+The complete list of contributors can be found at: https://github.com/hapijs/topo/graphs/contributors
+=========================================
+END OF topo NOTICES, INFORMATION, AND LICENSE
+
+%% touch NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+The ISC License
+
+Copyright (c) Isaac Z. Schlueter
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED AS IS AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+=========================================
+END OF touch NOTICES, INFORMATION, AND LICENSE
+
+%% traverse NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright 2010 James Halliday (mail@substack.net)
+
+This project is free software released under the MIT/X11 license:
+http://www.opensource.org/licenses/mit-license.php
+
+Copyright 2010 James Halliday (mail@substack.net)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the Software), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+=========================================
+END OF traverse NOTICES, INFORMATION, AND LICENSE
+
+%% tunnel NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+The MIT License (MIT)
+
+Copyright (c) 2012 Koichi Kobayashi
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+=========================================
+END OF tunnel NOTICES, INFORMATION, AND LICENSE
+
+%% underscore.js NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright (c) 2009-2017 Jeremy Ashkenas, DocumentCloud and Investigative
+Reporters & Editors
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+=========================================
+END OF underscore.js NOTICES, INFORMATION, AND LICENSE
+
+%% util-deprecate NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+(The MIT License)
+
+Copyright (c) 2014 Nathan Rajlich
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the Software), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+=========================================
+END OF util-deprecate NOTICES, INFORMATION, AND LICENSE
+
+%% VSTS-task-lib NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+The MIT License (MIT)
+
+Copyright (c) Microsoft Corporation. All rights reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+=========================================
+END OF VSTS-task-lib NOTICES, INFORMATION, AND LICENSE
+
+%% winreg NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+This project is released under BSD 2-Clause License.
+
+Copyright (c) 2016, Paul Bottin All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+ - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+ - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+=========================================
+END OF winreg NOTICES, INFORMATION, AND LICENSE
+
+%% wrappy NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+The ISC License
+
+Copyright (c) Isaac Z. Schlueter and Contributors
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+=========================================
+END OF wrappy NOTICES, INFORMATION, AND LICENSE
+
+%% Xml2JS NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright 2010, 2011, 2012, 2013. All rights reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to
+deal in the Software without restriction, including without limitation the
+rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+IN THE SOFTWARE.
+=========================================
+END OF Xml2JS NOTICES, INFORMATION, AND LICENSE
+
+%% Xmlbuilder NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+The MIT License (MIT)
+
+Copyright (c) 2013 Ozgur Ozcitak
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+=========================================
+END OF Xmlbuilder NOTICES, INFORMATION, AND LICENSE
+
+%% xtend NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright (c) 2012-2014 Raynos.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the Software), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+=========================================
+END OF xtend NOTICES, INFORMATION, AND LICENSE
+
+%% zip-stream NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright (c) 2014 Chris Talkington, contributors.
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+=========================================
+END OF zip-stream NOTICES, INFORMATION, AND LICENSE
+
+%% uuid NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright (c) 2010-2016 Robert Kieffer and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+Includes Chris Veness' SHA1
+
+Copyright (c) 2014 Chris Veness
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+=========================================
+END OF uuid NOTICES, INFORMATION, AND LICENSE
+
+%% @types/mocha NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+The MIT License (MIT)
+
+Copyright (c) Microsoft Corporation. All rights reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+=========================================
+END OF @types/mocha NOTICES, INFORMATION, AND LICENSE
+
+%% @types/node NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+MIT License
+
+Copyright (c) Microsoft Corporation. All rights reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+=========================================
+END OF @types/node NOTICES, INFORMATION, AND LICENSE
+
+%% @types/q NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+MIT License
+
+Copyright (c) Microsoft Corporation. All rights reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+=========================================
+END OF @types/q NOTICES, INFORMATION, AND LICENSE
diff --git a/_generated/AzureRmWebAppDeploymentV4/azurermwebappdeployment.ts b/_generated/AzureRmWebAppDeploymentV4/azurermwebappdeployment.ts
new file mode 100644
index 000000000000..a77a66ee795b
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/azurermwebappdeployment.ts
@@ -0,0 +1,40 @@
+import tl = require('azure-pipelines-task-lib/task');
+import path = require('path');
+import { TaskParameters, TaskParametersUtility } from './operations/TaskParameters';
+import { DeploymentFactory } from './deploymentProvider/DeploymentFactory';
+import * as Endpoint from 'azure-pipelines-tasks-azure-arm-rest/azure-arm-endpoint';
+
+async function main() {
+ let isDeploymentSuccess: boolean = true;
+
+ try {
+ tl.setResourcePath(path.join( __dirname, 'task.json'));
+ tl.setResourcePath(path.join( __dirname, 'node_modules/azure-pipelines-tasks-webdeployment-common/module.json'));
+ var taskParams: TaskParameters = TaskParametersUtility.getParameters();
+ var deploymentFactory: DeploymentFactory = new DeploymentFactory(taskParams);
+ var deploymentProvider = await deploymentFactory.GetDeploymentProvider();
+
+ tl.debug("Predeployment Step Started");
+ await deploymentProvider.PreDeploymentStep();
+
+ tl.debug("Deployment Step Started");
+
+ await deploymentProvider.DeployWebAppStep();
+
+ }
+ catch(error) {
+ tl.debug("Deployment Failed with Error: " + error);
+ isDeploymentSuccess = false;
+ tl.setResult(tl.TaskResult.Failed, error);
+ }
+ finally {
+ if(deploymentProvider != null) {
+ await deploymentProvider.UpdateDeploymentStatus(isDeploymentSuccess);
+ }
+ Endpoint.dispose();
+ tl.debug(isDeploymentSuccess ? "Deployment Succeded" : "Deployment failed");
+
+ }
+}
+
+main();
diff --git a/_generated/AzureRmWebAppDeploymentV4/deploymentProvider/AzureRmWebAppDeploymentProvider.ts b/_generated/AzureRmWebAppDeploymentV4/deploymentProvider/AzureRmWebAppDeploymentProvider.ts
new file mode 100644
index 000000000000..728449091d96
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/deploymentProvider/AzureRmWebAppDeploymentProvider.ts
@@ -0,0 +1,90 @@
+import { IWebAppDeploymentProvider } from './IWebAppDeploymentProvider';
+import { TaskParameters } from '../operations/TaskParameters';
+import { AzureRMEndpoint } from 'azure-pipelines-tasks-azure-arm-rest/azure-arm-endpoint';
+import { AzureEndpoint } from 'azure-pipelines-tasks-azure-arm-rest/azureModels';
+import { AzureResourceFilterUtility } from '../operations/AzureResourceFilterUtility';
+import { KuduServiceUtility } from '../operations/KuduServiceUtility';
+import { AzureAppService } from 'azure-pipelines-tasks-azure-arm-rest/azure-arm-app-service';
+import { Kudu } from 'azure-pipelines-tasks-azure-arm-rest/azure-arm-app-service-kudu';
+import { AzureAppServiceUtility } from '../operations/AzureAppServiceUtility';
+import tl = require('azure-pipelines-task-lib/task');
+import * as ParameterParser from 'azure-pipelines-tasks-webdeployment-common/ParameterParserUtility';
+import { addReleaseAnnotation } from '../operations/ReleaseAnnotationUtility';
+import { PackageUtility } from 'azure-pipelines-tasks-webdeployment-common/packageUtility';
+import { AzureDeployPackageArtifactAlias } from '../operations/Constants';
+
+export class AzureRmWebAppDeploymentProvider implements IWebAppDeploymentProvider{
+ protected taskParams:TaskParameters;
+ protected appService: AzureAppService;
+ protected kuduService: Kudu;
+ protected appServiceUtility: AzureAppServiceUtility;
+ protected kuduServiceUtility: KuduServiceUtility;
+ protected virtualApplicationPath: string = "";
+ protected azureEndpoint: AzureEndpoint;
+ protected activeDeploymentID;
+
+ constructor(taskParams: TaskParameters) {
+ this.taskParams = taskParams;
+ let packageArtifactAlias = this.taskParams.Package ? PackageUtility.getArtifactAlias(this.taskParams.Package.getPath()) : null;
+ tl.setVariable(AzureDeployPackageArtifactAlias, packageArtifactAlias);
+ }
+
+ public async PreDeploymentStep() {
+
+ if (this.taskParams.WebAppKind.includes("functionAppContainer")){
+ tl.warning(`Recommendation: Use Azure Functions for container Task to deploy Function app.`);
+ }
+ else if (this.taskParams.WebAppKind.includes("functionApp")){
+ tl.warning(`Recommendation: Use Azure Functions Task to deploy Function app.`);
+ }
+
+ this.azureEndpoint = await new AzureRMEndpoint(this.taskParams.connectedServiceName).getEndpoint();
+ console.log(tl.loc('GotconnectiondetailsforazureRMWebApp0', this.taskParams.WebAppName));
+ if(!this.taskParams.DeployToSlotOrASEFlag) {
+ this.taskParams.ResourceGroupName = await AzureResourceFilterUtility.getResourceGroupName(this.azureEndpoint, this.taskParams.WebAppName);
+ }
+
+ this.appService = new AzureAppService(this.azureEndpoint, this.taskParams.ResourceGroupName, this.taskParams.WebAppName,
+ this.taskParams.SlotName, this.taskParams.WebAppKind);
+ this.appServiceUtility = new AzureAppServiceUtility(this.appService);
+
+ this.kuduService = await this.appServiceUtility.getKuduService();
+ this.kuduServiceUtility = new KuduServiceUtility(this.kuduService);
+ tl.debug(`Resource Group: ${this.taskParams.ResourceGroupName}`);
+ }
+
+ public async DeployWebAppStep() {}
+
+ public async UpdateDeploymentStatus(isDeploymentSuccess: boolean) {
+ if(this.kuduServiceUtility) {
+ await addReleaseAnnotation(this.azureEndpoint, this.appService, isDeploymentSuccess);
+ this.activeDeploymentID = await this.kuduServiceUtility.updateDeploymentStatus(isDeploymentSuccess, null, {'type': 'Deployment', slotName: this.appService.getSlot()});
+ tl.debug('Active DeploymentId :'+ this.activeDeploymentID);
+ }
+
+ if(this.appServiceUtility) {
+ let appServiceApplicationUrl: string = await this.appServiceUtility.getApplicationURL(!this.taskParams.isLinuxApp
+ ? this.taskParams.VirtualApplication : null);
+ console.log(tl.loc('AppServiceApplicationURL', appServiceApplicationUrl));
+ tl.setVariable('AppServiceApplicationUrl', appServiceApplicationUrl);
+ }
+ }
+
+ protected async PostDeploymentStep() {
+ if(this.taskParams.AppSettings) {
+ var customApplicationSettings = ParameterParser.parse(this.taskParams.AppSettings);
+ await this.appServiceUtility.updateAndMonitorAppSettings(customApplicationSettings);
+ }
+
+ if(this.taskParams.ConfigurationSettings) {
+ var customApplicationSettings = ParameterParser.parse(this.taskParams.ConfigurationSettings);
+ await this.appServiceUtility.updateConfigurationSettings(customApplicationSettings);
+ }
+
+ if(this.taskParams.ScriptType) {
+ await this.kuduServiceUtility.runPostDeploymentScript(this.taskParams, this.virtualApplicationPath);
+ }
+
+ await this.appServiceUtility.updateScmTypeAndConfigurationDetails();
+ }
+}
\ No newline at end of file
diff --git a/_generated/AzureRmWebAppDeploymentV4/deploymentProvider/BuiltInLinuxWebAppDeploymentProvider.ts b/_generated/AzureRmWebAppDeploymentV4/deploymentProvider/BuiltInLinuxWebAppDeploymentProvider.ts
new file mode 100644
index 000000000000..152cf585c09e
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/deploymentProvider/BuiltInLinuxWebAppDeploymentProvider.ts
@@ -0,0 +1,107 @@
+import { AzureRmWebAppDeploymentProvider } from './AzureRmWebAppDeploymentProvider';
+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';
+
+var webCommonUtility = require('azure-pipelines-tasks-webdeployment-common/utility.js');
+var deployUtility = require('azure-pipelines-tasks-webdeployment-common/utility.js');
+var zipUtility = require('azure-pipelines-tasks-webdeployment-common/ziputility.js');
+
+const linuxFunctionStorageSetting: string = '-WEBSITES_ENABLE_APP_SERVICE_STORAGE true';
+const linuxFunctionRuntimeSettingName: string = '-FUNCTIONS_WORKER_RUNTIME ';
+
+const linuxFunctionRuntimeSettingValue = new Map([
+ [ 'DOCKER|microsoft/azure-functions-dotnet-core2.0:2.0', 'dotnet ' ],
+ [ 'DOCKER|microsoft/azure-functions-node8:2.0', 'node ' ],
+ [ 'DOCKER|microsoft/azure-functions-python3.6:2.0', 'python '],
+ [ 'DOTNET|2.2', 'dotnet ' ],
+ [ 'DOTNET|3.1', 'dotnet ' ],
+ [ 'JAVA|8', 'java ' ],
+ [ 'JAVA|11', 'java ' ],
+ [ 'NODE|8', 'node ' ],
+ [ 'NODE|10', 'node ' ],
+ [ 'NODE|12', 'node ' ],
+ [ 'NODE|14', 'node ' ],
+ [ 'PYTHON|3.6', 'python '],
+ [ 'PYTHON|3.7', 'python '],
+ [ 'PYTHON|3.8', 'python ']
+]);
+
+export class BuiltInLinuxWebAppDeploymentProvider extends AzureRmWebAppDeploymentProvider{
+ private zipDeploymentID: string;
+
+ public async DeployWebAppStep() {
+ let packageType = this.taskParams.Package.getPackageType();
+ let deploymentMethodtelemetry = packageType === PackageType.war ? '{"deploymentMethod":"War Deploy"}' : '{"deploymentMethod":"Zip Deploy"}';
+ console.log("##vso[telemetry.publish area=TaskDeploymentMethod;feature=AzureWebAppDeployment]" + deploymentMethodtelemetry);
+
+ tl.debug('Performing Linux built-in package deployment');
+ var isNewValueUpdated: boolean = false;
+
+ if(this.taskParams.isFunctionApp) {
+ var linuxFunctionRuntimeSetting = "";
+ if(this.taskParams.RuntimeStack){
+ linuxFunctionRuntimeSetting = linuxFunctionRuntimeSettingName + linuxFunctionRuntimeSettingValue.get(this.taskParams.RuntimeStack);
+ }
+ var linuxFunctionAppSetting = linuxFunctionRuntimeSetting + linuxFunctionStorageSetting;
+ var customApplicationSetting = ParameterParser.parse(linuxFunctionAppSetting);
+ isNewValueUpdated = await this.appServiceUtility.updateAndMonitorAppSettings(customApplicationSetting);
+ }
+
+ if(!isNewValueUpdated) {
+ await this.kuduServiceUtility.warmpUp();
+ }
+
+ 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() });
+
+ break;
+ case PackageType.zip:
+ this.zipDeploymentID = await this.kuduServiceUtility.deployUsingZipDeploy(this.taskParams.Package.getPath(), this.taskParams.TakeAppOfflineFlag,
+ { slotName: this.appService.getSlot() });
+
+ break;
+
+ case PackageType.jar:
+ tl.debug("Initiated deployment via kudu service for webapp jar package : "+ this.taskParams.Package.getPath());
+ var folderPath = await webCommonUtility.generateTemporaryFolderForDeployment(false, this.taskParams.Package.getPath(), PackageType.jar);
+ 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() });
+
+ break;
+
+ case PackageType.war:
+ tl.debug("Initiated deployment via kudu service for webapp war package : "+ this.taskParams.Package.getPath());
+ var warName = webCommonUtility.getFileNameFromPath(this.taskParams.Package.getPath(), ".war");
+ this.zipDeploymentID = await this.kuduServiceUtility.deployUsingWarDeploy(this.taskParams.Package.getPath(),
+ { slotName: this.appService.getSlot() }, warName);
+
+ break;
+
+ default:
+ throw new Error(tl.loc('Invalidwebapppackageorfolderpathprovided', this.taskParams.Package.getPath()));
+ }
+
+ await this.appServiceUtility.updateStartupCommandAndRuntimeStack(this.taskParams.RuntimeStack, this.taskParams.StartupCommand);
+
+ await this.PostDeploymentStep();
+ }
+
+ public async UpdateDeploymentStatus(isDeploymentSuccess: boolean) {
+ if(this.kuduServiceUtility) {
+ await super.UpdateDeploymentStatus(isDeploymentSuccess);
+ if(this.zipDeploymentID && this.activeDeploymentID && isDeploymentSuccess) {
+ await this.kuduServiceUtility.postZipDeployOperation(this.zipDeploymentID, this.activeDeploymentID);
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/_generated/AzureRmWebAppDeploymentV4/deploymentProvider/ContainerWebAppDeploymentProvider.ts b/_generated/AzureRmWebAppDeploymentV4/deploymentProvider/ContainerWebAppDeploymentProvider.ts
new file mode 100644
index 000000000000..542ab8d73728
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/deploymentProvider/ContainerWebAppDeploymentProvider.ts
@@ -0,0 +1,25 @@
+import { AzureRmWebAppDeploymentProvider } from './AzureRmWebAppDeploymentProvider';
+import tl = require('azure-pipelines-task-lib/task');
+import * as ParameterParser from 'azure-pipelines-tasks-webdeployment-common/ParameterParserUtility';
+import { ContainerBasedDeploymentUtility } from '../operations/ContainerBasedDeploymentUtility';
+const linuxFunctionStorageSetting: string = '-WEBSITES_ENABLE_APP_SERVICE_STORAGE false';
+
+export class ContainerWebAppDeploymentProvider extends AzureRmWebAppDeploymentProvider{
+
+ public async DeployWebAppStep() {
+ tl.debug("Performing container based deployment.");
+
+ if(this.taskParams.isFunctionApp) {
+ var customApplicationSetting = ParameterParser.parse(linuxFunctionStorageSetting);
+ await this.appServiceUtility.updateAndMonitorAppSettings(customApplicationSetting);
+ }
+
+ let containerDeploymentUtility: ContainerBasedDeploymentUtility = new ContainerBasedDeploymentUtility(this.appService);
+ await containerDeploymentUtility.deployWebAppImage(this.taskParams);
+
+ if(this.taskParams.ScriptType) {
+ await this.kuduServiceUtility.runPostDeploymentScript(this.taskParams);
+ }
+ await this.appServiceUtility.updateScmTypeAndConfigurationDetails();
+ }
+}
diff --git a/_generated/AzureRmWebAppDeploymentV4/deploymentProvider/DeploymentFactory.ts b/_generated/AzureRmWebAppDeploymentV4/deploymentProvider/DeploymentFactory.ts
new file mode 100644
index 000000000000..a6cd9ec9f01b
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/deploymentProvider/DeploymentFactory.ts
@@ -0,0 +1,99 @@
+import { TaskParameters, DeploymentType } from '../operations/TaskParameters';
+import * as Constant from '../operations/Constants'
+import { PublishProfileWebAppDeploymentProvider } from './PublishProfileWebAppDeploymentProvider';
+import { BuiltInLinuxWebAppDeploymentProvider } from './BuiltInLinuxWebAppDeploymentProvider';
+import { IWebAppDeploymentProvider } from './IWebAppDeploymentProvider';
+import { WindowsWebAppWebDeployProvider } from './WindowsWebAppWebDeployProvider';
+import { WindowsWebAppZipDeployProvider } from './WindowsWebAppZipDeployProvider';
+import { WindowsWebAppRunFromZipProvider } from './WindowsWebAppRunFromZipProvider';
+import { ContainerWebAppDeploymentProvider } from './ContainerWebAppDeploymentProvider';
+import tl = require('azure-pipelines-task-lib/task');
+import { PackageType } from 'azure-pipelines-tasks-webdeployment-common/packageUtility';
+import { WindowsWebAppWarDeployProvider } from './WindowsWebAppWarDeployProvider';
+
+export class DeploymentFactory {
+
+ private _taskParams: TaskParameters;
+
+ constructor(taskParams: TaskParameters) {
+ this._taskParams = taskParams;
+ }
+
+ public async GetDeploymentProvider(): Promise {
+ switch(this._taskParams.ConnectionType) {
+ case Constant.ConnectionType.PublishProfile:
+ return new PublishProfileWebAppDeploymentProvider(this._taskParams);
+ case Constant.ConnectionType.AzureRM:
+ if(this._taskParams.isLinuxApp) {
+ tl.debug("Depolyment started for linux app service");
+ return await this._getLinuxDeploymentProvider();
+ } if(this._taskParams.isHyperVContainerApp) {
+ tl.debug("Depolyment started for hyperV container app service");
+ return await this._getContainerDeploymentProvider();
+ }
+ else {
+ tl.debug("Depolyment started for windows app service");
+ return await this._getWindowsDeploymentProvider()
+ }
+ default:
+ throw new Error(tl.loc('InvalidConnectionType'));
+ }
+ }
+
+ private async _getLinuxDeploymentProvider(): Promise {
+ if(this._taskParams.isBuiltinLinuxWebApp) {
+ return new BuiltInLinuxWebAppDeploymentProvider(this._taskParams);
+ } else if(this._taskParams.isContainerWebApp) {
+ return new ContainerWebAppDeploymentProvider(this._taskParams);
+ } else {
+ throw new Error(tl.loc('InvalidImageSourceType'));
+ }
+ }
+
+ private async _getContainerDeploymentProvider(): Promise {
+ if(this._taskParams.isHyperVContainerApp) {
+ return new ContainerWebAppDeploymentProvider(this._taskParams);
+ } else {
+ throw new Error(tl.loc('InvalidImageSourceType'));
+ }
+ }
+
+ private async _getWindowsDeploymentProvider(): Promise {
+ tl.debug("Package type of deployment is: "+ this._taskParams.Package.getPackageType());
+ switch(this._taskParams.Package.getPackageType()){
+ case PackageType.war:
+ return new WindowsWebAppWarDeployProvider(this._taskParams);
+ case PackageType.jar:
+ return new WindowsWebAppZipDeployProvider(this._taskParams);
+ default:
+ return await this._getWindowsDeploymentProviderForZipAndFolderPackageType();
+ }
+ }
+
+ private async _getWindowsDeploymentProviderForZipAndFolderPackageType(): Promise {
+ if(this._taskParams.UseWebDeploy) {
+ return await this._getUserSelectedDeploymentProviderForWindow();
+ } else {
+ var _isMSBuildPackage = await this._taskParams.Package.isMSBuildPackage();
+ if(_isMSBuildPackage || this._taskParams.VirtualApplication) {
+ return new WindowsWebAppWebDeployProvider(this._taskParams);
+ } else if(this._taskParams.ScriptType) {
+ return new WindowsWebAppZipDeployProvider(this._taskParams);
+ } else {
+ return new WindowsWebAppRunFromZipProvider(this._taskParams);
+ }
+ }
+ }
+
+ private async _getUserSelectedDeploymentProviderForWindow(): Promise {
+ switch(this._taskParams.DeploymentType){
+ case DeploymentType.webDeploy:
+ return new WindowsWebAppWebDeployProvider(this._taskParams);
+ case DeploymentType.zipDeploy:
+ return new WindowsWebAppZipDeployProvider(this._taskParams);
+ case DeploymentType.runFromZip:
+ return new WindowsWebAppRunFromZipProvider(this._taskParams);
+ }
+ }
+
+}
diff --git a/_generated/AzureRmWebAppDeploymentV4/deploymentProvider/IWebAppDeploymentProvider.ts b/_generated/AzureRmWebAppDeploymentV4/deploymentProvider/IWebAppDeploymentProvider.ts
new file mode 100644
index 000000000000..3ed6e50c86f4
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/deploymentProvider/IWebAppDeploymentProvider.ts
@@ -0,0 +1,5 @@
+export interface IWebAppDeploymentProvider{
+ PreDeploymentStep();
+ DeployWebAppStep();
+ UpdateDeploymentStatus(isDeploymentSuccess: boolean);
+}
\ No newline at end of file
diff --git a/_generated/AzureRmWebAppDeploymentV4/deploymentProvider/PublishProfileWebAppDeploymentProvider.ts b/_generated/AzureRmWebAppDeploymentV4/deploymentProvider/PublishProfileWebAppDeploymentProvider.ts
new file mode 100644
index 000000000000..363fc8557366
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/deploymentProvider/PublishProfileWebAppDeploymentProvider.ts
@@ -0,0 +1,143 @@
+import { IWebAppDeploymentProvider } from "./IWebAppDeploymentProvider";
+import { TaskParameters } from "../operations/TaskParameters";
+import { PublishProfileUtility, PublishingProfile } from '../operations/PublishProfileUtility';
+import { FileTransformsUtility } from '../operations/FileTransformsUtility';
+import { AzureAppServiceUtility } from '../operations/AzureAppServiceUtility';
+import * as Constant from '../operations/Constants';
+import tl = require('azure-pipelines-task-lib/task');
+import fs = require('fs');
+import path = require('path');
+
+var packageUtility = require('azure-pipelines-tasks-webdeployment-common/packageUtility.js');
+var deployUtility = require('azure-pipelines-tasks-webdeployment-common/utility.js');
+var msDeployUtility = require('azure-pipelines-tasks-webdeployment-common/msdeployutility.js');
+
+const DEFAULT_RETRY_COUNT = 3;
+
+export class PublishProfileWebAppDeploymentProvider implements IWebAppDeploymentProvider{
+ private taskParams: TaskParameters;
+ private publishProfileUtility: PublishProfileUtility;
+ private origWebPackage: string;
+ private modWebPackage: string;
+ private bakWebPackage: string;
+ private origEnvPath: string;
+
+ constructor(taskParams: TaskParameters) {
+ this.taskParams = taskParams;
+ }
+
+ public async PreDeploymentStep() {
+ this.publishProfileUtility = new PublishProfileUtility(this.taskParams.PublishProfilePath);
+ try {
+ var siteUrl = await this.publishProfileUtility.GetPropertyValuefromPublishProfile(Constant.PublishProfileXml.SiteUrlToLaunchAfterPublish);
+ await AzureAppServiceUtility.pingApplication(siteUrl);
+ tl.setVariable('AppServiceApplicationUrl', siteUrl);
+ }
+ catch (error){
+ tl.debug('Unable to ping webapp, Error: ' + error);
+ }
+ }
+
+ public async DeployWebAppStep() {
+ if(!tl.osType().match(/^Win/)){
+ throw Error(tl.loc("PublishusingwebdeployoptionsaresupportedonlywhenusingWindowsagent"));
+ }
+
+ tl.debug("Performing the deployment of webapp using publish profile.");
+
+ var applyFileTransformFlag = this.taskParams.JSONFiles.length != 0 || this.taskParams.XmlTransformation || this.taskParams.XmlVariableSubstitution;
+ if(applyFileTransformFlag) {
+ await this.ApplyFileTransformation();
+ }
+
+ var msDeployPublishingProfile: PublishingProfile = await this.publishProfileUtility.GetTaskParametersFromPublishProfileFile(this.taskParams);
+ var deployCmdFilePath = this.GetDeployCmdFilePath();
+
+ await this.SetMsdeployEnvPath();
+ var cmdArgs:string = this.GetDeployScriptCmdArgs(msDeployPublishingProfile);
+
+ var retryCountParam = tl.getVariable("appservice.msdeployretrycount");
+ var retryCount = (retryCountParam && !(isNaN(Number(retryCountParam)))) ? Number(retryCountParam): DEFAULT_RETRY_COUNT;
+
+ try {
+ while(true) {
+ try {
+ retryCount -= 1;
+ await this.publishProfileUtility.RunCmd(deployCmdFilePath, cmdArgs);
+ break;
+ }
+ catch (error) {
+ if(retryCount == 0) {
+ throw error;
+ }
+ console.log(error);
+ console.log(tl.loc('RetryToDeploy'));
+ }
+ }
+ console.log(tl.loc('PackageDeploymentSuccess'));
+ }
+ catch (error) {
+ tl.error(tl.loc('PackageDeploymentFailed'));
+ tl.debug(JSON.stringify(error));
+ msDeployUtility.redirectMSDeployErrorToConsole();
+ throw Error(error.message);
+ }
+ finally {
+ this.ResetMsdeployEnvPath();
+ if(applyFileTransformFlag) {
+ this.ResetFileTransformation();
+ }
+ }
+ }
+
+ public async UpdateDeploymentStatus(isDeploymentSuccess: boolean){ }
+
+ private async SetMsdeployEnvPath() {
+ var msDeployPath = await msDeployUtility.getMSDeployFullPath();
+ var msDeployDirectory = msDeployPath.slice(0, msDeployPath.lastIndexOf('\\') + 1);
+ this.origEnvPath = process.env.PATH;
+ process.env.PATH = msDeployDirectory + ";" + process.env.PATH ;
+ }
+
+ private async ResetMsdeployEnvPath() {
+ process.env.PATH = this.origEnvPath;
+ }
+
+ private GetDeployCmdFilePath(): string {
+ var webPackagePath = this.taskParams.Package.getPath();
+ var packageDir = path.dirname(webPackagePath);
+ return packageUtility.PackageUtility.getPackagePath(packageDir + "\\*.deploy.cmd");
+ }
+
+ private GetDeployScriptCmdArgs(msDeployPublishingProfile:any): string {
+ var deployCmdArgs: string = " /Y /A:basic \"/U:" + msDeployPublishingProfile.UserName + "\" \"\\\"/P:" + msDeployPublishingProfile.UserPWD
+ + "\\\"\" \"\\\"/M:" + "https://" + msDeployPublishingProfile.PublishUrl + "/msdeploy.axd?site=" + msDeployPublishingProfile.WebAppName + "\\\"\"";
+
+ if(msDeployPublishingProfile.TakeAppOfflineFlag) {
+ deployCmdArgs += ' -enableRule:AppOffline';
+ }
+
+ if(msDeployPublishingProfile.RemoveAdditionalFilesFlag) {
+ deployCmdArgs += " -enableRule:DoNotDeleteRule";
+ }
+
+ if(this.taskParams.AdditionalArguments) {
+ deployCmdArgs += " " + this.taskParams.AdditionalArguments;
+ }
+
+ return deployCmdArgs;
+ }
+
+ private async ApplyFileTransformation() {
+ this.origWebPackage = packageUtility.PackageUtility.getPackagePath(this.taskParams.Package);
+ this.modWebPackage = await FileTransformsUtility.applyTransformations(this.origWebPackage, this.taskParams);
+ this.bakWebPackage = this.origWebPackage + ".bak";
+ fs.renameSync(this.origWebPackage, this.bakWebPackage);
+ fs.renameSync(this.modWebPackage, this.origWebPackage);
+ }
+
+ private ResetFileTransformation() {
+ tl.rmRF(this.origWebPackage);
+ fs.renameSync(this.bakWebPackage, this.origWebPackage);
+ }
+}
diff --git a/_generated/AzureRmWebAppDeploymentV4/deploymentProvider/WindowsWebAppRunFromZipProvider.ts b/_generated/AzureRmWebAppDeploymentV4/deploymentProvider/WindowsWebAppRunFromZipProvider.ts
new file mode 100644
index 000000000000..165930ea5baa
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/deploymentProvider/WindowsWebAppRunFromZipProvider.ts
@@ -0,0 +1,68 @@
+import { AzureRmWebAppDeploymentProvider } from './AzureRmWebAppDeploymentProvider';
+import tl = require('azure-pipelines-task-lib/task');
+import { FileTransformsUtility } from '../operations/FileTransformsUtility';
+import * as ParameterParser from 'azure-pipelines-tasks-webdeployment-common/ParameterParserUtility';
+import { DeploymentType } from '../operations/TaskParameters';
+import { PackageType } from 'azure-pipelines-tasks-webdeployment-common/packageUtility';
+import { addReleaseAnnotation } from '../operations/ReleaseAnnotationUtility';
+const oldRunFromZipAppSetting: string = '-WEBSITE_RUN_FROM_ZIP';
+const runFromZipAppSetting: string = '-WEBSITE_RUN_FROM_PACKAGE 1';
+var deployUtility = require('azure-pipelines-tasks-webdeployment-common/utility.js');
+var zipUtility = require('azure-pipelines-tasks-webdeployment-common/ziputility.js');
+
+export class WindowsWebAppRunFromZipProvider extends AzureRmWebAppDeploymentProvider{
+
+ public async DeployWebAppStep() {
+ let deploymentMethodtelemetry = '{"deploymentMethod":"Run from Package"}';
+ console.log("##vso[telemetry.publish area=TaskDeploymentMethod;feature=AzureWebAppDeployment]" + deploymentMethodtelemetry);
+
+ var webPackage = await FileTransformsUtility.applyTransformations(this.taskParams.Package.getPath(), this.taskParams);
+
+ if(this.taskParams.UseWebDeploy && this.taskParams.DeploymentType === DeploymentType.runFromZip) {
+ var _isMSBuildPackage = await this.taskParams.Package.isMSBuildPackage();
+ if(_isMSBuildPackage) {
+ throw Error(tl.loc("Publishusingzipdeploynotsupportedformsbuildpackage"));
+ }
+ else if(this.taskParams.VirtualApplication) {
+ throw Error(tl.loc("Publishusingzipdeploynotsupportedforvirtualapplication"));
+ }
+ else if(this.taskParams.Package.getPackageType() === PackageType.war) {
+ throw Error(tl.loc("Publishusingzipdeploydoesnotsupportwarfile"));
+ }
+ }
+
+ if(tl.stats(webPackage).isDirectory()) {
+ let tempPackagePath = deployUtility.generateTemporaryFolderOrZipPath(tl.getVariable('AGENT.TEMPDIRECTORY'), false);
+ webPackage = await zipUtility.archiveFolder(webPackage, "", tempPackagePath);
+ tl.debug("Compressed folder into zip " + webPackage);
+ }
+
+ tl.debug("Initiated deployment via kudu service for webapp package : ");
+
+ var addCustomApplicationSetting = ParameterParser.parse(runFromZipAppSetting);
+ var deleteCustomApplicationSetting = ParameterParser.parse(oldRunFromZipAppSetting);
+ var isNewValueUpdated: boolean = await this.appServiceUtility.updateAndMonitorAppSettings(addCustomApplicationSetting, deleteCustomApplicationSetting);
+
+ if(!isNewValueUpdated) {
+ await this.kuduServiceUtility.warmpUp();
+ }
+ await this.kuduServiceUtility.deployUsingRunFromZip(webPackage,
+ { slotName: this.appService.getSlot() });
+
+ await this.PostDeploymentStep();
+ }
+
+ public async UpdateDeploymentStatus(isDeploymentSuccess: boolean) {
+ if(this.taskParams.ScriptType && this.kuduServiceUtility) {
+ await super.UpdateDeploymentStatus(isDeploymentSuccess);
+ }
+ else {
+ await addReleaseAnnotation(this.azureEndpoint, this.appService, isDeploymentSuccess);
+ let appServiceApplicationUrl: string = await this.appServiceUtility.getApplicationURL(!this.taskParams.isLinuxApp
+ ? this.taskParams.VirtualApplication : null);
+ console.log(tl.loc('AppServiceApplicationURL', appServiceApplicationUrl));
+ tl.setVariable('AppServiceApplicationUrl', appServiceApplicationUrl);
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/_generated/AzureRmWebAppDeploymentV4/deploymentProvider/WindowsWebAppWarDeployProvider.ts b/_generated/AzureRmWebAppDeploymentV4/deploymentProvider/WindowsWebAppWarDeployProvider.ts
new file mode 100644
index 000000000000..fba9f86f6519
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/deploymentProvider/WindowsWebAppWarDeployProvider.ts
@@ -0,0 +1,36 @@
+import { AzureRmWebAppDeploymentProvider } from './AzureRmWebAppDeploymentProvider';
+import tl = require('azure-pipelines-task-lib/task');
+var webCommonUtility = require('azure-pipelines-tasks-webdeployment-common/utility.js');
+
+
+export class WindowsWebAppWarDeployProvider extends AzureRmWebAppDeploymentProvider{
+
+ private zipDeploymentID: string;
+
+ public async DeployWebAppStep() {
+ let deploymentMethodtelemetry = '{"deploymentMethod":"War Deploy"}';
+ console.log("##vso[telemetry.publish area=TaskDeploymentMethod;feature=AzureWebAppDeployment]" + deploymentMethodtelemetry);
+
+ tl.debug("Initiated deployment via kudu service for webapp war package : "+ this.taskParams.Package.getPath());
+
+ await this.kuduServiceUtility.warmpUp();
+
+ var warName = webCommonUtility.getFileNameFromPath(this.taskParams.Package.getPath(), ".war");
+
+ this.zipDeploymentID = await this.kuduServiceUtility.deployUsingWarDeploy(this.taskParams.Package.getPath(),
+ { slotName: this.appService.getSlot() }, warName);
+
+ await this.PostDeploymentStep();
+ }
+
+
+ public async UpdateDeploymentStatus(isDeploymentSuccess: boolean) {
+ if(this.kuduServiceUtility) {
+ await super.UpdateDeploymentStatus(isDeploymentSuccess);
+ if(this.zipDeploymentID && this.activeDeploymentID && isDeploymentSuccess) {
+ await this.kuduServiceUtility.postZipDeployOperation(this.zipDeploymentID, this.activeDeploymentID);
+ }
+ }
+
+ }
+}
diff --git a/_generated/AzureRmWebAppDeploymentV4/deploymentProvider/WindowsWebAppWebDeployProvider.ts b/_generated/AzureRmWebAppDeploymentV4/deploymentProvider/WindowsWebAppWebDeployProvider.ts
new file mode 100644
index 000000000000..55467fa83d97
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/deploymentProvider/WindowsWebAppWebDeployProvider.ts
@@ -0,0 +1,53 @@
+import { AzureRmWebAppDeploymentProvider } from './AzureRmWebAppDeploymentProvider';
+import tl = require('azure-pipelines-task-lib/task');
+import { FileTransformsUtility } from '../operations/FileTransformsUtility';
+import * as ParameterParser from 'azure-pipelines-tasks-webdeployment-common/ParameterParserUtility';
+import * as Constant from '../operations/Constants';
+import { WebDeployUtility } from '../operations/WebDeployUtility';
+import { Package } from 'azure-pipelines-tasks-webdeployment-common/packageUtility';
+
+const removeRunFromZipAppSetting: string = '-WEBSITE_RUN_FROM_ZIP -WEBSITE_RUN_FROM_PACKAGE';
+var deployUtility = require('azure-pipelines-tasks-webdeployment-common/utility.js');
+
+export class WindowsWebAppWebDeployProvider extends AzureRmWebAppDeploymentProvider{
+
+ public async DeployWebAppStep() {
+ var physicalPath: string = Constant.SiteRoot;
+ var webPackage = this.taskParams.Package.getPath();
+
+ if(this.taskParams.VirtualApplication) {
+ physicalPath = await this.appServiceUtility.getPhysicalPath(this.taskParams.VirtualApplication);
+ await this.kuduServiceUtility.createPathIfRequired(physicalPath);
+ this.virtualApplicationPath = physicalPath;
+ }
+
+ webPackage = await FileTransformsUtility.applyTransformations(webPackage, this.taskParams);
+ this.taskParams.Package = new Package(webPackage);
+
+ var deleteApplicationSetting = ParameterParser.parse(removeRunFromZipAppSetting)
+ await this.appServiceUtility.updateAndMonitorAppSettings(null, deleteApplicationSetting);
+
+ if (deployUtility.canUseWebDeploy(this.taskParams.UseWebDeploy)) {
+ const webDeployUtility = new WebDeployUtility(this.appServiceUtility);
+ const deploymentMethodtelemetry = '{"deploymentMethod":"Web Deploy"}';
+ console.log("##vso[telemetry.publish area=TaskDeploymentMethod;feature=AzureWebAppDeployment]" + deploymentMethodtelemetry);
+
+ tl.debug("Performing the deployment of webapp.");
+
+ if (tl.getPlatform() !== tl.Platform.Windows) {
+ throw Error(tl.loc("PublishusingwebdeployoptionsaresupportedonlywhenusingWindowsagent"));
+ }
+
+ await webDeployUtility.publishUsingWebDeploy(this.taskParams);
+ }
+ else {
+ const deploymentMethodtelemetry = '{"deploymentMethod":"Zip API"}';
+ console.log("##vso[telemetry.publish area=TaskDeploymentMethod;feature=AzureWebAppDeployment]" + deploymentMethodtelemetry);
+
+ tl.debug("Initiated deployment via kudu service for webapp package : ");
+ await this.kuduServiceUtility.deployWebPackage(webPackage, physicalPath, this.taskParams.VirtualApplication, this.taskParams.TakeAppOfflineFlag);
+ }
+
+ await this.PostDeploymentStep();
+ }
+}
\ No newline at end of file
diff --git a/_generated/AzureRmWebAppDeploymentV4/deploymentProvider/WindowsWebAppZipDeployProvider.ts b/_generated/AzureRmWebAppDeploymentV4/deploymentProvider/WindowsWebAppZipDeployProvider.ts
new file mode 100644
index 000000000000..9d3429714c79
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/deploymentProvider/WindowsWebAppZipDeployProvider.ts
@@ -0,0 +1,64 @@
+import { AzureRmWebAppDeploymentProvider } from './AzureRmWebAppDeploymentProvider';
+import tl = require('azure-pipelines-task-lib/task');
+import { FileTransformsUtility } from '../operations/FileTransformsUtility';
+import * as ParameterParser from 'azure-pipelines-tasks-webdeployment-common/ParameterParserUtility';
+import { DeploymentType } from '../operations/TaskParameters';
+import { PackageType } from 'azure-pipelines-tasks-webdeployment-common/packageUtility';
+const removeRunFromZipAppSetting: string = '-WEBSITE_RUN_FROM_PACKAGE -WEBSITE_RUN_FROM_ZIP';
+var deployUtility = require('azure-pipelines-tasks-webdeployment-common/utility.js');
+var zipUtility = require('azure-pipelines-tasks-webdeployment-common/ziputility.js');
+
+export class WindowsWebAppZipDeployProvider extends AzureRmWebAppDeploymentProvider{
+
+ private zipDeploymentID: string;
+
+ public async DeployWebAppStep() {
+ let deploymentMethodtelemetry = '{"deploymentMethod":"Zip Deploy"}';
+ console.log("##vso[telemetry.publish area=TaskDeploymentMethod;feature=AzureWebAppDeployment]" + deploymentMethodtelemetry);
+
+ var webPackage = await FileTransformsUtility.applyTransformations(this.taskParams.Package.getPath(), this.taskParams);
+
+ if(this.taskParams.UseWebDeploy && this.taskParams.DeploymentType === DeploymentType.zipDeploy) {
+ var _isMSBuildPackage = await this.taskParams.Package.isMSBuildPackage();
+ if(_isMSBuildPackage) {
+ throw Error(tl.loc("Publishusingzipdeploynotsupportedformsbuildpackage"));
+ }
+ else if(this.taskParams.VirtualApplication) {
+ throw Error(tl.loc("Publishusingzipdeploynotsupportedforvirtualapplication"));
+ }
+ else if(this.taskParams.Package.getPackageType() === PackageType.war) {
+ throw Error(tl.loc("Publishusingzipdeploydoesnotsupportwarfile"));
+ }
+ }
+
+ if(tl.stats(webPackage).isDirectory()) {
+ let tempPackagePath = deployUtility.generateTemporaryFolderOrZipPath(tl.getVariable('AGENT.TEMPDIRECTORY'), false);
+ webPackage = await zipUtility.archiveFolder(webPackage, "", tempPackagePath);
+ tl.debug("Compressed folder into zip " + webPackage);
+ }
+
+ tl.debug("Initiated deployment via kudu service for webapp package : ");
+
+ var deleteApplicationSetting = ParameterParser.parse(removeRunFromZipAppSetting);
+ var isNewValueUpdated: boolean = await this.appServiceUtility.updateAndMonitorAppSettings(null, deleteApplicationSetting);
+
+ if(!isNewValueUpdated) {
+ await this.kuduServiceUtility.warmpUp();
+ }
+
+ this.zipDeploymentID = await this.kuduServiceUtility.deployUsingZipDeploy(webPackage, this.taskParams.TakeAppOfflineFlag,
+ { slotName: this.appService.getSlot() });
+
+ await this.PostDeploymentStep();
+ }
+
+ public async UpdateDeploymentStatus(isDeploymentSuccess: boolean) {
+ if(this.kuduServiceUtility) {
+ await super.UpdateDeploymentStatus(isDeploymentSuccess);
+ if(this.zipDeploymentID && this.activeDeploymentID && isDeploymentSuccess) {
+ await this.kuduServiceUtility.postZipDeployOperation(this.zipDeploymentID, this.activeDeploymentID);
+ }
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/_generated/AzureRmWebAppDeploymentV4/icon.png b/_generated/AzureRmWebAppDeploymentV4/icon.png
new file mode 100644
index 000000000000..9ee7be815737
Binary files /dev/null and b/_generated/AzureRmWebAppDeploymentV4/icon.png differ
diff --git a/_generated/AzureRmWebAppDeploymentV4/icon.svg b/_generated/AzureRmWebAppDeploymentV4/icon.svg
new file mode 100644
index 000000000000..4b1d57e6a85b
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/icon.svg
@@ -0,0 +1,12 @@
+
diff --git a/_generated/AzureRmWebAppDeploymentV4/make.json b/_generated/AzureRmWebAppDeploymentV4/make.json
new file mode 100644
index 000000000000..acf47189297c
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/make.json
@@ -0,0 +1,27 @@
+{
+ "externals": {
+ "archivePackages": [
+ {
+ "archiveName": "ctt.zip",
+ "url": "https://vstsagenttools.blob.core.windows.net/tools/ctt/1.6/ctt.zip",
+ "dest": "./"
+ }
+ ]
+ },
+ "cp": [
+ {
+ "source": "postDeploymentScript",
+ "options": "-R"
+ }
+ ],
+ "rm": [
+ {
+ "items": [
+ "node_modules/azure-pipelines-tasks-azure-arm-rest/node_modules/azure-pipelines-task-lib",
+ "node_modules/azure-pipelines-tasks-webdeployment-common/node_modules/azure-pipelines-task-lib",
+ "node_modules/https-proxy-agent/node_modules/agent-base"
+ ],
+ "options": "-Rf"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/_generated/AzureRmWebAppDeploymentV4/operations/AzureAppServiceUtility.ts b/_generated/AzureRmWebAppDeploymentV4/operations/AzureAppServiceUtility.ts
new file mode 100644
index 000000000000..e9286351c825
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/operations/AzureAppServiceUtility.ts
@@ -0,0 +1,336 @@
+import tl = require('azure-pipelines-task-lib/task');
+import { AzureAppService } from 'azure-pipelines-tasks-azure-arm-rest/azure-arm-app-service';
+import webClient = require('azure-pipelines-tasks-azure-arm-rest/webClient');
+var parseString = require('xml2js').parseString;
+import Q = require('q');
+import { Kudu } from 'azure-pipelines-tasks-azure-arm-rest/azure-arm-app-service-kudu';
+import { AzureDeployPackageArtifactAlias } from './Constants';
+import { AzureAppServiceUtility as AzureAppServiceUtilityCommon } from 'azure-pipelines-tasks-azure-arm-rest/azureAppServiceUtility';
+
+//todo replace this class with azure-arm-rest/azureAppServiceUtility
+export class AzureAppServiceUtility {
+ private _appService: AzureAppService;
+ constructor(appService: AzureAppService) {
+ this._appService = appService;
+ }
+
+ public async updateScmTypeAndConfigurationDetails(): Promise {
+ try {
+ var configDetails = await this._appService.getConfiguration();
+ var scmType: string = configDetails.properties.scmType;
+ let shouldUpdateMetadata = false;
+ if (scmType && scmType.toLowerCase() === "none") {
+ configDetails.properties.scmType = 'VSTSRM';
+ tl.debug('updating SCM Type to VSTS-RM');
+ await this._appService.updateConfiguration(configDetails);
+ tl.debug('updated SCM Type to VSTS-RM');
+ shouldUpdateMetadata = true;
+ }
+ else if (scmType && scmType.toLowerCase() == "vstsrm") {
+ tl.debug("SCM Type is VSTSRM");
+ shouldUpdateMetadata = true;
+ }
+ else {
+ tl.debug(`Skipped updating the SCM value. Value: ${scmType}`);
+ }
+
+ if (shouldUpdateMetadata) {
+ tl.debug('Updating metadata with latest pipeline details');
+ let newMetadataProperties = this._getNewMetadata();
+ let siteMetadata = await this._appService.getMetadata();
+ let skipUpdate = true;
+ for (let property in newMetadataProperties) {
+ if (siteMetadata.properties[property] !== newMetadataProperties[property]) {
+ siteMetadata.properties[property] = newMetadataProperties[property];
+ skipUpdate = false;
+ }
+ }
+
+ if (!skipUpdate) {
+ await this._appService.patchMetadata(siteMetadata.properties);
+ tl.debug('Updated metadata with latest pipeline details');
+ console.log(tl.loc("SuccessfullyUpdatedAzureRMWebAppConfigDetails"));
+ }
+ else {
+ tl.debug("No changes in metadata properties, skipping update.");
+ }
+ }
+ }
+ catch (error) {
+ tl.warning(tl.loc("FailedToUpdateAzureRMWebAppConfigDetails", error));
+ }
+ }
+
+ public async getWebDeployPublishingProfile(): Promise {
+ var publishingProfile = await this._appService.getPublishingProfileWithSecrets();
+ var defer = Q.defer();
+ parseString(publishingProfile, (error, result) => {
+ if(!!error) {
+ defer.reject(error);
+ }
+ var publishProfile = result && result.publishData && result.publishData.publishProfile ? result.publishData.publishProfile : null;
+ if(publishProfile) {
+ for (var index in publishProfile) {
+ if (publishProfile[index].$ && publishProfile[index].$.publishMethod === "MSDeploy") {
+ defer.resolve(result.publishData.publishProfile[index].$);
+ }
+ }
+ }
+
+ defer.reject(tl.loc('ErrorNoSuchDeployingMethodExists'));
+ });
+
+ return defer.promise;
+ }
+
+ public async getApplicationURL(virtualApplication?: string): Promise {
+ let webDeployProfile: any = await this.getWebDeployPublishingProfile();
+ return await webDeployProfile.destinationAppUrl + ( virtualApplication ? "/" + virtualApplication : "" );
+ }
+
+ public async pingApplication(): Promise {
+ try {
+ var applicationUrl: string = await this.getApplicationURL();
+
+ if(!applicationUrl) {
+ tl.debug("Application Url not found.");
+ return;
+ }
+ await AzureAppServiceUtility.pingApplication(applicationUrl);
+ } catch(error) {
+ tl.debug("Unable to ping App Service. Error: ${error}");
+ }
+ }
+
+ public static async pingApplication(applicationUrl: string) {
+ if(!applicationUrl) {
+ tl.debug('Application Url empty.');
+ return;
+ }
+ try {
+ var webRequest = new webClient.WebRequest();
+ webRequest.method = 'GET';
+ webRequest.uri = applicationUrl;
+ let webRequestOptions: webClient.WebRequestOptions = {retriableErrorCodes: [], retriableStatusCodes: [], retryCount: 1, retryIntervalInSeconds: 5, retryRequestTimedout: true};
+ var response = await webClient.sendRequest(webRequest, webRequestOptions);
+ tl.debug(`App Service status Code: '${response.statusCode}'. Status Message: '${response.statusMessage}'`);
+ }
+ catch(error) {
+ tl.debug(`Unable to ping App Service. Error: ${error}`);
+ }
+ }
+
+ public async getKuduService(): Promise {
+
+ const utility = new AzureAppServiceUtilityCommon(this._appService);
+ return await utility.getKuduService();
+
+ }
+
+ public async isSitePublishingCredentialsEnabled(): Promise {
+ const utility = new AzureAppServiceUtilityCommon(this._appService);
+ return await utility.isSitePublishingCredentialsEnabled();
+ }
+
+ public async getAuthToken(): Promise {
+ const token = await this._appService._client.getCredentials().getToken();
+ tl.setSecret(token);
+ return token;
+ }
+
+ public async getPhysicalPath(virtualApplication: string): Promise {
+
+ if(!virtualApplication) {
+ return '/site/wwwroot';
+ }
+
+ virtualApplication = (virtualApplication.startsWith("/")) ? virtualApplication.substr(1) : virtualApplication;
+
+ var physicalToVirtualPathMap = await this._getPhysicalToVirtualPathMap(virtualApplication);
+
+ if(!physicalToVirtualPathMap) {
+ throw Error(tl.loc("VirtualApplicationDoesNotExist", virtualApplication));
+ }
+
+ tl.debug(`Virtual Application Map: Physical path: '${physicalToVirtualPathMap.physicalPath}'. Virtual path: '${physicalToVirtualPathMap.virtualPath}'.`);
+ return physicalToVirtualPathMap.physicalPath;
+ }
+
+ public async updateConfigurationSettings(properties: any) : Promise {
+ for(var property in properties) {
+ if(!!properties[property] && properties[property].value !== undefined) {
+ properties[property] = properties[property].value;
+ }
+ }
+
+ console.log(tl.loc('UpdatingAppServiceConfigurationSettings', JSON.stringify(properties)));
+ await this._appService.patchConfiguration({'properties': properties});
+ console.log(tl.loc('UpdatedAppServiceConfigurationSettings'));
+ }
+
+ public async updateAndMonitorAppSettings(addProperties: any, deleteProperties?: any): Promise {
+ for(var property in addProperties) {
+ if(!!addProperties[property] && addProperties[property].value !== undefined) {
+ addProperties[property] = addProperties[property].value;
+ }
+ }
+
+ console.log(tl.loc('UpdatingAppServiceApplicationSettings', JSON.stringify(addProperties)));
+ var isNewValueUpdated: boolean = await this._appService.patchApplicationSettings(addProperties, deleteProperties);
+
+ if(!!isNewValueUpdated) {
+ console.log(tl.loc('UpdatedAppServiceApplicationSettings'));
+ }
+ else {
+ console.log(tl.loc('AppServiceApplicationSettingsAlreadyPresent'));
+ return isNewValueUpdated;
+ }
+
+ var kuduService = await this.getKuduService();
+ var noOftimesToIterate: number = 12;
+ tl.debug('retrieving values from Kudu service to check if new values are updated');
+ while(noOftimesToIterate > 0) {
+ var kuduServiceAppSettings = await kuduService.getAppSettings();
+ var propertiesChanged: boolean = true;
+ for(var property in addProperties) {
+ if(kuduServiceAppSettings[property] != addProperties[property]) {
+ tl.debug('New properties are not updated in Kudu service :(');
+ propertiesChanged = false;
+ break;
+ }
+ }
+ for(var property in deleteProperties) {
+ if(kuduServiceAppSettings[property]) {
+ tl.debug('Deleted properties are not reflected in Kudu service :(');
+ propertiesChanged = false;
+ break;
+ }
+ }
+
+ if(propertiesChanged) {
+ tl.debug('New properties are updated in Kudu service.');
+ console.log(tl.loc('UpdatedAppServiceApplicationSettings'));
+ return isNewValueUpdated;
+ }
+
+ noOftimesToIterate -= 1;
+ await webClient.sleepFor(5);
+ }
+
+ tl.debug('Timing out from app settings check');
+ return isNewValueUpdated;
+ }
+
+ public async enableRenameLockedFiles(): Promise {
+ try {
+ var webAppSettings = await this._appService.getApplicationSettings();
+ if(webAppSettings && webAppSettings.properties) {
+ if(webAppSettings.properties.MSDEPLOY_RENAME_LOCKED_FILES !== '1') {
+ tl.debug(`Rename locked files value found to be ${webAppSettings.properties.MSDEPLOY_RENAME_LOCKED_FILES}. Updating the value to 1`);
+ await this.updateAndMonitorAppSettings({ 'MSDEPLOY_RENAME_LOCKED_FILES' : '1' });
+ console.log(tl.loc('RenameLockedFilesEnabled'));
+ }
+ else {
+ tl.debug('Rename locked files is already enabled in App Service');
+ }
+ }
+ }
+ catch(error) {
+ throw new Error(tl.loc('FailedToEnableRenameLockedFiles', error));
+ }
+ }
+
+ public async updateStartupCommandAndRuntimeStack(runtimeStack: string, startupCommand?: string): Promise {
+ var configDetails = await this._appService.getConfiguration();
+ var appCommandLine: string = configDetails.properties.appCommandLine;
+ startupCommand = (!!startupCommand) ? startupCommand : appCommandLine;
+ var linuxFxVersion: string = configDetails.properties.linuxFxVersion;
+ runtimeStack = (!!runtimeStack) ? runtimeStack : linuxFxVersion;
+
+ if (appCommandLine != startupCommand || runtimeStack != linuxFxVersion) {
+ await this.updateConfigurationSettings({linuxFxVersion: runtimeStack, appCommandLine: startupCommand});
+ }
+ else {
+ tl.debug(`Skipped updating the values. linuxFxVersion: ${linuxFxVersion} : appCommandLine: ${appCommandLine}`)
+ }
+ }
+
+ private async _getPhysicalToVirtualPathMap(virtualApplication: string): Promise {
+ // construct URL depending on virtualApplication or root of webapplication
+ var physicalPath = null;
+ var virtualPath = "/" + virtualApplication;
+ var appConfigSettings = await this._appService.getConfiguration();
+ var virtualApplicationMappings = appConfigSettings.properties && appConfigSettings.properties.virtualApplications;
+
+ if(virtualApplicationMappings) {
+ for( var mapping of virtualApplicationMappings ) {
+ if(mapping.virtualPath.toLowerCase() == virtualPath.toLowerCase()) {
+ physicalPath = mapping.physicalPath;
+ break;
+ }
+ }
+ }
+
+ return physicalPath ? {
+ 'virtualPath': virtualPath,
+ 'physicalPath': physicalPath
+ }: null;
+ }
+
+ private _getNewMetadata(): any {
+ var collectionUri = tl.getVariable("system.teamfoundationCollectionUri");
+ var projectId = tl.getVariable("system.teamprojectId");
+ var releaseDefinitionId = tl.getVariable("release.definitionId");
+
+ // Log metadata properties based on whether task is running in build OR release.
+
+ let newProperties = {
+ VSTSRM_ProjectId: projectId,
+ VSTSRM_AccountId: tl.getVariable("system.collectionId")
+ }
+
+ if(!!releaseDefinitionId) {
+ // Task is running in Release
+ var artifactAlias = tl.getVariable(AzureDeployPackageArtifactAlias);
+ tl.debug("Artifact Source Alias is: "+ artifactAlias);
+
+ let buildDefinitionUrl = "";
+ let buildDefintionId = "";
+
+ if (artifactAlias) {
+ let artifactType = tl.getVariable(`release.artifacts.${artifactAlias}.type`);
+ // Get build definition info only when artifact type is build.
+ if (artifactType && artifactType.toLowerCase() == "build") {
+
+ buildDefintionId = tl.getVariable("build.definitionId");
+ let buildProjectId = tl.getVariable("build.projectId") || projectId;
+ let artifactBuildDefinitionId = tl.getVariable("release.artifacts." + artifactAlias + ".definitionId");
+ let artifactBuildProjectId = tl.getVariable("release.artifacts." + artifactAlias + ".projectId");
+
+ if (artifactBuildDefinitionId && artifactBuildProjectId) {
+ buildDefintionId = artifactBuildDefinitionId;
+ buildProjectId = artifactBuildProjectId;
+ }
+
+ buildDefinitionUrl = collectionUri + buildProjectId + "/_build?_a=simple-process&definitionId=" + buildDefintionId;
+ }
+ }
+
+ newProperties["VSTSRM_BuildDefinitionId"] = buildDefintionId;
+ newProperties["VSTSRM_ReleaseDefinitionId"] = releaseDefinitionId;
+ newProperties["VSTSRM_BuildDefinitionWebAccessUrl"] = buildDefinitionUrl;
+ newProperties["VSTSRM_ConfiguredCDEndPoint"] = collectionUri + projectId + "/_apps/hub/ms.vss-releaseManagement-web.hub-explorer?definitionId=" + releaseDefinitionId;
+ }
+ else {
+ // Task is running in Build
+ let buildDefintionId = tl.getVariable("system.definitionId");
+ newProperties["VSTSRM_BuildDefinitionId"] = buildDefintionId;
+ let buildDefinitionUrl = collectionUri + projectId + "/_build?_a=simple-process&definitionId=" + buildDefintionId;
+ newProperties["VSTSRM_BuildDefinitionWebAccessUrl"] = buildDefinitionUrl
+ newProperties["VSTSRM_ConfiguredCDEndPoint"] = buildDefinitionUrl;
+ }
+
+ return newProperties;
+ }
+
+}
\ No newline at end of file
diff --git a/_generated/AzureRmWebAppDeploymentV4/operations/AzureResourceFilterUtility.ts b/_generated/AzureRmWebAppDeploymentV4/operations/AzureResourceFilterUtility.ts
new file mode 100644
index 000000000000..091a77d51a06
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/operations/AzureResourceFilterUtility.ts
@@ -0,0 +1,20 @@
+import tl = require('azure-pipelines-task-lib/task');
+import { AzureEndpoint } from 'azure-pipelines-tasks-azure-arm-rest/azureModels';
+import { Resources } from 'azure-pipelines-tasks-azure-arm-rest/azure-arm-resource';
+
+export class AzureResourceFilterUtility {
+ public static async getResourceGroupName(endpoint: AzureEndpoint, resourceName: string): Promise {
+ const azureResources: Resources = new Resources(endpoint);
+ const resources: Array = await azureResources.getResources('Microsoft.Web/Sites', resourceName);
+ const resourceGroupIds: string[] = [...new Set(resources.map(r => r.id as string))];
+ if(!resourceGroupIds || resourceGroupIds.length == 0) {
+ throw new Error(tl.loc('ResourceDoesntExist', resourceName));
+ }
+ else if(resourceGroupIds.length > 1) {
+ throw new Error(tl.loc('MultipleResourceGroupFoundForAppService', resourceName));
+ }
+ else {
+ return resourceGroupIds[0].split("/")[4];
+ }
+ }
+}
\ No newline at end of file
diff --git a/_generated/AzureRmWebAppDeploymentV4/operations/Constants.ts b/_generated/AzureRmWebAppDeploymentV4/operations/Constants.ts
new file mode 100644
index 000000000000..3289e7f10524
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/operations/Constants.ts
@@ -0,0 +1,19 @@
+export const ConnectionType = {
+ PublishProfile: "PublishProfile",
+ AzureRM: "AzureRM"
+}
+
+export const SiteRoot: string = '/site/wwwroot';
+
+export const PublishProfileXml = {
+ ExcludeApp_Data: "ExcludeApp_Data",
+ EnableMSDeployAppOffline: "EnableMSDeployAppOffline",
+ SkipExtraFilesOnServer: "SkipExtraFilesOnServer",
+ SiteUrlToLaunchAfterPublish: "SiteUrlToLaunchAfterPublish",
+ MSDeployServiceURL: "MSDeployServiceURL",
+ DeployIisAppPath: "DeployIisAppPath",
+ MSDeploy: "MSDeploy",
+ UserName: "UserName"
+}
+
+export const AzureDeployPackageArtifactAlias = "Azure_App_Service_Deploy_PackageArtifactAlias";
\ No newline at end of file
diff --git a/_generated/AzureRmWebAppDeploymentV4/operations/ContainerBasedDeploymentUtility.ts b/_generated/AzureRmWebAppDeploymentV4/operations/ContainerBasedDeploymentUtility.ts
new file mode 100644
index 000000000000..8390173487b8
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/operations/ContainerBasedDeploymentUtility.ts
@@ -0,0 +1,226 @@
+import tl = require('azure-pipelines-task-lib/task');
+import url = require('url');
+import util = require('util');
+import { AzureAppService } from 'azure-pipelines-tasks-azure-arm-rest/azure-arm-app-service';
+import { TaskParameters } from './TaskParameters';
+import { parse } from 'azure-pipelines-tasks-webdeployment-common/ParameterParserUtility';
+import { AzureAppServiceUtility } from './AzureAppServiceUtility';
+
+enum registryTypes {
+ "AzureContainerRegistry",
+ "Registry", // TODO: Rename it to DockerHub while supporting all the registry types. Also add all these registry types in Task.json in ImageSource pick list.
+ "PrivateRegistry"
+}
+
+export class ContainerBasedDeploymentUtility {
+ private _appService: AzureAppService;
+ private _appServiceUtility: AzureAppServiceUtility;
+
+ constructor(appService: AzureAppService) {
+ this._appService = appService;
+ this._appServiceUtility = new AzureAppServiceUtility(appService);
+ }
+
+ public async deployWebAppImage(taskParameters: TaskParameters): Promise {
+ let imageName: string = this._getDockerHubImageName();
+ tl.debug("Deploying an image " + imageName + " to the webapp " + this._appService.getName());
+
+ tl.debug("Updating the webapp configuration.");
+ await this._updateConfigurationDetails(taskParameters, imageName);
+
+ tl.debug('Updating web app settings');
+ await this._updateApplicationSettings(taskParameters, imageName);
+ }
+
+ private async _updateApplicationSettings(taskParameters: TaskParameters, imageName: string): Promise {
+ var appSettingsParameters = taskParameters.AppSettings;
+ appSettingsParameters = appSettingsParameters ? appSettingsParameters.trim() : "";
+ appSettingsParameters = await this._getContainerRegistrySettings(imageName, null) + ' ' + appSettingsParameters;
+ var appSettingsNewProperties = parse(appSettingsParameters);
+ await this._appServiceUtility.updateAndMonitorAppSettings(appSettingsNewProperties);
+ }
+
+ private async _updateConfigurationDetails(taskParameters: TaskParameters, imageName: string): Promise {
+ var startupCommand: string = taskParameters.StartupCommand;
+ var configSettingsParameters = taskParameters.ConfigurationSettings;
+ var appSettingsNewProperties = !!configSettingsParameters ? parse(configSettingsParameters.trim()): { };
+ if(!!startupCommand) {
+ appSettingsNewProperties.appCommandLine = {
+ 'value': startupCommand
+ }
+ }
+
+ if (taskParameters.isHyperVContainerApp){
+ appSettingsNewProperties.windowsFxVersion = {
+ 'value': "DOCKER|" + imageName
+ }
+ }
+ else {
+ appSettingsNewProperties.linuxFxVersion = {
+ 'value': "DOCKER|" + imageName
+ }
+ }
+
+ tl.debug(`CONATINER UPDATE CONFIG VALUES : ${appSettingsNewProperties}`);
+ await this._appServiceUtility.updateConfigurationSettings(appSettingsNewProperties);
+ }
+
+ private getDockerHubImageName(): string {
+ var namespace = tl.getInput('DockerNamespace', true);
+ var image = tl.getInput('DockerRepository', true);
+ var tag = tl.getInput('DockerImageTag', false);
+
+ return this._constructImageName(namespace, image, tag);
+ }
+
+ private _getAzureContainerImageName(): string {
+ var registry = tl.getInput('AzureContainerRegistryLoginServer', true) + ".azurecr.io";
+ var image = tl.getInput('AzureContainerRegistryImage', true);
+ var tag = tl.getInput('AzureContainerRegistryTag', false);
+
+ return this._constructImageName(registry, image, tag);
+ }
+
+ private _getDockerHubImageName(): string {
+ var namespace = tl.getInput('DockerNamespace', true);
+ var image = tl.getInput('DockerRepository', true);
+ var tag = tl.getInput('DockerImageTag', false);
+
+ return this._constructImageName(namespace, image, tag);
+ }
+
+ private _constructImageName(namespace, repository, tag): string {
+ var imageName = null;
+ /*
+ Special Case : If release definition is not linked to build artifacts
+ then $(Build.BuildId) variable don't expand in release. So clearing state
+ of dockerImageTag if $(Build.BuildId) not expanded in value of dockerImageTag.
+ */
+ if(tag && (tag.trim() == "$(Build.BuildId)")) {
+ tag = null;
+ }
+
+ if(tag) {
+ imageName = namespace.toLowerCase() + "/" + repository.toLowerCase() + ":" + tag;
+ } else {
+ imageName = namespace.toLowerCase() + "/" + repository.toLowerCase();
+ }
+
+ return imageName.replace(/ /g,"");
+ }
+
+ private _getPrivateRegistryImageName(): string {
+ var registryConnectedServiceName = tl.getInput('RegistryConnectedServiceName', true);
+ var loginServer = tl.getEndpointAuthorizationParameter(registryConnectedServiceName, 'url', true);
+
+ var registry = url.parse(loginServer).hostname;
+ var image = tl.getInput('PrivateRegistryImage', true);
+ var tag = tl.getInput('PrivateRegistryTag', false);
+
+ return this._constructImageName(registry, image, tag);
+ }
+
+ private _updateWebAppSettings(appSettingsParameters, webAppSettings): void {
+ // In case of public repo, clear the connection details of a registry
+ var dockerRespositoryAccess = tl.getInput('DockerRepositoryAccess', true);
+
+ // Uncomment the below lines while supprting all registry types.
+ // if(dockerRespositoryAccess === "public")
+ // {
+ // deleteRegistryConnectionSettings(webAppSettings);
+ // }
+
+ var parsedAppSettings = parse(appSettingsParameters);
+ for (var settingName in parsedAppSettings) {
+ var setting = settingName.trim();
+ var settingVal = parsedAppSettings[settingName].value;
+ settingVal = settingVal ? settingVal.trim() : "";
+
+ if(setting) {
+ webAppSettings["properties"][setting] = settingVal;
+ }
+ }
+ }
+
+ private _getImageName(): string {
+ var registryType = tl.getInput('ImageSource', true);
+ var imageName = null;
+
+ switch(registryType) {
+ case registryTypes[registryTypes.AzureContainerRegistry]:
+ imageName = this._getAzureContainerImageName();
+ break;
+
+ case registryTypes[registryTypes.Registry]:
+ imageName = this._getDockerHubImageName();
+ break;
+
+ case registryTypes[registryTypes.PrivateRegistry]:
+ imageName = this._getPrivateRegistryImageName();
+ break;
+ }
+
+ return imageName;
+ }
+
+ private async _getContainerRegistrySettings(imageName, endPoint): Promise {
+ var containerRegistryType: string = 'Registry';
+ var containerRegistrySettings: string = "-DOCKER_CUSTOM_IMAGE_NAME " + imageName;
+ var containerRegistryAuthParamsFormatString: string = "-DOCKER_REGISTRY_SERVER_URL %s -DOCKER_REGISTRY_SERVER_USERNAME %s -DOCKER_REGISTRY_SERVER_PASSWORD %s";
+
+ switch(containerRegistryType) {
+ case registryTypes[registryTypes.AzureContainerRegistry]:
+ containerRegistrySettings = await this._getAzureContainerRegistrySettings(endPoint, containerRegistrySettings, containerRegistryAuthParamsFormatString);
+ break;
+
+ case registryTypes[registryTypes.Registry]:
+ var dockerRespositoryAccess = tl.getInput('DockerRepositoryAccess', false);
+ if(dockerRespositoryAccess === "private")
+ {
+ containerRegistrySettings = this._getDockerPrivateRegistrySettings(containerRegistrySettings, containerRegistryAuthParamsFormatString);
+ }
+ break;
+
+ case registryTypes[registryTypes.PrivateRegistry]:
+ containerRegistrySettings = this._getDockerPrivateRegistrySettings(containerRegistrySettings, containerRegistryAuthParamsFormatString);
+ break;
+ }
+
+ return containerRegistrySettings;
+ }
+
+ private async _getAzureContainerRegistrySettings(endPoint, containerRegistrySettings, containerRegistryAuthParamsFormatString): Promise {
+ var registryServerName = tl.getInput('AzureContainerRegistryLoginServer', true);
+ var registryUrl = "https://" + registryServerName + ".azurecr.io";
+ tl.debug("Azure Container Registry Url: " + registryUrl);
+
+ var registryName = tl.getInput('AzureContainerRegistry', true);
+ var resourceGroupName = '';// await azureRESTUtility.getResourceGroupName(endPoint, registryName, "Microsoft.ContainerRegistry/registries");
+ tl.debug("Resource group name of a registry: " + resourceGroupName);
+
+ var creds = null //await azureRESTUtility.getAzureContainerRegistryCredentials(endPoint, registryName, resourceGroupName);
+ tl.debug("Successfully retrieved the registry credentials");
+
+ var username = creds.username;
+ var password = creds["passwords"][0].value;
+
+ return containerRegistrySettings + " " + util.format(containerRegistryAuthParamsFormatString, registryUrl, username, password);
+ }
+
+ private _getDockerPrivateRegistrySettings(containerRegistrySettings, containerRegistryAuthParamsFormatString): string {
+ var registryConnectedServiceName = tl.getInput('RegistryConnectedServiceName', true);
+ var username = tl.getEndpointAuthorizationParameter(registryConnectedServiceName, 'username', true);
+ var password = tl.getEndpointAuthorizationParameter(registryConnectedServiceName, 'password', true);
+ var registryUrl = tl.getEndpointAuthorizationParameter(registryConnectedServiceName, 'registry', true);
+
+ tl.debug("Docker or Private Container Registry Url: " + registryUrl);
+
+ return containerRegistrySettings + " " + util.format(containerRegistryAuthParamsFormatString, registryUrl, username, password);
+ }
+
+ private _deleteRegistryConnectionSettings(webAppSettings): void {
+ delete webAppSettings["properties"]["DOCKER_REGISTRY_SERVER_URL"];
+ delete webAppSettings["properties"]["DOCKER_REGISTRY_SERVER_USERNAME"];
+ delete webAppSettings["properties"]["DOCKER_REGISTRY_SERVER_PASSWORD"];
+ }
+}
\ No newline at end of file
diff --git a/_generated/AzureRmWebAppDeploymentV4/operations/FileTransformsUtility.ts b/_generated/AzureRmWebAppDeploymentV4/operations/FileTransformsUtility.ts
new file mode 100644
index 000000000000..5483a5ca2376
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/operations/FileTransformsUtility.ts
@@ -0,0 +1,37 @@
+import tl = require('azure-pipelines-task-lib/task');
+import { TaskParameters } from './TaskParameters';
+import { parse } from 'azure-pipelines-tasks-webdeployment-common/ParameterParserUtility';
+var deployUtility = require('azure-pipelines-tasks-webdeployment-common/utility.js');
+var fileTransformationsUtility = require('azure-pipelines-tasks-webdeployment-common/fileTransformationsUtility.js');
+var generateWebConfigUtil = require('azure-pipelines-tasks-webdeployment-common/webconfigutil.js');
+
+export class FileTransformsUtility {
+
+ private static rootDirectoryPath: string = "D:\\home\\site\\wwwroot";
+ public static async applyTransformations(webPackage: string, taskParams: TaskParameters): Promise {
+ tl.debug("WebConfigParameters is "+ taskParams.WebConfigParameters);
+ var applyFileTransformFlag = taskParams.JSONFiles.length != 0 || taskParams.XmlTransformation || taskParams.XmlVariableSubstitution;
+ if (applyFileTransformFlag || taskParams.WebConfigParameters) {
+ var isFolderBasedDeployment: boolean = tl.stats(webPackage).isDirectory();
+ var folderPath = await deployUtility.generateTemporaryFolderForDeployment(isFolderBasedDeployment, webPackage, taskParams.Package.getPackageType());
+ if (taskParams.WebConfigParameters) {
+ tl.debug('parsing web.config parameters');
+ var webConfigParameters = parse(taskParams.WebConfigParameters);
+ generateWebConfigUtil.addWebConfigFile(folderPath, webConfigParameters, this.rootDirectoryPath);
+ }
+
+ if (applyFileTransformFlag) {
+ var isMSBuildPackage = !isFolderBasedDeployment && (await deployUtility.isMSDeployPackage(webPackage));
+ fileTransformationsUtility.fileTransformations(isFolderBasedDeployment, taskParams.JSONFiles, taskParams.XmlTransformation, taskParams.XmlVariableSubstitution, folderPath, isMSBuildPackage);
+ }
+
+ var output = await deployUtility.archiveFolderForDeployment(isFolderBasedDeployment, folderPath);
+ webPackage = output.webDeployPkg;
+ }
+ else {
+ tl.debug('File Tranformation not enabled');
+ }
+
+ return webPackage;
+ }
+}
\ No newline at end of file
diff --git a/_generated/AzureRmWebAppDeploymentV4/operations/KuduServiceUtility.ts b/_generated/AzureRmWebAppDeploymentV4/operations/KuduServiceUtility.ts
new file mode 100644
index 000000000000..7cc3560e54a5
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/operations/KuduServiceUtility.ts
@@ -0,0 +1,533 @@
+import tl = require('azure-pipelines-task-lib/task');
+import Q = require('q');
+import path = require('path');
+
+import { DeploymentType, TaskParameters } from './TaskParameters';
+
+import { AzureDeployPackageArtifactAlias } from './Constants';
+import { KUDU_DEPLOYMENT_CONSTANTS } from 'azure-pipelines-tasks-azure-arm-rest/constants';
+import { Kudu } from 'azure-pipelines-tasks-azure-arm-rest/azure-arm-app-service-kudu';
+
+import webClient = require('azure-pipelines-tasks-azure-arm-rest/webClient');
+
+var deployUtility = require('azure-pipelines-tasks-webdeployment-common/utility.js');
+var zipUtility = require('azure-pipelines-tasks-webdeployment-common/ziputility.js');
+const physicalRootPath: string = '/site/wwwroot';
+const deploymentFolder: string = 'site/deployments';
+const manifestFileName: string = 'manifest';
+const VSTS_ZIP_DEPLOY: string = 'VSTS_ZIP_DEPLOY';
+const VSTS_DEPLOY: string = 'VSTS';
+
+export class KuduServiceUtility {
+ private _appServiceKuduService: Kudu;
+ private _deploymentID: string;
+
+ constructor(kuduService: Kudu) {
+ this._appServiceKuduService = kuduService;
+ }
+
+ public async createPathIfRequired(phsyicalPath: string): Promise {
+ var listDir = await this._appServiceKuduService.listDir(phsyicalPath);
+ if(listDir == null) {
+ await this._appServiceKuduService.createPath(phsyicalPath);
+ }
+ }
+
+ public async updateDeploymentStatus(taskResult: boolean, DeploymentID: string, customMessage: any): Promise {
+ try {
+ let requestBody = this._getUpdateHistoryRequest(taskResult, DeploymentID, customMessage);
+ return await this._appServiceKuduService.updateDeployment(requestBody);
+ }
+ catch(error) {
+ tl.warning(error);
+ }
+ }
+
+ public async runPostDeploymentScript(taskParams: TaskParameters, directoryPath?: string): Promise {
+ var uniqueID = this.getDeploymentID();
+ let vstsPostDeploymentFolderPath: string = path.join(physicalRootPath.substring(1), '..', 'VSTS_PostDeployment_' + uniqueID);
+ try {
+ var rootDirectoryPath = directoryPath || physicalRootPath.substring(1);
+
+ if(taskParams.TakeAppOfflineFlag) {
+ await this._appOfflineKuduService(rootDirectoryPath, true);
+ }
+
+ var scriptFile = this._getPostDeploymentScript(taskParams.ScriptType, taskParams.InlineScript, taskParams.ScriptPath, taskParams.isLinuxApp);
+ var fileExtension : string = taskParams.isLinuxApp ? '.sh' : '.cmd';
+ var mainCmdFilePath = path.join(__dirname, '..', 'postDeploymentScript', 'mainCmdFile' + fileExtension);
+ await this._appServiceKuduService.uploadFile(vstsPostDeploymentFolderPath, 'mainCmdFile' + fileExtension, mainCmdFilePath);
+ await this._appServiceKuduService.uploadFile(vstsPostDeploymentFolderPath, 'kuduPostDeploymentScript' + fileExtension, scriptFile.filePath);
+ console.log(tl.loc('ExecuteScriptOnKudu'));
+ var cmdFilePath = '%Home%\\site\\VSTS_PostDeployment_' + uniqueID + '\\mainCmdFile' + fileExtension;
+ var scriprResultPath = '/site/VSTS_PostDeployment_' + uniqueID;
+ if (taskParams.isLinuxApp){
+ cmdFilePath = '/home/site/VSTS_PostDeployment_' + uniqueID + '/mainCmdFile' + fileExtension;
+ }
+ await this.runCommand(rootDirectoryPath, cmdFilePath + ' ' + uniqueID, 30, scriprResultPath, 'script_result.txt');
+ await this._printPostDeploymentLogs(vstsPostDeploymentFolderPath);
+
+ }
+ catch(error) {
+ if(taskParams.UseWebDeploy && taskParams.DeploymentType === DeploymentType.runFromZip) {
+ var debugMode = tl.getVariable('system.debug');
+ if(debugMode && debugMode.toLowerCase() == 'true') {
+ tl.warning(tl.loc('Publishusingrunfromzipwithpostdeploymentscript'));
+ }
+ else {
+ console.log(tl.loc('Publishusingrunfromzipwithpostdeploymentscript'));
+ }
+ }
+ throw Error(tl.loc('FailedToRunScriptOnKuduError', error));
+ }
+ finally {
+ try {
+ let deleteFilePath = '%Home%\\site\\VSTS_PostDeployment_' + uniqueID + '\\delete_log_file' + fileExtension;
+ if(taskParams.isLinuxApp) {
+ deleteFilePath = '/home/site/VSTS_PostDeployment_' + uniqueID + '/delete_log_file' + fileExtension;
+ }
+
+ await this._appServiceKuduService.uploadFile(vstsPostDeploymentFolderPath, 'delete_log_file' + fileExtension, path.join(__dirname, '..', 'postDeploymentScript', 'deleteLogFile' + fileExtension));
+ await this.runCommand(vstsPostDeploymentFolderPath, deleteFilePath);
+ await this._appServiceKuduService.deleteFolder(vstsPostDeploymentFolderPath);
+ }
+ catch(error) {
+ tl.debug('Unable to delete log files : ' + error);
+ }
+ if(taskParams.TakeAppOfflineFlag) {
+ await this._appOfflineKuduService(rootDirectoryPath, false);
+ }
+ }
+ }
+
+ public getDeploymentID(): string {
+ if(this._deploymentID) {
+ return this._deploymentID;
+ }
+
+ var buildUrl = tl.getVariable('build.buildUri');
+ var releaseUrl = tl.getVariable('release.releaseUri');
+
+ var buildId = tl.getVariable('build.buildId');
+ var releaseId = tl.getVariable('release.releaseId');
+
+ var buildNumber = tl.getVariable('build.buildNumber');
+ var releaseName = tl.getVariable('release.releaseName');
+
+ var collectionUrl = tl.getVariable('system.TeamFoundationCollectionUri');
+ var teamProject = tl.getVariable('system.teamProjectId');
+
+ var commitId = tl.getVariable('build.sourceVersion');
+ var repoName = tl.getVariable('build.repository.name');
+ var repoProvider = tl.getVariable('build.repository.provider');
+
+ var buildOrReleaseUrl = "" ;
+ var deploymentID: string = (releaseId ? releaseId : buildId) + Date.now().toString();
+
+ return deploymentID;
+ }
+
+ public async deployWebPackage(packagePath: string, physicalPath: string, virtualPath: string, appOffline?: boolean): Promise {
+ physicalPath = physicalPath ? physicalPath : physicalRootPath;
+ try {
+ if(appOffline) {
+ await this._appOfflineKuduService(physicalPath, true);
+ tl.debug('Wait for 5 seconds for app_offline to take effect');
+ await webClient.sleepFor(5);
+ }
+
+ if(tl.stats(packagePath).isDirectory()) {
+ let tempPackagePath = deployUtility.generateTemporaryFolderOrZipPath(tl.getVariable('AGENT.TEMPDIRECTORY'), false);
+ packagePath = await zipUtility.archiveFolder(packagePath, "", tempPackagePath);
+ tl.debug("Compressed folder " + packagePath + " into zip : " + packagePath);
+ }
+ else if(packagePath.toLowerCase().endsWith('.war')) {
+ physicalPath = await this._warFileDeployment(packagePath, physicalPath, virtualPath);
+ }
+
+ await this._appServiceKuduService.extractZIP(packagePath, physicalPath);
+ if(appOffline) {
+ await this._appOfflineKuduService(physicalPath, false);
+ }
+
+ console.log(tl.loc("Successfullydeployedpackageusingkuduserviceat", packagePath, physicalPath));
+ }
+ catch(error) {
+ tl.error(tl.loc('PackageDeploymentFailed'));
+ throw Error(error);
+ }
+ }
+
+ public async deployUsingZipDeploy(packagePath: string, appOffline?: boolean, customMessage?: any): Promise {
+ try {
+ console.log(tl.loc('PackageDeploymentInitiated'));
+
+ if(appOffline) {
+ await this._appOfflineKuduService(physicalRootPath, true);
+ tl.debug('Wait for 5 seconds for app_offline to take effect');
+ await webClient.sleepFor(5);
+ }
+
+ let queryParameters: Array = [
+ 'isAsync=true',
+ 'deployer=' + VSTS_ZIP_DEPLOY
+ ];
+
+ var deploymentMessage = this._getUpdateHistoryRequest(true, null, customMessage).message;
+ queryParameters.push('message=' + encodeURIComponent(deploymentMessage));
+
+ let deploymentDetails = await this._appServiceKuduService.zipDeploy(packagePath, queryParameters);
+
+ 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 deployUsingRunFromZip(packagePath: string, customMessage?: any) : Promise {
+ try {
+ console.log(tl.loc('PackageDeploymentInitiated'));
+
+ let queryParameters: Array = [
+ 'deployer=' + VSTS_DEPLOY
+ ];
+
+ var deploymentMessage = this._getUpdateHistoryRequest(true, null, customMessage).message;
+ queryParameters.push('message=' + encodeURIComponent(deploymentMessage));
+ await this._appServiceKuduService.zipDeploy(packagePath, queryParameters);
+
+ console.log(tl.loc('PackageDeploymentSuccess'));
+ console.log("NOTE: Run From Package makes wwwroot read-only, so you will receive an error when writing files to this directory.");
+
+ }
+ catch(error) {
+ tl.error(tl.loc('PackageDeploymentFailed'));
+ throw Error(error);
+ }
+ }
+
+ public async deployUsingWarDeploy(packagePath: string, customMessage?: any, targetFolderName?: any): Promise {
+ try {
+ console.log(tl.loc('WarPackageDeploymentInitiated'));
+
+ let queryParameters: Array = [
+ 'isAsync=true'
+ ];
+
+ if(targetFolderName) {
+ queryParameters.push('name=' + encodeURIComponent(targetFolderName));
+ }
+
+ var deploymentMessage = this._getUpdateHistoryRequest(true, null, customMessage).message;
+
+ queryParameters.push('message=' + encodeURIComponent(deploymentMessage));
+ let deploymentDetails = await this._appServiceKuduService.warDeploy(packagePath, queryParameters);
+ await this._processDeploymentResponse(deploymentDetails);
+ console.log(tl.loc('PackageDeploymentSuccess'));
+
+ return deploymentDetails.id;
+ }
+ catch(error) {
+ tl.error(tl.loc('PackageDeploymentFailed'));
+ throw Error(error);
+ }
+ }
+
+ public async postZipDeployOperation(oldDeploymentID: string, activeDeploymentID: string): Promise {
+ try {
+ tl.debug(`ZIP DEPLOY - Performing post zip-deploy operation: ${oldDeploymentID} => ${activeDeploymentID}`);
+ let manifestFileContent = await this._appServiceKuduService.getFileContent(`${deploymentFolder}/${oldDeploymentID}`, manifestFileName);
+ if(!!manifestFileContent) {
+ let tempManifestFile: string = path.join(tl.getVariable('AGENT.TEMPDIRECTORY'), manifestFileName);
+ tl.writeFile(tempManifestFile, manifestFileContent);
+ await this._appServiceKuduService.uploadFile(`${deploymentFolder}/${activeDeploymentID}`, manifestFileName, tempManifestFile);
+ }
+ tl.debug('ZIP DEPLOY - Performed post-zipdeploy operation.');
+ }
+ catch(error) {
+ tl.debug(`Failed to execute post zip-deploy operation: ${JSON.stringify(error)}.`);
+ }
+ }
+
+ public async warmpUp() {
+ try {
+
+ tl.debug('warming up Kudu Service');
+ await this._appServiceKuduService.getAppSettings();
+ tl.debug('warmed up Kudu Service');
+
+ }
+ catch(error) {
+ tl.debug('Failed to warm-up Kudu: ' + error.toString());
+ }
+ }
+
+ private async _processDeploymentResponse(deploymentDetails: any): Promise {
+ try {
+ var kuduDeploymentDetails = await this._appServiceKuduService.getDeploymentDetails(deploymentDetails.id);
+ tl.debug(`logs from kudu deploy: ${kuduDeploymentDetails.log_url}`);
+
+ if(deploymentDetails.status == KUDU_DEPLOYMENT_CONSTANTS.FAILED || tl.getVariable('system.debug') && tl.getVariable('system.debug').toLowerCase() == 'true') {
+ await this._printZipDeployLogs(kuduDeploymentDetails.log_url);
+ }
+ else {
+ console.log(tl.loc('DeployLogsURL', kuduDeploymentDetails.log_url));
+ }
+ }
+ catch(error) {
+ tl.debug(`Unable to fetch logs for kudu Deploy: ${JSON.stringify(error)}`);
+ }
+
+ if(deploymentDetails.status == KUDU_DEPLOYMENT_CONSTANTS.FAILED) {
+ throw tl.loc('PackageDeploymentUsingZipDeployFailed');
+ }
+ }
+
+ private async _printZipDeployLogs(log_url: string): Promise {
+ if(!log_url) {
+ return;
+ }
+
+ var deploymentLogs = await this._appServiceKuduService.getDeploymentLogs(log_url);
+ for(var deploymentLog of deploymentLogs) {
+ console.log(`${deploymentLog.message}`);
+
+ if(deploymentLog.details_url) {
+ await this._printZipDeployLogs(deploymentLog.details_url);
+ }
+ }
+ }
+
+ private async _printPostDeploymentLogs(physicalPath: string) : Promise {
+ var stdoutLog = await this._appServiceKuduService.getFileContent(physicalPath, 'stdout.txt');
+ var stderrLog = await this._appServiceKuduService.getFileContent(physicalPath, 'stderr.txt');
+ var scriptReturnCode = await this._appServiceKuduService.getFileContent(physicalPath, 'script_result.txt');
+
+ if(scriptReturnCode == null) {
+ throw new Error('File not found in Kudu Service. ' + 'script_result.txt');
+ }
+
+ if(stdoutLog) {
+ console.log(tl.loc('stdoutFromScript'));
+ console.log(stdoutLog);
+ }
+ if(stderrLog) {
+ console.log(tl.loc('stderrFromScript'));
+ if(scriptReturnCode != '0') {
+ tl.error(stderrLog);
+ throw Error(tl.loc('ScriptExecutionOnKuduFailed', scriptReturnCode, stderrLog));
+ }
+ else {
+ console.log(stderrLog);
+ }
+ }
+ }
+
+ private async runCommand(physicalPath: string, command: string, timeOutInMinutes?: number, pollFolderPath?: string, pollFile?: string): Promise {
+ try {
+ await this._appServiceKuduService.runCommand(physicalPath, command);
+ }
+ catch(error) {
+ if(!!pollFolderPath && !!pollFile && timeOutInMinutes > 0 && error.toString().indexOf('Request timeout: /api/command') != -1) {
+ tl.debug('Request timeout occurs. Trying to poll for file: ' + pollFile);
+ await this._pollForFile(pollFolderPath, pollFile, timeOutInMinutes);
+ }
+ else {
+ if(typeof error.valueOf() == 'string') {
+ throw error;
+ }
+
+ throw `${error.statusCode} - ${error.statusMessage}`;
+ }
+ }
+ }
+
+ private _getPostDeploymentScript(scriptType, inlineScript, scriptPath, isLinux): any {
+ if(scriptType === 'Inline Script') {
+ tl.debug('creating kuduPostDeploymentScript_local file');
+ var scriptFilePath = path.join(tl.getVariable('AGENT.TEMPDIRECTORY'), isLinux ? 'kuduPostDeploymentScript_local.sh' : 'kuduPostDeploymentScript_local.cmd');
+ tl.writeFile(scriptFilePath, inlineScript);
+ tl.debug('Created temporary script file : ' + scriptFilePath);
+ return {
+ "filePath": scriptFilePath,
+ "isCreated": true
+ };
+ }
+ if(!tl.exist(scriptPath)) {
+ throw Error(tl.loc('ScriptFileNotFound', scriptPath));
+ }
+ var scriptExtension = path.extname(scriptPath);
+ if(isLinux){
+ if(scriptExtension != '.sh'){
+ throw Error(tl.loc('InvalidScriptFile', scriptPath));
+ }
+ } else {
+ if(scriptExtension != '.bat' && scriptExtension != '.cmd') {
+ throw Error(tl.loc('InvalidScriptFile', scriptPath));
+ }
+ }
+ tl.debug('postDeployment script path to execute : ' + scriptPath);
+ return {
+ filePath: scriptPath,
+ isCreated: false
+ }
+ }
+
+ private async _warFileDeployment(packagePath: string, physicalPath: string, virtualPath?: string): Promise {
+ tl.debug('WAR: webAppPackage = ' + packagePath);
+ let warFile = path.basename(packagePath.slice(0, packagePath.length - '.war'.length));
+ let warExt = packagePath.slice(packagePath.length - '.war'.length)
+ tl.debug('WAR: warFile = ' + warFile);
+ warFile = warFile + ((virtualPath) ? "/" + virtualPath : "");
+ tl.debug('WAR: warFile = ' + warFile);
+ physicalPath = physicalPath + "/webapps/" + warFile;
+ await this.createPathIfRequired(physicalPath);
+ return physicalPath;
+
+ }
+
+ private async _appOfflineKuduService(physicalPath: string, enableFeature: boolean): Promise {
+ if(enableFeature) {
+ tl.debug('Trying to enable app offline mode.');
+ var appOfflineFilePath = path.join(tl.getVariable('AGENT.TEMPDIRECTORY'), 'app_offline_temp.htm');
+ tl.writeFile(appOfflineFilePath, '
Note: This will also remove all files related to any extension installed on this Azure App Service. To prevent this, select 'Exclude files from App_Data folder' checkbox. "
+ },
+ {
+ "name": "ExcludeFilesFromAppDataFlag",
+ "type": "boolean",
+ "label": "Exclude files from the App_Data folder",
+ "defaultValue": "true",
+ "required": false,
+ "groupName": "AdditionalDeploymentOptions",
+ "visibleRule": "UseWebDeploy == true && DeploymentType == webDeploy",
+ "helpMarkDown": "Select the option to prevent files in the App_Data folder from being deployed to/ deleted from the Azure App Service."
+ },
+ {
+ "name": "AdditionalArguments",
+ "type": "string",
+ "label": "Additional arguments",
+ "required": false,
+ "defaultValue": "-retryAttempts:6 -retryInterval:10000",
+ "groupName": "AdditionalDeploymentOptions",
+ "visibleRule": "UseWebDeploy == true && DeploymentType == webDeploy",
+ "helpMarkDown": "Additional Web Deploy arguments following the syntax -key:value . These will be applied when deploying the Azure App Service. Example: -disableLink:AppPoolExtension -disableLink:ContentExtension. For more examples of Web Deploy operation settings, refer to [this](https://go.microsoft.com/fwlink/?linkid=838471)."
+ },
+ {
+ "name": "RenameFilesFlag",
+ "type": "boolean",
+ "label": "Rename locked files",
+ "defaultValue": "true",
+ "required": false,
+ "visibleRule": "UseWebDeploy == true && DeploymentType == webDeploy",
+ "groupName": "AdditionalDeploymentOptions",
+ "helpMarkDown": "Select the option to enable msdeploy flag MSDEPLOY_RENAME_LOCKED_FILES=1 in Azure App Service application settings. The option if set enables msdeploy to rename locked files that are locked during app deployment"
+ },
+ {
+ "name": "XmlTransformation",
+ "aliases": [
+ "enableXmlTransform"
+ ],
+ "type": "boolean",
+ "label": "XML transformation",
+ "required": false,
+ "defaultValue": false,
+ "groupName": "FileTransformsAndVariableSubstitution",
+ "helpMarkDown": "The config transforms will be run for `*.Release.config` and `*..config` on the `*.config file`. Config transforms will be run prior to the Variable Substitution. XML transformations are supported only for Windows platform."
+ },
+ {
+ "name": "XmlVariableSubstitution",
+ "aliases": [
+ "enableXmlVariableSubstitution"
+ ],
+ "type": "boolean",
+ "label": "XML variable substitution",
+ "required": false,
+ "defaultValue": false,
+ "groupName": "FileTransformsAndVariableSubstitution",
+ "helpMarkDown": "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. "
+ },
+ {
+ "name": "JSONFiles",
+ "type": "multiLine",
+ "label": "JSON variable substitution",
+ "required": false,
+ "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."
+ }
+ ],
+ "outputVariables": [
+ {
+ "name": "AppServiceApplicationUrl",
+ "description": "Application URL of the selected App Service."
+ }
+ ],
+ "dataSourceBindings": [
+ {
+ "target": "WebAppName",
+ "endpointId": "$(ConnectedServiceName)",
+ "dataSourceName": "AzureRMWebAppNamesByAppType",
+ "parameters": {
+ "WebAppKind": "$(WebAppKind)"
+ }
+ },
+ {
+ "target": "ResourceGroupName",
+ "endpointId": "$(ConnectedServiceName)",
+ "dataSourceName": "AzureRMWebAppResourceGroup",
+ "parameters": {
+ "WebAppName": "$(WebAppName)"
+ }
+ },
+ {
+ "target": "SlotName",
+ "endpointId": "$(ConnectedServiceName)",
+ "dataSourceName": "AzureRMWebAppSlotsId",
+ "parameters": {
+ "WebAppName": "$(WebAppName)",
+ "ResourceGroupName": "$(ResourceGroupName)"
+ },
+ "resultTemplate": "{\"Value\":\"{{{ #extractResource slots}}}\",\"DisplayValue\":\"{{{ #extractResource slots}}}\"}"
+ },
+ {
+ "target": "RuntimeStack",
+ "endpointId": "$(ConnectedServiceName)",
+ "dataSourceName": "AzureRMWebAppRuntimeStacksByOsType",
+ "parameters": {
+ "osTypeSelected": "Linux"
+ },
+ "resultTemplate": "{\"Value\":\"{{{ runtimeVersion }}}\",\"DisplayValue\":\"{{{ displayVersion }}} ({{{ runtimeVersion }}})\"}"
+ }
+ ],
+ "instanceNameFormat": "Azure App Service Deploy: $(WebAppName)",
+ "execution": {
+ "Node10": {
+ "target": "azurermwebappdeployment.js"
+ },
+ "Node16": {
+ "target": "azurermwebappdeployment.js",
+ "argumentFormat": ""
+ }
+ },
+ "messages": {
+ "Invalidwebapppackageorfolderpathprovided": "Invalid App Service package or folder path provided: %s",
+ "SetParamFilenotfound0": "Set parameters file not found: %s",
+ "XDTTransformationsappliedsuccessfully": "XML Transformations applied successfully",
+ "GotconnectiondetailsforazureRMWebApp0": "Got service connection details for Azure App Service:'%s'",
+ "ErrorNoSuchDeployingMethodExists": "Error : No such deploying method exists",
+ "UnabletoretrieveconnectiondetailsforazureRMWebApp": "Unable to retrieve service connection details for Azure App Service : %s. Status Code: %s (%s)",
+ "UnabletoretrieveResourceID": "Unable to retrieve service connection details for Azure Resource:'%s'. Status Code: %s",
+ "Successfullyupdateddeploymenthistory": "Successfully updated deployment History at %s",
+ "Failedtoupdatedeploymenthistory": "Failed to update deployment history. Error: %s",
+ "WARNINGCannotupdatedeploymentstatusSCMendpointisnotenabledforthiswebsite": "WARNING : Cannot update deployment status : SCM endpoint is not enabled for this website",
+ "Unabletoretrievewebconfigdetails": "Unable to retrieve App Service configuration details. Status Code: '%s'",
+ "Unabletoretrievewebappsettings": "Unable to retrieve App Service application settings. [Status Code: '%s', Error Message: '%s']",
+ "Unabletoupdatewebappsettings": "Unable to update App service application settings. Status Code: '%s'",
+ "CannotupdatedeploymentstatusuniquedeploymentIdCannotBeRetrieved": "Cannot update deployment status : Unique Deployment ID cannot be retrieved",
+ "PackageDeploymentSuccess": "Successfully deployed web package to App Service.",
+ "PackageDeploymentFailed": "Failed to deploy web package to App Service.",
+ "Runningcommand": "Running command: %s",
+ "Deployingwebapplicationatvirtualpathandphysicalpath": "Deploying web package : %s at virtual path (physical path) : %s (%s)",
+ "Successfullydeployedpackageusingkuduserviceat": "Successfully deployed package %s using kudu service at %s",
+ "Failedtodeploywebapppackageusingkuduservice": "Failed to deploy App Service package using kudu service : %s",
+ "Unabletodeploywebappresponsecode": "Unable to deploy App Service due to error code : %s",
+ "MSDeploygeneratedpackageareonlysupportedforWindowsplatform": "MSDeploy generated packages are only supported for Windows platform.",
+ "UnsupportedinstalledversionfoundforMSDeployversionshouldbeatleast3orabove": "Unsupported installed version: %s found for MSDeploy. version should be at least 3 or above",
+ "UnabletofindthelocationofMSDeployfromregistryonmachineError": "Unable to find the location of MS Deploy from registry on machine (Error : %s)",
+ "Nopackagefoundwithspecifiedpattern": "No package found with specified pattern: %s Check if the package mentioned in the task is published as an artifact in the build or a previous stage and downloaded in the current job.",
+ "MorethanonepackagematchedwithspecifiedpatternPleaserestrainthesearchpattern": "More than one package matched with specified pattern: %s. Please restrain the search pattern.",
+ "Trytodeploywebappagainwithappofflineoptionselected": "Try to deploy app service again with Take application offline option selected.",
+ "Trytodeploywebappagainwithrenamefileoptionselected": "Try to deploy app service again with Rename locked files option selected.",
+ "NOJSONfilematchedwithspecificpattern": "NO JSON file matched with specific pattern: %s.",
+ "Configfiledoesntexists": "Configuration file %s doesn't exist.",
+ "Failedtowritetoconfigfilewitherror": "Failed to write to config file %s with error : %s",
+ "AppOfflineModeenabled": "App offline mode enabled.",
+ "Failedtoenableappofflinemode": "Failed to enable app offline mode. Status Code: %s (%s)",
+ "AppOflineModedisabled": "App offline mode disabled.",
+ "FailedtodisableAppOfflineMode": "Failed to disable App offline mode. Status Code: %s (%s)",
+ "CannotPerformXdtTransformationOnNonWindowsPlatform": "Cannot perform XML transformations on a non-Windows platform.",
+ "XdtTransformationErrorWhileTransforming": "XML transformation error while transforming %s using %s.",
+ "PublishusingwebdeployoptionsaresupportedonlywhenusingWindowsagent": "Publish using webdeploy options are supported only when using Windows agent",
+ "Publishusingzipdeploynotsupportedformsbuildpackage": "Publish using zip deploy option is not supported for msBuild package type.",
+ "Publishusingzipdeploynotsupportedforvirtualapplication": "Publish using zip deploy option is not supported for virtual application.",
+ "Publishusingzipdeploydoesnotsupportwarfile": "Publish using zip deploy or RunFromZip options do not support war file deployment.",
+ "Publishusingrunfromzipwithpostdeploymentscript": "Publish using RunFromZip might not support post deployment script if it makes changes to wwwroot, since the folder is ReadOnly.",
+ "ResourceDoesntExist": "Resource '%s' doesn't exist. Resource should exist before deployment.",
+ "EncodeNotSupported": "Detected file encoding of the file %s as %s. Variable substitution is not supported with file encoding %s. Supported encodings are UTF-8 and UTF-16 LE.",
+ "UnknownFileEncodeError": "Unable to detect encoding of the file %s (typeCode: %s). Supported encodings are UTF-8 and UTF-16 LE.",
+ "ShortFileBufferError": "File buffer is too short to detect encoding type : %s",
+ "FailedToUpdateAzureRMWebAppConfigDetails": "Failed to update App Service configuration details. Error: %s",
+ "SuccessfullyUpdatedAzureRMWebAppConfigDetails": "Successfully updated App Service configuration details",
+ "RequestedURLforkuduphysicalpath": "Requested URL for kudu physical path : %s",
+ "Physicalpathalreadyexists": "Physical path '%s' already exists",
+ "KuduPhysicalpathCreatedSuccessfully": "Kudu physical path created successfully : %s",
+ "FailedtocreateKuduPhysicalPath": "Failed to create kudu physical path. Error : %s",
+ "FailedtocheckphysicalPath": "Failed to check kudu physical path. Error Code: %s",
+ "VirtualApplicationDoesNotExist": "Virtual application doesn't exists : %s",
+ "JSONParseError": "Unable to parse JSON file: %s. Error: %s",
+ "JSONvariablesubstitutionappliedsuccessfully": "JSON variable substitution applied successfully.",
+ "XMLvariablesubstitutionappliedsuccessfully": "XML variable substitution applied successfully.",
+ "failedtoUploadFileToKudu": "Unable to upload file: %s to Kudu (%s). Status Code: %s",
+ "failedtoUploadFileToKuduError": "Unable to upload file: %s to Kudu (%s). Error: %s",
+ "ExecuteScriptOnKudu": "Executing given script on Kudu service.",
+ "FailedToRunScriptOnKuduError": "Unable to run the script on Kudu Service. Error: %s",
+ "FailedToRunScriptOnKudu": "Unable to run the script on Kudu: %s. Status Code: %s",
+ "ScriptExecutionOnKuduSuccess": "Successfully executed script on Kudu.",
+ "ScriptExecutionOnKuduFailed": "Executed script returned '%s' as return code. Error: %s",
+ "FailedtoDeleteFileFromKudu": "Unable to delete file: %s from Kudu (%s). Status Code: %s",
+ "FailedtoDeleteFileFromKuduError": "Unable to delete file: %s from Kudu (%s). Error: %s",
+ "ScriptFileNotFound": "Script file '%s' not found.",
+ "InvalidScriptFile": "Invalid script file '%s' provided. Valid extensions are .bat and .cmd for windows and .sh for linux",
+ "RetryForTimeoutIssue": "Script execution failed with timeout issue. Retrying once again.",
+ "stdoutFromScript": "Standard output from script: ",
+ "stderrFromScript": "Standard error from script: ",
+ "WebConfigAlreadyExists": "web.config file already exists. Not generating.",
+ "SuccessfullyGeneratedWebConfig": "Successfully generated web.config file",
+ "FailedToGenerateWebConfig": "Failed to generate web.config. %s",
+ "FailedToGetKuduFileContent": "Unable to get file content: %s . Status code: %s (%s)",
+ "FailedToGetKuduFileContentError": "Unable to get file content: %s. Error: %s",
+ "ScriptStatusTimeout": "Unable to fetch script status due to timeout.",
+ "PollingForFileTimeOut": "Unable to fetch script status due to timeout. You can increase the timeout limit by setting 'appservicedeploy.retrytimeout' variable to number of minutes required.",
+ "InvalidPollOption": "Invalid polling option provided: %s.",
+ "MissingAppTypeWebConfigParameters": "Attribute '-appType' is missing in the Web.config parameters. Valid values for '-appType' are: 'python_Bottle', 'python_Django', 'python_Flask', 'node' and 'Go'. For example, '-appType python_Bottle' (sans-quotes) in case of Python Bottle framework..",
+ "AutoDetectDjangoSettingsFailed": "Unable to detect DJANGO_SETTINGS_MODULE 'settings.py' file path. Ensure that the 'settings.py' file exists or provide the correct path in Web.config parameter input in the following format '-DJANGO_SETTINGS_MODULE .settings'",
+ "FailedToApplyTransformation": "Unable to apply transformation for the given package. Verify the following.",
+ "FailedToApplyTransformationReason1": "1. Whether the Transformation is already applied for the MSBuild generated package during build. If yes, remove the tag for each config in the csproj file and rebuild. ",
+ "FailedToApplyTransformationReason2": "2. Ensure that the config file and transformation files are present in the same folder inside the package.",
+ "AutoParameterizationMessage": "ConnectionString attributes in Web.config is parameterized by default. Note that the transformation has no effect on connectionString attributes as the value is overridden during deployment by 'Parameters.xml or 'SetParameters.xml' files. You can disable the auto-parameterization by setting /p:AutoParameterizationWebConfigConnectionStrings=False during MSBuild package generation.",
+ "UnsupportedAppType": "App type '%s' not supported in Web.config generation. Valid values for '-appType' are: 'python_Bottle', 'python_Django', 'python_Flask' and 'node'",
+ "UnableToFetchAuthorityURL": "Unable to fetch authority URL.",
+ "UnableToFetchActiveDirectory": "Unable to fetch Active Directory resource ID.",
+ "SuccessfullyUpdatedRuntimeStackAndStartupCommand": "Successfully updated the Runtime Stack and Startup Command.",
+ "FailedToUpdateRuntimeStackAndStartupCommand": "Failed to update the Runtime Stack and Startup Command. Error: %s.",
+ "SuccessfullyUpdatedWebAppSettings": "Successfully updated the App settings.",
+ "FailedToUpdateAppSettingsInConfigDetails": "Failed to update the App settings. Error: %s.",
+ "UnableToGetAzureRMWebAppMetadata": "Failed to fetch AzureRM WebApp metadata. ErrorCode: %s",
+ "UnableToUpdateAzureRMWebAppMetadata": "Unable to update AzureRM WebApp metadata. Error Code: %s",
+ "Unabletoretrieveazureregistrycredentials": "Unable to retrieve Azure Container Registry credentials.[Status Code: '%s']",
+ "UnableToReadResponseBody": "Unable to read response body. Error: %s",
+ "UnableToUpdateWebAppConfigDetails": "Unable to update WebApp config details. StatusCode: '%s'",
+ "AddingReleaseAnnotation": "Adding release annotation for the Application Insights resource '%s'",
+ "SuccessfullyAddedReleaseAnnotation": "Successfully added release annotation to the Application Insight : %s",
+ "FailedAddingReleaseAnnotation": "Failed to add release annotation. %s",
+ "RenameLockedFilesEnabled": "Rename locked files enabled for App Service.",
+ "FailedToEnableRenameLockedFiles": "Failed to enable rename locked files. Error: %s",
+ "WebJobsInProgressIssue": "Few WebJobs in running state prevents the deployment from removing the files. You can disable 'Remove additional files at destination' option or Stop continuous Jobs before deployment.",
+ "FailedToFetchKuduAppSettings": "Failed to fetch Kudu App Settings. Error: %s",
+ "FailedToCreatePath": "Failed to create path '%s' from Kudu. Error: %s",
+ "FailedToDeleteFile": "Failed to delete file '%s/%s' from Kudu. Error: %s",
+ "FailedToDeleteFolder": "Failed to delete folder '%s' from Kudu. Error: %s",
+ "FailedToUploadFile": "Failed to upload file '%s/%s' from Kudu. Error: %s",
+ "FailedToGetFileContent": "Failed to get file content '%s/%s' from Kudu. Error: %s",
+ "FailedToListPath": "Failed to list path '%s' from Kudu. Error: %s",
+ "RetryToDeploy": "Retrying to deploy the package.",
+ "FailedToGetAppServiceDetails": "Failed to fetch App Service '%s' details. Error: %s",
+ "FailedToGetAppServicePublishingProfile": "Failed to fetch App Service '%s' publishing profile. Error: %s",
+ "FailedToUpdateAppServiceMetadata": "Failed to update App service '%s' Meta data. Error: %s",
+ "FailedToGetAppServiceMetadata": "Failed to get App service '%s' Meta data. Error: %s",
+ "FailedToPatchAppServiceConfiguration": "Failed to patch App Service '%s' configuration. Error: %s",
+ "FailedToUpdateAppServiceConfiguration": "Failed to update App service '%s' configuration. Error: %s",
+ "FailedToGetAppServiceConfiguration": "Failed to get App service '%s' configuration. Error: %s",
+ "FailedToGetAppServicePublishingCredentials": "Failed to fetch App Service '%s' publishing credentials. Error: %s",
+ "FailedToGetAppServiceApplicationSettings": "Failed to get App service '%s' application settings. Error: %s",
+ "FailedToUpdateAppServiceApplicationSettings": "Failed to update App service '%s' application settings. Error: %s",
+ "UpdatingAppServiceConfigurationSettings": "Trying to update App Service Configuration settings. Data: %s",
+ "UpdatedAppServiceConfigurationSettings": "Updated App Service Configuration settings.",
+ "UpdatingAppServiceApplicationSettings": "Trying to update App Service Application settings. Data: %s",
+ "AppServiceApplicationSettingsAlreadyPresent": "App Service Application settings are already present.",
+ "AppServiceConnectionStringsAlreadyPresent": "App Service Connection Strings are already present.",
+ "UpdatedAppServiceApplicationSettings": "Updated App Service Application settings and Kudu Application settings.",
+ "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.",
+ "WarPackageDeploymentInitiated": "Package deployment using WAR Deploy initiated.",
+ "FailedToGetDeploymentLogs": "Failed to get deployment logs. Error: %s",
+ "GoExeNameNotPresent": "Go exe name is not present",
+ "WarDeploymentRetry": "Retrying war file deployment as it did not expand successfully earlier.",
+ "Updatemachinetoenablesecuretlsprotocol": "Make sure the machine is using TLS 1.2 protocol or higher. Check https://aka.ms/enableTlsv2 for more information on how to enable TLS in your machine.",
+ "CouldNotFetchAccessTokenforAzureStatusCode": "Could not fetch access token for Azure. Status code: %s, status message: %s",
+ "CouldNotFetchAccessTokenforMSIDueToMSINotConfiguredProperlyStatusCode": "Could not fetch access token for Managed Service Principal. Please configure Managed Service Identity (MSI) for virtual machine 'https://aka.ms/azure-msi-docs'. Status code: %s, status message: %s",
+ "CouldNotFetchAccessTokenforMSIStatusCode": "Could not fetch access token for Managed Service Principal. Status code: %s, status message: %s",
+ "XmlParsingFailed": "Unable to parse publishProfileXML file, Error: %s",
+ "PropertyDoesntExistPublishProfile": "[%s] Property does not exist in publish profile",
+ "InvalidConnectionType": "Invalid service connection type",
+ "InvalidImageSourceType": "Invalid Image source Type",
+ "InvalidPublishProfile": "Publish profile file is invalid.",
+ "ASE_SSLIssueRecommendation": "To use a certificate in App Service, the certificate must be signed by a trusted certificate authority. If your web app gives you certificate validation errors, you're probably using a self-signed certificate and to resolve them you need to set a variable named VSTS_ARM_REST_IGNORE_SSL_ERRORS to the value true in the build or release pipeline",
+ "ZipDeployLogsURL": "Zip Deploy logs can be viewed at %s",
+ "DeployLogsURL": "Deploy logs can be viewed at %s",
+ "AppServiceApplicationURL": "App Service Application URL: %s",
+ "ASE_WebDeploySSLIssueRecommendation": "To use a certificate in App Service, the certificate must be signed by a trusted certificate authority. If your web app gives you certificate validation errors, you're probably using a self-signed certificate and to resolve them you need to pass -allowUntrusted in additional arguments of web deploy option.",
+ "FailedToGetResourceID": "Failed to get resource ID for resource type '%s' and resource name '%s'. Error: %s",
+ "JarPathNotPresent": "Java jar path is not present",
+ "FailedToUpdateApplicationInsightsResource": "Failed to update Application Insights '%s' Resource. Error: %s",
+ "RunFromZipPreventsFileInUseError": "Move from Web Deploy to RunFrom Package, which helps in avoiding FILE_IN_USE error. Note that Run From Package does not support msBuild package type. Please change your package format to use this deployment method.",
+ "MSDeployNotSupportTokenAuth": "App Service is configured to not use basic authentication. This requires Web Deploy msdeploy.exe version 7.1.7225 or higher. You need a version of Visual Studio that includes an updated version of msdeploy.exe. For more information, visit https://aka.ms/azdo-webapp-msdeploy ."
+ },
+ "_buildConfigMapping": {
+ "Default": "4.235.0",
+ "Node20_229_2": "4.235.1"
+ }
+}
\ No newline at end of file
diff --git a/_generated/AzureRmWebAppDeploymentV4/task.loc.json b/_generated/AzureRmWebAppDeploymentV4/task.loc.json
new file mode 100644
index 000000000000..cc4e51da77f4
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/task.loc.json
@@ -0,0 +1,665 @@
+{
+ "id": "497D490F-EEA7-4F2B-AB94-48D9C1ACDCB1",
+ "name": "AzureRmWebAppDeployment",
+ "friendlyName": "ms-resource:loc.friendlyName",
+ "description": "ms-resource:loc.description",
+ "helpUrl": "https://aka.ms/azureappservicetroubleshooting",
+ "helpMarkDown": "ms-resource:loc.helpMarkDown",
+ "category": "Deploy",
+ "visibility": [
+ "Build",
+ "Release"
+ ],
+ "runsOn": [
+ "Agent",
+ "DeploymentGroup"
+ ],
+ "author": "Microsoft Corporation",
+ "version": {
+ "Major": 4,
+ "Minor": 235,
+ "Patch": 0
+ },
+ "releaseNotes": "ms-resource:loc.releaseNotes",
+ "minimumAgentVersion": "2.104.1",
+ "groups": [
+ {
+ "name": "FileTransformsAndVariableSubstitution",
+ "displayName": "ms-resource:loc.group.displayName.FileTransformsAndVariableSubstitution",
+ "isExpanded": false,
+ "visibleRule": "WebAppKind != webAppContainer && WebAppKind != webAppHyperVContainer && WebAppkind != functionAppContainer && WebAppKind != webAppLinux && webAppKind != functionAppLinux && Package NotEndsWith .war"
+ },
+ {
+ "name": "AdditionalDeploymentOptions",
+ "displayName": "ms-resource:loc.group.displayName.AdditionalDeploymentOptions",
+ "isExpanded": false,
+ "visibleRule": "ConnectionType = AzureRM && WebAppKind != webAppLinux && WebAppKind != webAppContainer && WebAppKind != webAppHyperVContainer && WebAppkind != functionAppContainer && webAppKind != functionAppLinux && WebAppKind != \"\" && Package NotEndsWith .war && Package NotEndsWith .jar"
+ },
+ {
+ "name": "PostDeploymentAction",
+ "displayName": "ms-resource:loc.group.displayName.PostDeploymentAction",
+ "isExpanded": false,
+ "visibleRule": "ConnectionType = AzureRM && WebAppKind != \"\" && WebAppKind != webAppContainer && WebAppKind != webAppHyperVContainer && WebAppkind != functionAppContainer"
+ },
+ {
+ "name": "ApplicationAndConfigurationSettings",
+ "displayName": "ms-resource:loc.group.displayName.ApplicationAndConfigurationSettings",
+ "isExpanded": false,
+ "visibleRule": "ConnectionType = AzureRM"
+ }
+ ],
+ "inputs": [
+ {
+ "name": "ConnectionType",
+ "type": "pickList",
+ "label": "ms-resource:loc.input.label.ConnectionType",
+ "defaultValue": "AzureRM",
+ "options": {
+ "AzureRM": "Azure Resource Manager",
+ "PublishProfile": "Publish Profile"
+ },
+ "required": true,
+ "helpMarkDown": "ms-resource:loc.input.help.ConnectionType"
+ },
+ {
+ "name": "ConnectedServiceName",
+ "aliases": [
+ "azureSubscription"
+ ],
+ "type": "connectedService:AzureRM",
+ "label": "ms-resource:loc.input.label.ConnectedServiceName",
+ "defaultValue": "",
+ "required": true,
+ "helpMarkDown": "ms-resource:loc.input.help.ConnectedServiceName",
+ "visibleRule": "ConnectionType = AzureRM"
+ },
+ {
+ "name": "PublishProfilePath",
+ "type": "filePath",
+ "label": "ms-resource:loc.input.label.PublishProfilePath",
+ "defaultValue": "$(System.DefaultWorkingDirectory)/**/*.pubxml",
+ "required": true,
+ "helpMarkDown": "ms-resource:loc.input.help.PublishProfilePath",
+ "visibleRule": "ConnectionType = PublishProfile"
+ },
+ {
+ "name": "PublishProfilePassword",
+ "type": "string",
+ "label": "ms-resource:loc.input.label.PublishProfilePassword",
+ "required": true,
+ "helpMarkDown": "ms-resource:loc.input.help.PublishProfilePassword",
+ "visibleRule": "ConnectionType = PublishProfile"
+ },
+ {
+ "name": "WebAppKind",
+ "aliases": [
+ "appType"
+ ],
+ "type": "pickList",
+ "label": "ms-resource:loc.input.label.WebAppKind",
+ "defaultValue": "webApp",
+ "required": true,
+ "options": {
+ "webApp": "Web App on Windows",
+ "webAppLinux": "Web App on Linux",
+ "webAppContainer": "Web App for Containers (Linux)",
+ "webAppHyperVContainer": "Web App for Containers (Windows)",
+ "functionApp": "Function App on Windows (Not Recommended, Use Azure Functions Task)",
+ "functionAppLinux": "Function App on Linux (Not Recommended, Use Azure Functions Task)",
+ "functionAppContainer": "Function App for Containers (Linux) (Not Recommended, Use Azure Functions for container Task)",
+ "apiApp": "API App",
+ "mobileApp": "Mobile App"
+ },
+ "properties": {
+ "EditableOptions": "true"
+ },
+ "helpMarkDown": "ms-resource:loc.input.help.WebAppKind",
+ "visibleRule": "ConnectionType = AzureRM"
+ },
+ {
+ "name": "WebAppName",
+ "type": "pickList",
+ "label": "ms-resource:loc.input.label.WebAppName",
+ "defaultValue": "",
+ "required": true,
+ "properties": {
+ "EditableOptions": "True"
+ },
+ "helpMarkDown": "ms-resource:loc.input.help.WebAppName",
+ "visibleRule": "ConnectionType = AzureRM"
+ },
+ {
+ "name": "DeployToSlotOrASEFlag",
+ "aliases": [
+ "deployToSlotOrASE"
+ ],
+ "type": "boolean",
+ "label": "ms-resource:loc.input.label.DeployToSlotOrASEFlag",
+ "defaultValue": "false",
+ "required": false,
+ "helpMarkDown": "ms-resource:loc.input.help.DeployToSlotOrASEFlag",
+ "visibleRule": "ConnectionType = AzureRM && WebAppKind != \"\""
+ },
+ {
+ "name": "ResourceGroupName",
+ "type": "pickList",
+ "label": "ms-resource:loc.input.label.ResourceGroupName",
+ "defaultValue": "",
+ "required": true,
+ "properties": {
+ "EditableOptions": "True"
+ },
+ "helpMarkDown": "ms-resource:loc.input.help.ResourceGroupName",
+ "visibleRule": "DeployToSlotOrASEFlag = true"
+ },
+ {
+ "name": "SlotName",
+ "type": "pickList",
+ "label": "ms-resource:loc.input.label.SlotName",
+ "defaultValue": "production",
+ "required": true,
+ "properties": {
+ "EditableOptions": "True"
+ },
+ "helpMarkDown": "ms-resource:loc.input.help.SlotName",
+ "visibleRule": "DeployToSlotOrASEFlag = true"
+ },
+ {
+ "name": "DockerNamespace",
+ "type": "string",
+ "label": "ms-resource:loc.input.label.DockerNamespace",
+ "defaultValue": "",
+ "required": true,
+ "visibleRule": "WebAppKind = webAppContainer || WebAppkind = functionAppContainer || WebAppKind = webAppHyperVContainer",
+ "helpMarkDown": "ms-resource:loc.input.help.DockerNamespace"
+ },
+ {
+ "name": "DockerRepository",
+ "type": "string",
+ "label": "ms-resource:loc.input.label.DockerRepository",
+ "defaultValue": "",
+ "required": true,
+ "visibleRule": "WebAppKind = webAppContainer || WebAppkind = functionAppContainer || WebAppKind = webAppHyperVContainer",
+ "helpMarkDown": "ms-resource:loc.input.help.DockerRepository"
+ },
+ {
+ "name": "DockerImageTag",
+ "type": "string",
+ "label": "ms-resource:loc.input.label.DockerImageTag",
+ "defaultValue": "",
+ "required": false,
+ "visibleRule": "WebAppKind = webAppContainer || WebAppkind = functionAppContainer || WebAppKind = webAppHyperVContainer",
+ "helpMarkDown": "ms-resource:loc.input.help.DockerImageTag"
+ },
+ {
+ "name": "VirtualApplication",
+ "type": "string",
+ "label": "ms-resource:loc.input.label.VirtualApplication",
+ "defaultValue": "",
+ "required": false,
+ "visibleRule": "WebAppKind != webAppLinux && WebAppKind != webAppContainer && WebAppKind != webAppHyperVContainer && WebAppkind != functionAppContainer && WebAppKind != functionApp && webAppKind != functionAppLinux && WebAppKind != \"\"",
+ "helpMarkDown": "ms-resource:loc.input.help.VirtualApplication"
+ },
+ {
+ "name": "Package",
+ "aliases": [
+ "packageForLinux"
+ ],
+ "type": "filePath",
+ "label": "ms-resource:loc.input.label.Package",
+ "defaultValue": "$(System.DefaultWorkingDirectory)/**/*.zip",
+ "required": true,
+ "visibleRule": "ConnectionType = PublishProfile || WebAppKind = webApp || WebAppKind = apiApp || WebAppKind = functionApp || WebAppKind = mobileApp || WebAppKind = webAppLinux || webAppKind = functionAppLinux",
+ "helpMarkDown": "ms-resource:loc.input.help.Package"
+ },
+ {
+ "name": "RuntimeStack",
+ "type": "pickList",
+ "label": "ms-resource:loc.input.label.RuntimeStack",
+ "defaultValue": "",
+ "required": false,
+ "properties": {
+ "EditableOptions": "True"
+ },
+ "helpMarkDown": "ms-resource:loc.input.help.RuntimeStack",
+ "visibleRule": "WebAppKind = webAppLinux"
+ },
+ {
+ "name": "RuntimeStackFunction",
+ "type": "pickList",
+ "label": "ms-resource:loc.input.label.RuntimeStackFunction",
+ "defaultValue": "",
+ "required": false,
+ "properties": {
+ "EditableOptions": "True"
+ },
+ "options": {
+ "DOTNET|2.2": "DOTNET|2.2 (functionapp v2)",
+ "DOTNET|3.1": "DOTNET|3.1 (functionapp v3)",
+ "JAVA|8": "JAVA|8 (functionapp v2/v3)",
+ "JAVA|11": "JAVA|11 (functionapp v3)",
+ "NODE|8": "NODE|8 (functionapp v2)",
+ "NODE|10": "NODE|10 (functionapp v2/v3)",
+ "NODE|12": "NODE|12 (functionapp v3)",
+ "NODE|14": "NODE|14 (functionapp v3)",
+ "PYTHON|3.6": "PYTHON|3.6 (functionapp v2/v3)",
+ "PYTHON|3.7": "PYTHON|3.7 (functionapp v2/v3)",
+ "PYTHON|3.8": "PYTHON|3.8 (functionapp v3)"
+ },
+ "helpMarkDown": "ms-resource:loc.input.help.RuntimeStackFunction",
+ "visibleRule": "WebAppKind = functionAppLinux"
+ },
+ {
+ "name": "StartupCommand",
+ "type": "string",
+ "label": "ms-resource:loc.input.label.StartupCommand",
+ "defaultValue": "",
+ "required": false,
+ "visibleRule": "WebAppKind = webAppLinux || WebAppKind = webAppContainer || WebAppkind = functionAppContainer || WebAppKind = functionAppLinux || WebAppKind = webAppHyperVContainer",
+ "helpMarkDown": "ms-resource:loc.input.help.StartupCommand"
+ },
+ {
+ "name": "ScriptType",
+ "type": "pickList",
+ "label": "ms-resource:loc.input.label.ScriptType",
+ "defaultValue": "",
+ "options": {
+ "": "Select deployment script type (inline or file)",
+ "Inline Script": "Inline Script",
+ "File Path": "Script File Path"
+ },
+ "groupName": "PostDeploymentAction",
+ "helpMarkDown": "ms-resource:loc.input.help.ScriptType"
+ },
+ {
+ "name": "InlineScript",
+ "type": "multiLine",
+ "label": "ms-resource:loc.input.label.InlineScript",
+ "defaultValue": ":: You can provide your deployment commands here. One command per line.",
+ "groupName": "PostDeploymentAction",
+ "required": true,
+ "visibleRule": "ScriptType == Inline Script",
+ "properties": {
+ "resizable": "true",
+ "rows": "10",
+ "maxLength": "500"
+ }
+ },
+ {
+ "name": "ScriptPath",
+ "type": "filePath",
+ "label": "ms-resource:loc.input.label.ScriptPath",
+ "required": true,
+ "groupName": "PostDeploymentAction",
+ "visibleRule": "ScriptType == File Path"
+ },
+ {
+ "name": "WebConfigParameters",
+ "type": "multiLine",
+ "label": "ms-resource:loc.input.label.WebConfigParameters",
+ "required": false,
+ "defaultValue": "",
+ "groupName": "FileTransformsAndVariableSubstitution",
+ "helpMarkDown": "ms-resource:loc.input.help.WebConfigParameters",
+ "properties": {
+ "editorExtension": "ms.vss-services-azure.webconfig-parameters-grid"
+ }
+ },
+ {
+ "name": "AppSettings",
+ "type": "multiLine",
+ "label": "ms-resource:loc.input.label.AppSettings",
+ "defaultValue": "",
+ "required": false,
+ "groupName": "ApplicationAndConfigurationSettings",
+ "helpMarkDown": "ms-resource:loc.input.help.AppSettings",
+ "properties": {
+ "editorExtension": "ms.vss-services-azure.parameters-grid"
+ }
+ },
+ {
+ "name": "ConfigurationSettings",
+ "type": "multiLine",
+ "label": "ms-resource:loc.input.label.ConfigurationSettings",
+ "defaultValue": "",
+ "required": false,
+ "groupName": "ApplicationAndConfigurationSettings",
+ "helpMarkDown": "ms-resource:loc.input.help.ConfigurationSettings",
+ "properties": {
+ "editorExtension": "ms.vss-services-azure.parameters-grid"
+ }
+ },
+ {
+ "name": "UseWebDeploy",
+ "aliases": [
+ "enableCustomDeployment"
+ ],
+ "type": "boolean",
+ "label": "ms-resource:loc.input.label.UseWebDeploy",
+ "required": false,
+ "defaultValue": "false",
+ "groupName": "AdditionalDeploymentOptions",
+ "helpMarkDown": "ms-resource:loc.input.help.UseWebDeploy"
+ },
+ {
+ "name": "DeploymentType",
+ "type": "pickList",
+ "label": "ms-resource:loc.input.label.DeploymentType",
+ "defaultValue": "webDeploy",
+ "required": true,
+ "groupName": "AdditionalDeploymentOptions",
+ "options": {
+ "webDeploy": "Web Deploy",
+ "zipDeploy": "Zip Deploy",
+ "runFromZip": "Run From Package"
+ },
+ "helpMarkDown": "ms-resource:loc.input.help.DeploymentType",
+ "visibleRule": "UseWebDeploy == true"
+ },
+ {
+ "name": "TakeAppOfflineFlag",
+ "type": "boolean",
+ "label": "ms-resource:loc.input.label.TakeAppOfflineFlag",
+ "defaultValue": "true",
+ "required": false,
+ "groupName": "AdditionalDeploymentOptions",
+ "visibleRule": "UseWebDeploy == true && DeploymentType != runFromZip",
+ "helpMarkDown": "ms-resource:loc.input.help.TakeAppOfflineFlag"
+ },
+ {
+ "name": "SetParametersFile",
+ "type": "filePath",
+ "label": "ms-resource:loc.input.label.SetParametersFile",
+ "defaultValue": "",
+ "required": false,
+ "groupName": "AdditionalDeploymentOptions",
+ "visibleRule": "UseWebDeploy == true && DeploymentType == webDeploy",
+ "helpMarkDown": "ms-resource:loc.input.help.SetParametersFile"
+ },
+ {
+ "name": "RemoveAdditionalFilesFlag",
+ "type": "boolean",
+ "label": "ms-resource:loc.input.label.RemoveAdditionalFilesFlag",
+ "defaultValue": "false",
+ "required": false,
+ "groupName": "AdditionalDeploymentOptions",
+ "visibleRule": "UseWebDeploy == true && DeploymentType == webDeploy",
+ "helpMarkDown": "ms-resource:loc.input.help.RemoveAdditionalFilesFlag"
+ },
+ {
+ "name": "ExcludeFilesFromAppDataFlag",
+ "type": "boolean",
+ "label": "ms-resource:loc.input.label.ExcludeFilesFromAppDataFlag",
+ "defaultValue": "true",
+ "required": false,
+ "groupName": "AdditionalDeploymentOptions",
+ "visibleRule": "UseWebDeploy == true && DeploymentType == webDeploy",
+ "helpMarkDown": "ms-resource:loc.input.help.ExcludeFilesFromAppDataFlag"
+ },
+ {
+ "name": "AdditionalArguments",
+ "type": "string",
+ "label": "ms-resource:loc.input.label.AdditionalArguments",
+ "required": false,
+ "defaultValue": "-retryAttempts:6 -retryInterval:10000",
+ "groupName": "AdditionalDeploymentOptions",
+ "visibleRule": "UseWebDeploy == true && DeploymentType == webDeploy",
+ "helpMarkDown": "ms-resource:loc.input.help.AdditionalArguments"
+ },
+ {
+ "name": "RenameFilesFlag",
+ "type": "boolean",
+ "label": "ms-resource:loc.input.label.RenameFilesFlag",
+ "defaultValue": "true",
+ "required": false,
+ "visibleRule": "UseWebDeploy == true && DeploymentType == webDeploy",
+ "groupName": "AdditionalDeploymentOptions",
+ "helpMarkDown": "ms-resource:loc.input.help.RenameFilesFlag"
+ },
+ {
+ "name": "XmlTransformation",
+ "aliases": [
+ "enableXmlTransform"
+ ],
+ "type": "boolean",
+ "label": "ms-resource:loc.input.label.XmlTransformation",
+ "required": false,
+ "defaultValue": false,
+ "groupName": "FileTransformsAndVariableSubstitution",
+ "helpMarkDown": "ms-resource:loc.input.help.XmlTransformation"
+ },
+ {
+ "name": "XmlVariableSubstitution",
+ "aliases": [
+ "enableXmlVariableSubstitution"
+ ],
+ "type": "boolean",
+ "label": "ms-resource:loc.input.label.XmlVariableSubstitution",
+ "required": false,
+ "defaultValue": false,
+ "groupName": "FileTransformsAndVariableSubstitution",
+ "helpMarkDown": "ms-resource:loc.input.help.XmlVariableSubstitution"
+ },
+ {
+ "name": "JSONFiles",
+ "type": "multiLine",
+ "label": "ms-resource:loc.input.label.JSONFiles",
+ "required": false,
+ "defaultValue": "",
+ "groupName": "FileTransformsAndVariableSubstitution",
+ "helpMarkDown": "ms-resource:loc.input.help.JSONFiles"
+ }
+ ],
+ "outputVariables": [
+ {
+ "name": "AppServiceApplicationUrl",
+ "description": "Application URL of the selected App Service."
+ }
+ ],
+ "dataSourceBindings": [
+ {
+ "target": "WebAppName",
+ "endpointId": "$(ConnectedServiceName)",
+ "dataSourceName": "AzureRMWebAppNamesByAppType",
+ "parameters": {
+ "WebAppKind": "$(WebAppKind)"
+ }
+ },
+ {
+ "target": "ResourceGroupName",
+ "endpointId": "$(ConnectedServiceName)",
+ "dataSourceName": "AzureRMWebAppResourceGroup",
+ "parameters": {
+ "WebAppName": "$(WebAppName)"
+ }
+ },
+ {
+ "target": "SlotName",
+ "endpointId": "$(ConnectedServiceName)",
+ "dataSourceName": "AzureRMWebAppSlotsId",
+ "parameters": {
+ "WebAppName": "$(WebAppName)",
+ "ResourceGroupName": "$(ResourceGroupName)"
+ },
+ "resultTemplate": "{\"Value\":\"{{{ #extractResource slots}}}\",\"DisplayValue\":\"{{{ #extractResource slots}}}\"}"
+ },
+ {
+ "target": "RuntimeStack",
+ "endpointId": "$(ConnectedServiceName)",
+ "dataSourceName": "AzureRMWebAppRuntimeStacksByOsType",
+ "parameters": {
+ "osTypeSelected": "Linux"
+ },
+ "resultTemplate": "{\"Value\":\"{{{ runtimeVersion }}}\",\"DisplayValue\":\"{{{ displayVersion }}} ({{{ runtimeVersion }}})\"}"
+ }
+ ],
+ "instanceNameFormat": "ms-resource:loc.instanceNameFormat",
+ "execution": {
+ "Node10": {
+ "target": "azurermwebappdeployment.js"
+ },
+ "Node16": {
+ "target": "azurermwebappdeployment.js",
+ "argumentFormat": ""
+ }
+ },
+ "messages": {
+ "Invalidwebapppackageorfolderpathprovided": "ms-resource:loc.messages.Invalidwebapppackageorfolderpathprovided",
+ "SetParamFilenotfound0": "ms-resource:loc.messages.SetParamFilenotfound0",
+ "XDTTransformationsappliedsuccessfully": "ms-resource:loc.messages.XDTTransformationsappliedsuccessfully",
+ "GotconnectiondetailsforazureRMWebApp0": "ms-resource:loc.messages.GotconnectiondetailsforazureRMWebApp0",
+ "ErrorNoSuchDeployingMethodExists": "ms-resource:loc.messages.ErrorNoSuchDeployingMethodExists",
+ "UnabletoretrieveconnectiondetailsforazureRMWebApp": "ms-resource:loc.messages.UnabletoretrieveconnectiondetailsforazureRMWebApp",
+ "UnabletoretrieveResourceID": "ms-resource:loc.messages.UnabletoretrieveResourceID",
+ "Successfullyupdateddeploymenthistory": "ms-resource:loc.messages.Successfullyupdateddeploymenthistory",
+ "Failedtoupdatedeploymenthistory": "ms-resource:loc.messages.Failedtoupdatedeploymenthistory",
+ "WARNINGCannotupdatedeploymentstatusSCMendpointisnotenabledforthiswebsite": "ms-resource:loc.messages.WARNINGCannotupdatedeploymentstatusSCMendpointisnotenabledforthiswebsite",
+ "Unabletoretrievewebconfigdetails": "ms-resource:loc.messages.Unabletoretrievewebconfigdetails",
+ "Unabletoretrievewebappsettings": "ms-resource:loc.messages.Unabletoretrievewebappsettings",
+ "Unabletoupdatewebappsettings": "ms-resource:loc.messages.Unabletoupdatewebappsettings",
+ "CannotupdatedeploymentstatusuniquedeploymentIdCannotBeRetrieved": "ms-resource:loc.messages.CannotupdatedeploymentstatusuniquedeploymentIdCannotBeRetrieved",
+ "PackageDeploymentSuccess": "ms-resource:loc.messages.PackageDeploymentSuccess",
+ "PackageDeploymentFailed": "ms-resource:loc.messages.PackageDeploymentFailed",
+ "Runningcommand": "ms-resource:loc.messages.Runningcommand",
+ "Deployingwebapplicationatvirtualpathandphysicalpath": "ms-resource:loc.messages.Deployingwebapplicationatvirtualpathandphysicalpath",
+ "Successfullydeployedpackageusingkuduserviceat": "ms-resource:loc.messages.Successfullydeployedpackageusingkuduserviceat",
+ "Failedtodeploywebapppackageusingkuduservice": "ms-resource:loc.messages.Failedtodeploywebapppackageusingkuduservice",
+ "Unabletodeploywebappresponsecode": "ms-resource:loc.messages.Unabletodeploywebappresponsecode",
+ "MSDeploygeneratedpackageareonlysupportedforWindowsplatform": "ms-resource:loc.messages.MSDeploygeneratedpackageareonlysupportedforWindowsplatform",
+ "UnsupportedinstalledversionfoundforMSDeployversionshouldbeatleast3orabove": "ms-resource:loc.messages.UnsupportedinstalledversionfoundforMSDeployversionshouldbeatleast3orabove",
+ "UnabletofindthelocationofMSDeployfromregistryonmachineError": "ms-resource:loc.messages.UnabletofindthelocationofMSDeployfromregistryonmachineError",
+ "Nopackagefoundwithspecifiedpattern": "ms-resource:loc.messages.Nopackagefoundwithspecifiedpattern",
+ "MorethanonepackagematchedwithspecifiedpatternPleaserestrainthesearchpattern": "ms-resource:loc.messages.MorethanonepackagematchedwithspecifiedpatternPleaserestrainthesearchpattern",
+ "Trytodeploywebappagainwithappofflineoptionselected": "ms-resource:loc.messages.Trytodeploywebappagainwithappofflineoptionselected",
+ "Trytodeploywebappagainwithrenamefileoptionselected": "ms-resource:loc.messages.Trytodeploywebappagainwithrenamefileoptionselected",
+ "NOJSONfilematchedwithspecificpattern": "ms-resource:loc.messages.NOJSONfilematchedwithspecificpattern",
+ "Configfiledoesntexists": "ms-resource:loc.messages.Configfiledoesntexists",
+ "Failedtowritetoconfigfilewitherror": "ms-resource:loc.messages.Failedtowritetoconfigfilewitherror",
+ "AppOfflineModeenabled": "ms-resource:loc.messages.AppOfflineModeenabled",
+ "Failedtoenableappofflinemode": "ms-resource:loc.messages.Failedtoenableappofflinemode",
+ "AppOflineModedisabled": "ms-resource:loc.messages.AppOflineModedisabled",
+ "FailedtodisableAppOfflineMode": "ms-resource:loc.messages.FailedtodisableAppOfflineMode",
+ "CannotPerformXdtTransformationOnNonWindowsPlatform": "ms-resource:loc.messages.CannotPerformXdtTransformationOnNonWindowsPlatform",
+ "XdtTransformationErrorWhileTransforming": "ms-resource:loc.messages.XdtTransformationErrorWhileTransforming",
+ "PublishusingwebdeployoptionsaresupportedonlywhenusingWindowsagent": "ms-resource:loc.messages.PublishusingwebdeployoptionsaresupportedonlywhenusingWindowsagent",
+ "Publishusingzipdeploynotsupportedformsbuildpackage": "ms-resource:loc.messages.Publishusingzipdeploynotsupportedformsbuildpackage",
+ "Publishusingzipdeploynotsupportedforvirtualapplication": "ms-resource:loc.messages.Publishusingzipdeploynotsupportedforvirtualapplication",
+ "Publishusingzipdeploydoesnotsupportwarfile": "ms-resource:loc.messages.Publishusingzipdeploydoesnotsupportwarfile",
+ "Publishusingrunfromzipwithpostdeploymentscript": "ms-resource:loc.messages.Publishusingrunfromzipwithpostdeploymentscript",
+ "ResourceDoesntExist": "ms-resource:loc.messages.ResourceDoesntExist",
+ "EncodeNotSupported": "ms-resource:loc.messages.EncodeNotSupported",
+ "UnknownFileEncodeError": "ms-resource:loc.messages.UnknownFileEncodeError",
+ "ShortFileBufferError": "ms-resource:loc.messages.ShortFileBufferError",
+ "FailedToUpdateAzureRMWebAppConfigDetails": "ms-resource:loc.messages.FailedToUpdateAzureRMWebAppConfigDetails",
+ "SuccessfullyUpdatedAzureRMWebAppConfigDetails": "ms-resource:loc.messages.SuccessfullyUpdatedAzureRMWebAppConfigDetails",
+ "RequestedURLforkuduphysicalpath": "ms-resource:loc.messages.RequestedURLforkuduphysicalpath",
+ "Physicalpathalreadyexists": "ms-resource:loc.messages.Physicalpathalreadyexists",
+ "KuduPhysicalpathCreatedSuccessfully": "ms-resource:loc.messages.KuduPhysicalpathCreatedSuccessfully",
+ "FailedtocreateKuduPhysicalPath": "ms-resource:loc.messages.FailedtocreateKuduPhysicalPath",
+ "FailedtocheckphysicalPath": "ms-resource:loc.messages.FailedtocheckphysicalPath",
+ "VirtualApplicationDoesNotExist": "ms-resource:loc.messages.VirtualApplicationDoesNotExist",
+ "JSONParseError": "ms-resource:loc.messages.JSONParseError",
+ "JSONvariablesubstitutionappliedsuccessfully": "ms-resource:loc.messages.JSONvariablesubstitutionappliedsuccessfully",
+ "XMLvariablesubstitutionappliedsuccessfully": "ms-resource:loc.messages.XMLvariablesubstitutionappliedsuccessfully",
+ "failedtoUploadFileToKudu": "ms-resource:loc.messages.failedtoUploadFileToKudu",
+ "failedtoUploadFileToKuduError": "ms-resource:loc.messages.failedtoUploadFileToKuduError",
+ "ExecuteScriptOnKudu": "ms-resource:loc.messages.ExecuteScriptOnKudu",
+ "FailedToRunScriptOnKuduError": "ms-resource:loc.messages.FailedToRunScriptOnKuduError",
+ "FailedToRunScriptOnKudu": "ms-resource:loc.messages.FailedToRunScriptOnKudu",
+ "ScriptExecutionOnKuduSuccess": "ms-resource:loc.messages.ScriptExecutionOnKuduSuccess",
+ "ScriptExecutionOnKuduFailed": "ms-resource:loc.messages.ScriptExecutionOnKuduFailed",
+ "FailedtoDeleteFileFromKudu": "ms-resource:loc.messages.FailedtoDeleteFileFromKudu",
+ "FailedtoDeleteFileFromKuduError": "ms-resource:loc.messages.FailedtoDeleteFileFromKuduError",
+ "ScriptFileNotFound": "ms-resource:loc.messages.ScriptFileNotFound",
+ "InvalidScriptFile": "ms-resource:loc.messages.InvalidScriptFile",
+ "RetryForTimeoutIssue": "ms-resource:loc.messages.RetryForTimeoutIssue",
+ "stdoutFromScript": "ms-resource:loc.messages.stdoutFromScript",
+ "stderrFromScript": "ms-resource:loc.messages.stderrFromScript",
+ "WebConfigAlreadyExists": "ms-resource:loc.messages.WebConfigAlreadyExists",
+ "SuccessfullyGeneratedWebConfig": "ms-resource:loc.messages.SuccessfullyGeneratedWebConfig",
+ "FailedToGenerateWebConfig": "ms-resource:loc.messages.FailedToGenerateWebConfig",
+ "FailedToGetKuduFileContent": "ms-resource:loc.messages.FailedToGetKuduFileContent",
+ "FailedToGetKuduFileContentError": "ms-resource:loc.messages.FailedToGetKuduFileContentError",
+ "ScriptStatusTimeout": "ms-resource:loc.messages.ScriptStatusTimeout",
+ "PollingForFileTimeOut": "ms-resource:loc.messages.PollingForFileTimeOut",
+ "InvalidPollOption": "ms-resource:loc.messages.InvalidPollOption",
+ "MissingAppTypeWebConfigParameters": "ms-resource:loc.messages.MissingAppTypeWebConfigParameters",
+ "AutoDetectDjangoSettingsFailed": "ms-resource:loc.messages.AutoDetectDjangoSettingsFailed",
+ "FailedToApplyTransformation": "ms-resource:loc.messages.FailedToApplyTransformation",
+ "FailedToApplyTransformationReason1": "ms-resource:loc.messages.FailedToApplyTransformationReason1",
+ "FailedToApplyTransformationReason2": "ms-resource:loc.messages.FailedToApplyTransformationReason2",
+ "AutoParameterizationMessage": "ms-resource:loc.messages.AutoParameterizationMessage",
+ "UnsupportedAppType": "ms-resource:loc.messages.UnsupportedAppType",
+ "UnableToFetchAuthorityURL": "ms-resource:loc.messages.UnableToFetchAuthorityURL",
+ "UnableToFetchActiveDirectory": "ms-resource:loc.messages.UnableToFetchActiveDirectory",
+ "SuccessfullyUpdatedRuntimeStackAndStartupCommand": "ms-resource:loc.messages.SuccessfullyUpdatedRuntimeStackAndStartupCommand",
+ "FailedToUpdateRuntimeStackAndStartupCommand": "ms-resource:loc.messages.FailedToUpdateRuntimeStackAndStartupCommand",
+ "SuccessfullyUpdatedWebAppSettings": "ms-resource:loc.messages.SuccessfullyUpdatedWebAppSettings",
+ "FailedToUpdateAppSettingsInConfigDetails": "ms-resource:loc.messages.FailedToUpdateAppSettingsInConfigDetails",
+ "UnableToGetAzureRMWebAppMetadata": "ms-resource:loc.messages.UnableToGetAzureRMWebAppMetadata",
+ "UnableToUpdateAzureRMWebAppMetadata": "ms-resource:loc.messages.UnableToUpdateAzureRMWebAppMetadata",
+ "Unabletoretrieveazureregistrycredentials": "ms-resource:loc.messages.Unabletoretrieveazureregistrycredentials",
+ "UnableToReadResponseBody": "ms-resource:loc.messages.UnableToReadResponseBody",
+ "UnableToUpdateWebAppConfigDetails": "ms-resource:loc.messages.UnableToUpdateWebAppConfigDetails",
+ "AddingReleaseAnnotation": "ms-resource:loc.messages.AddingReleaseAnnotation",
+ "SuccessfullyAddedReleaseAnnotation": "ms-resource:loc.messages.SuccessfullyAddedReleaseAnnotation",
+ "FailedAddingReleaseAnnotation": "ms-resource:loc.messages.FailedAddingReleaseAnnotation",
+ "RenameLockedFilesEnabled": "ms-resource:loc.messages.RenameLockedFilesEnabled",
+ "FailedToEnableRenameLockedFiles": "ms-resource:loc.messages.FailedToEnableRenameLockedFiles",
+ "WebJobsInProgressIssue": "ms-resource:loc.messages.WebJobsInProgressIssue",
+ "FailedToFetchKuduAppSettings": "ms-resource:loc.messages.FailedToFetchKuduAppSettings",
+ "FailedToCreatePath": "ms-resource:loc.messages.FailedToCreatePath",
+ "FailedToDeleteFile": "ms-resource:loc.messages.FailedToDeleteFile",
+ "FailedToDeleteFolder": "ms-resource:loc.messages.FailedToDeleteFolder",
+ "FailedToUploadFile": "ms-resource:loc.messages.FailedToUploadFile",
+ "FailedToGetFileContent": "ms-resource:loc.messages.FailedToGetFileContent",
+ "FailedToListPath": "ms-resource:loc.messages.FailedToListPath",
+ "RetryToDeploy": "ms-resource:loc.messages.RetryToDeploy",
+ "FailedToGetAppServiceDetails": "ms-resource:loc.messages.FailedToGetAppServiceDetails",
+ "FailedToGetAppServicePublishingProfile": "ms-resource:loc.messages.FailedToGetAppServicePublishingProfile",
+ "FailedToUpdateAppServiceMetadata": "ms-resource:loc.messages.FailedToUpdateAppServiceMetadata",
+ "FailedToGetAppServiceMetadata": "ms-resource:loc.messages.FailedToGetAppServiceMetadata",
+ "FailedToPatchAppServiceConfiguration": "ms-resource:loc.messages.FailedToPatchAppServiceConfiguration",
+ "FailedToUpdateAppServiceConfiguration": "ms-resource:loc.messages.FailedToUpdateAppServiceConfiguration",
+ "FailedToGetAppServiceConfiguration": "ms-resource:loc.messages.FailedToGetAppServiceConfiguration",
+ "FailedToGetAppServicePublishingCredentials": "ms-resource:loc.messages.FailedToGetAppServicePublishingCredentials",
+ "FailedToGetAppServiceApplicationSettings": "ms-resource:loc.messages.FailedToGetAppServiceApplicationSettings",
+ "FailedToUpdateAppServiceApplicationSettings": "ms-resource:loc.messages.FailedToUpdateAppServiceApplicationSettings",
+ "UpdatingAppServiceConfigurationSettings": "ms-resource:loc.messages.UpdatingAppServiceConfigurationSettings",
+ "UpdatedAppServiceConfigurationSettings": "ms-resource:loc.messages.UpdatedAppServiceConfigurationSettings",
+ "UpdatingAppServiceApplicationSettings": "ms-resource:loc.messages.UpdatingAppServiceApplicationSettings",
+ "AppServiceApplicationSettingsAlreadyPresent": "ms-resource:loc.messages.AppServiceApplicationSettingsAlreadyPresent",
+ "AppServiceConnectionStringsAlreadyPresent": "ms-resource:loc.messages.AppServiceConnectionStringsAlreadyPresent",
+ "UpdatedAppServiceApplicationSettings": "ms-resource:loc.messages.UpdatedAppServiceApplicationSettings",
+ "MultipleResourceGroupFoundForAppService": "ms-resource:loc.messages.MultipleResourceGroupFoundForAppService",
+ "PackageDeploymentUsingZipDeployFailed": "ms-resource:loc.messages.PackageDeploymentUsingZipDeployFailed",
+ "PackageDeploymentInitiated": "ms-resource:loc.messages.PackageDeploymentInitiated",
+ "WarPackageDeploymentInitiated": "ms-resource:loc.messages.WarPackageDeploymentInitiated",
+ "FailedToGetDeploymentLogs": "ms-resource:loc.messages.FailedToGetDeploymentLogs",
+ "GoExeNameNotPresent": "ms-resource:loc.messages.GoExeNameNotPresent",
+ "WarDeploymentRetry": "ms-resource:loc.messages.WarDeploymentRetry",
+ "Updatemachinetoenablesecuretlsprotocol": "ms-resource:loc.messages.Updatemachinetoenablesecuretlsprotocol",
+ "CouldNotFetchAccessTokenforAzureStatusCode": "ms-resource:loc.messages.CouldNotFetchAccessTokenforAzureStatusCode",
+ "CouldNotFetchAccessTokenforMSIDueToMSINotConfiguredProperlyStatusCode": "ms-resource:loc.messages.CouldNotFetchAccessTokenforMSIDueToMSINotConfiguredProperlyStatusCode",
+ "CouldNotFetchAccessTokenforMSIStatusCode": "ms-resource:loc.messages.CouldNotFetchAccessTokenforMSIStatusCode",
+ "XmlParsingFailed": "ms-resource:loc.messages.XmlParsingFailed",
+ "PropertyDoesntExistPublishProfile": "ms-resource:loc.messages.PropertyDoesntExistPublishProfile",
+ "InvalidConnectionType": "ms-resource:loc.messages.InvalidConnectionType",
+ "InvalidImageSourceType": "ms-resource:loc.messages.InvalidImageSourceType",
+ "InvalidPublishProfile": "ms-resource:loc.messages.InvalidPublishProfile",
+ "ASE_SSLIssueRecommendation": "ms-resource:loc.messages.ASE_SSLIssueRecommendation",
+ "ZipDeployLogsURL": "ms-resource:loc.messages.ZipDeployLogsURL",
+ "DeployLogsURL": "ms-resource:loc.messages.DeployLogsURL",
+ "AppServiceApplicationURL": "ms-resource:loc.messages.AppServiceApplicationURL",
+ "ASE_WebDeploySSLIssueRecommendation": "ms-resource:loc.messages.ASE_WebDeploySSLIssueRecommendation",
+ "FailedToGetResourceID": "ms-resource:loc.messages.FailedToGetResourceID",
+ "JarPathNotPresent": "ms-resource:loc.messages.JarPathNotPresent",
+ "FailedToUpdateApplicationInsightsResource": "ms-resource:loc.messages.FailedToUpdateApplicationInsightsResource",
+ "RunFromZipPreventsFileInUseError": "ms-resource:loc.messages.RunFromZipPreventsFileInUseError",
+ "MSDeployNotSupportTokenAuth": "ms-resource:loc.messages.MSDeployNotSupportTokenAuth"
+ },
+ "_buildConfigMapping": {
+ "Default": "4.235.0",
+ "Node20_229_2": "4.235.1"
+ }
+}
\ No newline at end of file
diff --git a/_generated/AzureRmWebAppDeploymentV4/tsconfig.json b/_generated/AzureRmWebAppDeploymentV4/tsconfig.json
new file mode 100644
index 000000000000..0438b79f69ac
--- /dev/null
+++ b/_generated/AzureRmWebAppDeploymentV4/tsconfig.json
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "target": "ES6",
+ "module": "commonjs"
+ }
+}
\ No newline at end of file
diff --git a/_generated/AzureRmWebAppDeploymentV4_Node20/package-lock.json b/_generated/AzureRmWebAppDeploymentV4_Node20/package-lock.json
index 501bf41ca9ea..e90eb59e3aed 100644
--- a/_generated/AzureRmWebAppDeploymentV4_Node20/package-lock.json
+++ b/_generated/AzureRmWebAppDeploymentV4_Node20/package-lock.json
@@ -35,9 +35,9 @@
}
},
"@types/events": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.2.tgz",
- "integrity": "sha512-v4Mr60wJuF069iZZCdY5DKhfj0l6eXNJtbSM/oMDNdRLoBEUsktmKnswkz0X3OAic5W8Qy/YU6owKE4A66Y46A=="
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.3.tgz",
+ "integrity": "sha512-trOc4AAUThEz9hapPtSd7wf5tiQKvTtu5b371UxXdTuqzIh0ArcRspRP0i0Viu+LXstIQ1z96t1nsPxT9ol01g=="
},
"@types/form-data": {
"version": "0.0.33",
@@ -69,9 +69,9 @@
"integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ=="
},
"@types/node": {
- "version": "20.10.4",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.4.tgz",
- "integrity": "sha512-D08YG6rr8X90YB56tSIuBaddy/UXAA9RKJoFvrsnogAum/0pmjkgi4+2nx96A330FmioegBWmEYQ+syqCFaveg==",
+ "version": "20.11.16",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.16.tgz",
+ "integrity": "sha512-gKb0enTmRCzXSSUJDq6/sPcqrfCv2mkkG6Jt/clpn5eiCbKTY+SgZUxo+p8ZKMof5dCp9vHQUAB7wOUTod22wQ==",
"requires": {
"undici-types": "~5.26.4"
}
@@ -82,9 +82,9 @@
"integrity": "sha512-0WS7XU7sXzQ7J1nbnMKKYdjrrFoO3YtZYgUzeV8JFXffPnHfvSJQleR70I8BOAsOm14i4dyaAZ3YzqIl1YhkXQ=="
},
"@types/qs": {
- "version": "6.9.7",
- "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz",
- "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw=="
+ "version": "6.9.8",
+ "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.8.tgz",
+ "integrity": "sha512-u95svzDlTysU5xecFNTgfFG5RUWu1A9P0VzgpcIiGZA9iraHOdSzcxMxQ55DyeRaGCSxQi7LxXDI4rzq/MYfdg=="
},
"@xmldom/xmldom": {
"version": "git+https://github.com/xmldom/xmldom.git#238b1ea8431fae8817812c68d55b4933248af07e",
@@ -95,15 +95,13 @@
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
"integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
},
- "adm-zip": {
- "version": "0.5.10",
- "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.10.tgz",
- "integrity": "sha512-x0HvcHqVJNTPk/Bw8JbLWlWoo6Wwnsug0fnYYro1HBrjxZ3G7/AZk7Ahv8JwDe1uIcz8eBqvu86FuF1POiG7vQ=="
- },
"agent-base": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-5.1.1.tgz",
- "integrity": "sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g=="
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
+ "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
+ "requires": {
+ "debug": "4"
+ }
},
"archiver": {
"version": "1.2.0",
@@ -147,9 +145,9 @@
}
},
"async-mutex": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/async-mutex/-/async-mutex-0.4.0.tgz",
- "integrity": "sha512-eJFZ1YhRR8UN8eBLoNzcDPcy/jqjsg6I1AP+KvWQX80BqOSW1oJPJXDylPUEeMr2ZQvHgnQ//Lp6f3RQ1zI7HA==",
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/async-mutex/-/async-mutex-0.4.1.tgz",
+ "integrity": "sha512-WfoBo4E/TbCX1G95XTjbWTE3X2XLG0m1Xbv2cwOtuPdyH9CZvnaA5nCt1ucjaKEgW2A5IF71hxrRhr83Je5xjA==",
"requires": {
"tslib": "^2.4.0"
}
@@ -160,18 +158,18 @@
"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
},
"azure-devops-node-api": {
- "version": "12.0.0",
- "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-12.0.0.tgz",
- "integrity": "sha512-S6Il++7dQeMlZDokBDWw7YVoPeb90tWF10pYxnoauRMnkuL91jq9M7SOYRVhtO3FUC5URPkB/qzGa7jTLft0Xw==",
+ "version": "12.4.0",
+ "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-12.4.0.tgz",
+ "integrity": "sha512-ZrJlnoAOjliBYvO1wV9oa5Saa3h5tfRbvCSpwjqryag7bIeeY5Zl/zGiZBVD+75EumhtY5mOXNBzHvLf6JmdNQ==",
"requires": {
"tunnel": "0.0.6",
"typed-rest-client": "^1.8.4"
}
},
"azure-pipelines-task-lib": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/azure-pipelines-task-lib/-/azure-pipelines-task-lib-3.4.0.tgz",
- "integrity": "sha512-3eC4OTFw+7xD7A2aUhxR/j+jRlTI+vVfS0CGxt1pCLs4c/KmY0tQWgbqjD3157kmiucWxELBvgZHaD2gCBe9fg==",
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/azure-pipelines-task-lib/-/azure-pipelines-task-lib-4.4.0.tgz",
+ "integrity": "sha512-JgtxfjxjRA+KWY0Q5UC1fo48nkbVxFHgKEuasKdJMSNxHydOyNlB5MNw4UTiTXp9b0nnqKeOQOBn5RN3go3aPg==",
"requires": {
"minimatch": "3.0.5",
"mockery": "^2.1.0",
@@ -182,14 +180,6 @@
"uuid": "^3.0.1"
},
"dependencies": {
- "minimatch": {
- "version": "3.0.5",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz",
- "integrity": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==",
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
"q": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
@@ -198,9 +188,9 @@
}
},
"azure-pipelines-tasks-azure-arm-rest": {
- "version": "3.223.5",
- "resolved": "https://registry.npmjs.org/azure-pipelines-tasks-azure-arm-rest/-/azure-pipelines-tasks-azure-arm-rest-3.223.5.tgz",
- "integrity": "sha512-qPc011yaOHq+g+/Flr78weU7Q58TwVQDIBjZNq1xC/zqyauc/tA3V0tJSlK2LeHZ9vZRWxDh1DWRPckr+fdcBQ==",
+ "version": "3.232.0",
+ "resolved": "https://registry.npmjs.org/azure-pipelines-tasks-azure-arm-rest/-/azure-pipelines-tasks-azure-arm-rest-3.232.0.tgz",
+ "integrity": "sha512-KC8zGMEwZSvEa7tghgEDiXKiiqTwWYIIXJsSQVN+tVoV5B77AhjDGnh4fQf8P03X3jxvWWb0LJUSxSoXlFZdVA==",
"requires": {
"@azure/msal-node": "1.14.5",
"@types/jsonwebtoken": "^8.5.8",
@@ -215,7 +205,7 @@
"node-fetch": "^2.6.7",
"q": "1.5.1",
"typed-rest-client": "1.8.4",
- "xml2js": "0.4.13"
+ "xml2js": "0.6.2"
},
"dependencies": {
"@types/node": {
@@ -228,18 +218,32 @@
"resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz",
"integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug=="
},
+ "azure-pipelines-task-lib": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/azure-pipelines-task-lib/-/azure-pipelines-task-lib-3.4.0.tgz",
+ "integrity": "sha512-3eC4OTFw+7xD7A2aUhxR/j+jRlTI+vVfS0CGxt1pCLs4c/KmY0tQWgbqjD3157kmiucWxELBvgZHaD2gCBe9fg==",
+ "requires": {
+ "minimatch": "3.0.5",
+ "mockery": "^2.1.0",
+ "q": "^1.5.1",
+ "semver": "^5.1.0",
+ "shelljs": "^0.8.5",
+ "sync-request": "6.1.0",
+ "uuid": "^3.0.1"
+ }
+ },
"q": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
"integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw=="
},
"xml2js": {
- "version": "0.4.13",
- "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.13.tgz",
- "integrity": "sha512-BoxD65qWA2p4znzbaati/Td19uFEc0X6ydj0bFphJO62RrNaGqOyW6ljLWPo3GKDbvW/6dnxAoRX01BsgEWsMA==",
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz",
+ "integrity": "sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==",
"requires": {
"sax": ">=0.6.0",
- "xmlbuilder": ">=2.4.6"
+ "xmlbuilder": "~11.0.0"
}
}
}
@@ -269,34 +273,6 @@
"resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz",
"integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw=="
},
- "azure-pipelines-task-lib": {
- "version": "4.6.1",
- "resolved": "https://registry.npmjs.org/azure-pipelines-task-lib/-/azure-pipelines-task-lib-4.6.1.tgz",
- "integrity": "sha512-3/LFgNNHY0Cw9vArQPxM6ZgPWt3/G2Yy6F75k2AJzKUCotp5X9gZcvF399tVo6T6lTOlp3Vm7VBXq+kzZ6hZmw==",
- "requires": {
- "adm-zip": "^0.5.10",
- "deasync": "^0.1.28",
- "minimatch": "3.0.5",
- "mockery": "^2.1.0",
- "nodejs-file-downloader": "^4.11.1",
- "q": "^1.5.1",
- "semver": "^5.1.0",
- "shelljs": "^0.8.5",
- "uuid": "^3.0.1"
- },
- "dependencies": {
- "q": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
- "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw=="
- },
- "semver": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
- "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g=="
- }
- }
- },
"semver": {
"version": "7.5.4",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
@@ -335,14 +311,6 @@
"chainsaw": "~0.1.0"
}
},
- "bindings": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
- "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
- "requires": {
- "file-uri-to-path": "1.0.0"
- }
- },
"bl": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz",
@@ -488,15 +456,6 @@
"readable-stream": "^2.0.0"
}
},
- "deasync": {
- "version": "0.1.29",
- "resolved": "https://registry.npmjs.org/deasync/-/deasync-0.1.29.tgz",
- "integrity": "sha512-EBtfUhVX23CE9GR6m+F8WPeImEE4hR/FW9RkK0PMl9V1t283s0elqsTD8EZjaKX28SY1BW2rYfCgNsAYdpamUw==",
- "requires": {
- "bindings": "^1.5.0",
- "node-addon-api": "^1.7.1"
- }
- },
"debug": {
"version": "4.3.4",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
@@ -570,16 +529,6 @@
"once": "^1.4.0"
}
},
- "file-uri-to-path": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
- "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw=="
- },
- "follow-redirects": {
- "version": "1.15.3",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz",
- "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q=="
- },
"form-data": {
"version": "2.5.1",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz",
@@ -694,6 +643,13 @@
"requires": {
"agent-base": "5",
"debug": "4"
+ },
+ "dependencies": {
+ "agent-base": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-5.1.1.tgz",
+ "integrity": "sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g=="
+ }
}
},
"ieee754": {
@@ -721,9 +677,9 @@
"integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA=="
},
"is-core-module": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz",
- "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==",
+ "version": "2.13.0",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz",
+ "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==",
"requires": {
"has": "^1.0.3"
}
@@ -874,15 +830,10 @@
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
},
- "node-addon-api": {
- "version": "1.7.2",
- "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz",
- "integrity": "sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg=="
- },
"node-fetch": {
- "version": "2.6.11",
- "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.11.tgz",
- "integrity": "sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w==",
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
+ "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
"requires": {
"whatwg-url": "^5.0.0"
}
@@ -892,36 +843,6 @@
"resolved": "https://registry.npmjs.org/node-stream-zip/-/node-stream-zip-1.15.0.tgz",
"integrity": "sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw=="
},
- "nodejs-file-downloader": {
- "version": "4.12.1",
- "resolved": "https://registry.npmjs.org/nodejs-file-downloader/-/nodejs-file-downloader-4.12.1.tgz",
- "integrity": "sha512-LpfCTNhh805AlLnJnzt1PuEj+RmbrccbAQZ6hBRw2e6QPVR0Qntuo6qqyvPHG5s77/0w0IEKgRAD4nbSnr/X4w==",
- "requires": {
- "follow-redirects": "^1.15.1",
- "https-proxy-agent": "^5.0.0",
- "mime-types": "^2.1.27",
- "sanitize-filename": "^1.6.3"
- },
- "dependencies": {
- "agent-base": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
- "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
- "requires": {
- "debug": "4"
- }
- },
- "https-proxy-agent": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
- "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
- "requires": {
- "agent-base": "6",
- "debug": "4"
- }
- }
- }
- },
"nopt": {
"version": "3.0.6",
"resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
@@ -1020,11 +941,11 @@
"integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw=="
},
"resolve": {
- "version": "1.22.1",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
- "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
+ "version": "1.22.8",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
+ "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
"requires": {
- "is-core-module": "^2.9.0",
+ "is-core-module": "^2.13.0",
"path-parse": "^1.0.7",
"supports-preserve-symlinks-flag": "^1.0.0"
}
@@ -1034,23 +955,15 @@
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
},
- "sanitize-filename": {
- "version": "1.6.3",
- "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz",
- "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==",
- "requires": {
- "truncate-utf8-bytes": "^1.0.0"
- }
- },
"sax": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
"integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
},
"semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g=="
},
"shelljs": {
"version": "0.8.5",
@@ -1175,18 +1088,10 @@
"resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz",
"integrity": "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ=="
},
- "truncate-utf8-bytes": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz",
- "integrity": "sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==",
- "requires": {
- "utf8-byte-length": "^1.0.1"
- }
- },
"tslib": {
- "version": "2.5.3",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.3.tgz",
- "integrity": "sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w=="
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
},
"tunnel": {
"version": "0.0.6",
@@ -1224,11 +1129,6 @@
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
"integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="
},
- "utf8-byte-length": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz",
- "integrity": "sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA=="
- },
"util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
diff --git a/_generated/AzureRmWebAppDeploymentV4_Node20/package.json b/_generated/AzureRmWebAppDeploymentV4_Node20/package.json
index 34cb2c37eefa..64667841dfb1 100644
--- a/_generated/AzureRmWebAppDeploymentV4_Node20/package.json
+++ b/_generated/AzureRmWebAppDeploymentV4_Node20/package.json
@@ -20,8 +20,9 @@
"@types/mocha": "^5.2.7",
"@types/node": "^20.3.1",
"@types/q": "1.0.7",
- "azure-pipelines-task-lib": "^3.4.0",
- "azure-pipelines-tasks-azure-arm-rest": "3.223.5",
+ "agent-base": "^6.0.2",
+ "azure-pipelines-task-lib": "4.4.0",
+ "azure-pipelines-tasks-azure-arm-rest": "^3.232.0",
"azure-pipelines-tasks-webdeployment-common": "4.230.6",
"moment": "^2.29.4",
"q": "1.4.1",
diff --git a/_generated/AzureRmWebAppDeploymentV4_Node20/task.json b/_generated/AzureRmWebAppDeploymentV4_Node20/task.json
index a433daf80dca..5c8ee52cd286 100644
--- a/_generated/AzureRmWebAppDeploymentV4_Node20/task.json
+++ b/_generated/AzureRmWebAppDeploymentV4_Node20/task.json
@@ -17,8 +17,8 @@
"author": "Microsoft Corporation",
"version": {
"Major": 4,
- "Minor": 234,
- "Patch": 3
+ "Minor": 235,
+ "Patch": 1
},
"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.",
"minimumAgentVersion": "2.104.1",
@@ -663,7 +663,7 @@
"MSDeployNotSupportTokenAuth": "App Service is configured to not use basic authentication. This requires Web Deploy msdeploy.exe version 7.1.7225 or higher. You need a version of Visual Studio that includes an updated version of msdeploy.exe. For more information, visit https://aka.ms/azdo-webapp-msdeploy ."
},
"_buildConfigMapping": {
- "Default": "4.234.2",
- "Node20_229_2": "4.234.3"
+ "Default": "4.235.0",
+ "Node20_229_2": "4.235.1"
}
}
\ No newline at end of file
diff --git a/_generated/AzureRmWebAppDeploymentV4_Node20/task.loc.json b/_generated/AzureRmWebAppDeploymentV4_Node20/task.loc.json
index 2583974a9e25..6a67795f83b1 100644
--- a/_generated/AzureRmWebAppDeploymentV4_Node20/task.loc.json
+++ b/_generated/AzureRmWebAppDeploymentV4_Node20/task.loc.json
@@ -17,8 +17,8 @@
"author": "Microsoft Corporation",
"version": {
"Major": 4,
- "Minor": 234,
- "Patch": 3
+ "Minor": 235,
+ "Patch": 1
},
"releaseNotes": "ms-resource:loc.releaseNotes",
"minimumAgentVersion": "2.104.1",
@@ -663,7 +663,7 @@
"MSDeployNotSupportTokenAuth": "ms-resource:loc.messages.MSDeployNotSupportTokenAuth"
},
"_buildConfigMapping": {
- "Default": "4.234.2",
- "Node20_229_2": "4.234.3"
+ "Default": "4.235.0",
+ "Node20_229_2": "4.235.1"
}
}
\ No newline at end of file
diff --git a/_generated/AzureTestPlanV0.versionmap.txt b/_generated/AzureTestPlanV0.versionmap.txt
index ea6fe113e445..3bb1c1cb105d 100644
--- a/_generated/AzureTestPlanV0.versionmap.txt
+++ b/_generated/AzureTestPlanV0.versionmap.txt
@@ -1,2 +1,2 @@
-Default|0.234.0
-Node20-225|0.234.1
+Default|0.235.0
+Node20-225|0.235.1
diff --git a/_generated/AzureTestPlanV0/Invokers/gradleinvoker.ts b/_generated/AzureTestPlanV0/Invokers/gradleinvoker.ts
new file mode 100644
index 000000000000..02dcc2bea99a
--- /dev/null
+++ b/_generated/AzureTestPlanV0/Invokers/gradleinvoker.ts
@@ -0,0 +1,31 @@
+import { spawn } from '../testexecutor'
+import tl = require('azure-pipelines-task-lib/task');
+import utils = require('../utils');
+import constants = require('../constants');
+export async function executegradletests(testsToBeExecuted: string[]) {
+
+ //public doc link: https://docs.gradle.org/current/userguide/command_line_interface.html
+ //gradle command like "gradle test --tests= --tests="
+
+ const executable = constants.GRADLE_EXECUTABLE;
+ const args = []
+
+ args.push('test');
+
+ for (let testcase of testsToBeExecuted) {
+
+ // in some cases found that gradle is including () in test name
+ utils.removeParenthesesFromEnd(testcase);
+ args.push('--tests=' + testcase);
+ }
+
+ tl.debug("Executing gradle tests with executable : " + executable);
+ tl.debug("Executing gradle tests with args :" + args);
+
+ const { status, error } = await spawn(executable, args)
+ if (error) {
+ tl.error("Error executing gradle command, " + error);
+ }
+
+ return { exitCode: status ?? 1 }
+}
\ No newline at end of file
diff --git a/_generated/AzureTestPlanV0/Invokers/maveninvoker.ts b/_generated/AzureTestPlanV0/Invokers/maveninvoker.ts
new file mode 100644
index 000000000000..5dd8faa44c28
--- /dev/null
+++ b/_generated/AzureTestPlanV0/Invokers/maveninvoker.ts
@@ -0,0 +1,39 @@
+import { spawn } from '../testexecutor'
+import tl = require('azure-pipelines-task-lib/task');
+import utils = require('../utils');
+import constants = require('../constants');
+
+export async function executemaventests(testsToBeExecuted: string[]) {
+
+ //public doc link: https://maven.apache.org/surefire/maven-surefire-plugin/examples/single-test.html
+ //maven command like "mvn test -Dtest=,"
+
+ const executable = constants.MVN_EXECUTABLE;
+ const args = []
+ const testsToRun =[]
+
+ for (let tests of testsToBeExecuted) {
+ const modifiedTest = utils.replaceLastDotWithHash(tests);
+ testsToRun.push(modifiedTest);
+ }
+
+ if (testsToRun.length > 0)
+ {
+ const testsList = testsToRun.join(',')
+ const dtest = constants.MAVEN_DTEST;
+ const combinedTestArgs = dtest + testsList;
+
+ args.push('test');
+ args.push(combinedTestArgs);
+ }
+
+ tl.debug("Executing java maven tests with executable : " + executable);
+ tl.debug("Executing java maven tests with args :" + args);
+
+ const { status, error } = await spawn(executable, args)
+ if (error) {
+ tl.error("Error executing mvn command, " + error);
+ }
+
+ return { exitCode: status ?? 1 }
+ }
\ No newline at end of file
diff --git a/_generated/AzureTestPlanV0/Invokers/pythonivoker.ts b/_generated/AzureTestPlanV0/Invokers/pythonivoker.ts
new file mode 100644
index 000000000000..9188f8822fe2
--- /dev/null
+++ b/_generated/AzureTestPlanV0/Invokers/pythonivoker.ts
@@ -0,0 +1,29 @@
+import { spawn } from '../testexecutor'
+import tl = require('azure-pipelines-task-lib/task');
+import constants = require('../constants');
+
+export async function executepythontests(testsToBeExecuted: string[]) {
+
+ //public doc link: https://docs.pytest.org/en/7.1.x/how-to/usage.html#specifying-which-tests-to-run
+ //pytest command like "pytest -v --junitxml=junit.xml"
+
+ const executable = constants.PYTEST_EXECUTABLE;
+ let args: string[] = [];
+
+ for (let testcase of testsToBeExecuted) {
+ args.push(testcase);
+ }
+
+ args.push('--junitxml=junit.xml')
+
+ tl.debug("Executing python tests with executable : " + executable);
+ tl.debug("Executing python tests with args :" + args);
+
+ const { status, error } = await spawn(executable, args)
+
+ if (error) {
+ tl.error("Error executing pytest command, " + error);
+ }
+
+ return { exitCode: status ?? 1 }
+}
\ No newline at end of file
diff --git a/_generated/AzureTestPlanV0/Strings/resources.resjson/en-US/resources.resjson b/_generated/AzureTestPlanV0/Strings/resources.resjson/en-US/resources.resjson
new file mode 100644
index 000000000000..ab005739518c
--- /dev/null
+++ b/_generated/AzureTestPlanV0/Strings/resources.resjson/en-US/resources.resjson
@@ -0,0 +1,22 @@
+{
+ "loc.friendlyName": "Azure Test Plan",
+ "loc.helpMarkDown": "[Learn more about this task](https://go.microsoft.com/fwlink/?LinkID=613742)",
+ "loc.description": "Run manual and automated tests in test plan in Java and python language",
+ "loc.instanceNameFormat": "Azure Test Plan - $(testSelector)",
+ "loc.input.label.testSelector": "Test cases to be executed",
+ "loc.input.help.testSelector": "
Manual tests: Use this option to trigger manual tests from your test plan.
Automated tests: Use this option to run tests from your test plan that have automated test method associated with it.
Manual tests: Use this option to trigger manual tests from your test plan.
Automated tests: Use this option to run tests from your test plan that have automated test method associated with it.
",
+ "options": {
+ "manualTests": "Manual tests",
+ "automatedTests": "Automated tests"
+ },
+ "properties": {
+ "MultiSelectFlatList": "True"
+ }
+ },
+ {
+ "name": "testPlan",
+ "type": "pickList",
+ "label": "Test plan",
+ "defaultValue": "",
+ "required": true,
+ "helpMarkDown": "Select a test plan containing test suites with test cases.",
+ "properties": {
+ "DisableManageLink": "True",
+ "EditableOptions": "True"
+ }
+ },
+ {
+ "name": "testSuite",
+ "type": "pickList",
+ "label": "Test suite",
+ "defaultValue": "",
+ "helpMarkDown": "Select one or more test suites containing test cases.",
+ "required": true,
+ "properties": {
+ "MultiSelect": "True",
+ "DisableManageLink": "True",
+ "EditableOptions": "True"
+ }
+ },
+ {
+ "name": "testConfiguration",
+ "type": "pickList",
+ "label": "Test configuration",
+ "defaultValue": "",
+ "required": true,
+ "helpMarkDown": "Select Test Configuration.",
+ "properties": {
+ "DisableManageLink": "True",
+ "EditableOptions": "True"
+ }
+ },
+ {
+ "name": "testLanguageInput",
+ "type": "pickList",
+ "label": "Select Test framework language",
+ "helpMarkDown": "Test Framework Language of automated tests in test plan",
+ "options": {
+ "Java-Maven": "Java-Maven",
+ "Java-Gradle": "Java-Gradle",
+ "Python": "Python"
+ },
+ "properties": {
+ "MultiSelectFlatList": "True"
+ }
+ }
+ ],
+ "dataSourceBindings": [
+ {
+ "target": "testPlan",
+ "endpointId": "tfs:teamfoundation",
+ "endpointUrl": "{{endpoint.url}}/{{system.teamProject}}/_apis/test/plans?filterActivePlans=true&api-version=3.0-preview.2&$skip={{skip}}&$top=1000",
+ "resultSelector": "jsonpath:$.value[*]",
+ "resultTemplate": "{ \"Value\" : \"{{{id}}}\", \"DisplayValue\" : \"{{{id}}} - {{{name}}}\" }",
+ "callbackContextTemplate": "{\"skip\": \"{{add skip 1000}}\"}",
+ "callbackRequiredTemplate": "{{isEqualNumber result.count 1000}}",
+ "initialContextTemplate": "{\"skip\": \"0\"}"
+ },
+ {
+ "target": "testConfiguration",
+ "endpointId": "tfs:teamfoundation",
+ "endpointUrl": "{{endpoint.url}}/{{system.teamProject}}/_apis/test/configurations?api-version=3.0-preview.1",
+ "resultSelector": "jsonpath:$.value[*]",
+ "resultTemplate": "{ \"Value\" : \"{{{id}}}\", \"DisplayValue\" : \"{{{id}}} - {{{name}}}\" }"
+ },
+ {
+ "target": "testSuite",
+ "endpointId": "tfs:teamfoundation",
+ "endpointUrl": "{{endpoint.url}}/{{system.teamProject}}/_apis/test/plans/{{testPlan}}/suites?$asTreeView=true&api-version=3.0-preview.2",
+ "parameters": {
+ "testPlan": "$(testPlan)"
+ },
+ "resultSelector": "jsonpath:$.value[*]"
+ }
+ ],
+ "instanceNameFormat": "Azure Test Plan - $(testSelector)",
+ "execution": {
+ "Node10": {
+ "target": "runTestPlan.js",
+ "argumentFormat": ""
+ },
+ "Node16": {
+ "target": "runTestPlan.js",
+ "argumentFormat": ""
+ }
+ },
+ "messages": {
+ "testPlanInput": "Test plan Id : %s",
+ "testplanConfigInput": "Test plan configuration Id : %s",
+ "testSuiteSelected": "Test suite Id selected: %s",
+ "automatedTestsTriggered": "Trigerring execution of Automated tests from test plan",
+ "ErrorFailTaskOnExecutingTests": "Error occured while executing test command",
+ "ErrorFailTaskOnAPIFailure": "Error occured while fetching automated tests from test plan inputs"
+ },
+ "_buildConfigMapping": {
+ "Default": "0.235.0",
+ "Node20-225": "0.235.1"
+ }
+}
\ No newline at end of file
diff --git a/_generated/AzureTestPlanV0/task.loc.json b/_generated/AzureTestPlanV0/task.loc.json
new file mode 100644
index 000000000000..cd20c03f849c
--- /dev/null
+++ b/_generated/AzureTestPlanV0/task.loc.json
@@ -0,0 +1,140 @@
+{
+ "id": "105e2492-460a-4da6-56d5-2fa9ab3f0174",
+ "name": "AzureTestPlan",
+ "friendlyName": "ms-resource:loc.friendlyName",
+ "description": "ms-resource:loc.description",
+ "helpUrl": "https://docs.microsoft.com/azure/devops/pipelines/tasks/test/publish-test-results",
+ "helpMarkDown": "ms-resource:loc.helpMarkDown",
+ "category": "Test",
+ "visibility": [
+ "Build",
+ "Release"
+ ],
+ "author": "Microsoft Corporation",
+ "version": {
+ "Major": 0,
+ "Minor": 235,
+ "Patch": 0
+ },
+ "preview": true,
+ "demands": [],
+ "minimumAgentVersion": "2.144.0",
+ "inputs": [
+ {
+ "name": "testSelector",
+ "type": "pickList",
+ "label": "ms-resource:loc.input.label.testSelector",
+ "required": true,
+ "helpMarkDown": "ms-resource:loc.input.help.testSelector",
+ "options": {
+ "manualTests": "Manual tests",
+ "automatedTests": "Automated tests"
+ },
+ "properties": {
+ "MultiSelectFlatList": "True"
+ }
+ },
+ {
+ "name": "testPlan",
+ "type": "pickList",
+ "label": "ms-resource:loc.input.label.testPlan",
+ "defaultValue": "",
+ "required": true,
+ "helpMarkDown": "ms-resource:loc.input.help.testPlan",
+ "properties": {
+ "DisableManageLink": "True",
+ "EditableOptions": "True"
+ }
+ },
+ {
+ "name": "testSuite",
+ "type": "pickList",
+ "label": "ms-resource:loc.input.label.testSuite",
+ "defaultValue": "",
+ "helpMarkDown": "ms-resource:loc.input.help.testSuite",
+ "required": true,
+ "properties": {
+ "MultiSelect": "True",
+ "DisableManageLink": "True",
+ "EditableOptions": "True"
+ }
+ },
+ {
+ "name": "testConfiguration",
+ "type": "pickList",
+ "label": "ms-resource:loc.input.label.testConfiguration",
+ "defaultValue": "",
+ "required": true,
+ "helpMarkDown": "ms-resource:loc.input.help.testConfiguration",
+ "properties": {
+ "DisableManageLink": "True",
+ "EditableOptions": "True"
+ }
+ },
+ {
+ "name": "testLanguageInput",
+ "type": "pickList",
+ "label": "ms-resource:loc.input.label.testLanguageInput",
+ "helpMarkDown": "ms-resource:loc.input.help.testLanguageInput",
+ "options": {
+ "Java-Maven": "Java-Maven",
+ "Java-Gradle": "Java-Gradle",
+ "Python": "Python"
+ },
+ "properties": {
+ "MultiSelectFlatList": "True"
+ }
+ }
+ ],
+ "dataSourceBindings": [
+ {
+ "target": "testPlan",
+ "endpointId": "tfs:teamfoundation",
+ "endpointUrl": "{{endpoint.url}}/{{system.teamProject}}/_apis/test/plans?filterActivePlans=true&api-version=3.0-preview.2&$skip={{skip}}&$top=1000",
+ "resultSelector": "jsonpath:$.value[*]",
+ "resultTemplate": "{ \"Value\" : \"{{{id}}}\", \"DisplayValue\" : \"{{{id}}} - {{{name}}}\" }",
+ "callbackContextTemplate": "{\"skip\": \"{{add skip 1000}}\"}",
+ "callbackRequiredTemplate": "{{isEqualNumber result.count 1000}}",
+ "initialContextTemplate": "{\"skip\": \"0\"}"
+ },
+ {
+ "target": "testConfiguration",
+ "endpointId": "tfs:teamfoundation",
+ "endpointUrl": "{{endpoint.url}}/{{system.teamProject}}/_apis/test/configurations?api-version=3.0-preview.1",
+ "resultSelector": "jsonpath:$.value[*]",
+ "resultTemplate": "{ \"Value\" : \"{{{id}}}\", \"DisplayValue\" : \"{{{id}}} - {{{name}}}\" }"
+ },
+ {
+ "target": "testSuite",
+ "endpointId": "tfs:teamfoundation",
+ "endpointUrl": "{{endpoint.url}}/{{system.teamProject}}/_apis/test/plans/{{testPlan}}/suites?$asTreeView=true&api-version=3.0-preview.2",
+ "parameters": {
+ "testPlan": "$(testPlan)"
+ },
+ "resultSelector": "jsonpath:$.value[*]"
+ }
+ ],
+ "instanceNameFormat": "ms-resource:loc.instanceNameFormat",
+ "execution": {
+ "Node10": {
+ "target": "runTestPlan.js",
+ "argumentFormat": ""
+ },
+ "Node16": {
+ "target": "runTestPlan.js",
+ "argumentFormat": ""
+ }
+ },
+ "messages": {
+ "testPlanInput": "ms-resource:loc.messages.testPlanInput",
+ "testplanConfigInput": "ms-resource:loc.messages.testplanConfigInput",
+ "testSuiteSelected": "ms-resource:loc.messages.testSuiteSelected",
+ "automatedTestsTriggered": "ms-resource:loc.messages.automatedTestsTriggered",
+ "ErrorFailTaskOnExecutingTests": "ms-resource:loc.messages.ErrorFailTaskOnExecutingTests",
+ "ErrorFailTaskOnAPIFailure": "ms-resource:loc.messages.ErrorFailTaskOnAPIFailure"
+ },
+ "_buildConfigMapping": {
+ "Default": "0.235.0",
+ "Node20-225": "0.235.1"
+ }
+}
\ No newline at end of file
diff --git a/_generated/AzureTestPlanV0/testexecutor.ts b/_generated/AzureTestPlanV0/testexecutor.ts
new file mode 100644
index 000000000000..afb60df1681f
--- /dev/null
+++ b/_generated/AzureTestPlanV0/testexecutor.ts
@@ -0,0 +1,23 @@
+import * as path from 'path';
+import * as fs from 'fs';
+import * as semver from "semver"
+import { spawnSync } from 'child_process'
+import tl = require('azure-pipelines-task-lib/task');
+
+export function spawn(executable: string, args: string[]): Promise {
+
+ console.log("-------------------------------------------")
+ console.log("test execution begins")
+ console.log("-------------------------------------------")
+ console.log('Test command executable: ' + executable);
+ console.log('Test command args: ' + args);
+
+ const { status, error } = spawnSync(executable, args, { stdio: 'inherit' })
+
+ return Promise.resolve({ status, error })
+}
+
+interface SpawnResult {
+ status: number | null
+ error?: Error
+}
\ No newline at end of file
diff --git a/_generated/AzureTestPlanV0/tsconfig.json b/_generated/AzureTestPlanV0/tsconfig.json
new file mode 100644
index 000000000000..0438b79f69ac
--- /dev/null
+++ b/_generated/AzureTestPlanV0/tsconfig.json
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "target": "ES6",
+ "module": "commonjs"
+ }
+}
\ No newline at end of file
diff --git a/_generated/AzureTestPlanV0/utils.ts b/_generated/AzureTestPlanV0/utils.ts
new file mode 100644
index 000000000000..5ea70d7cea39
--- /dev/null
+++ b/_generated/AzureTestPlanV0/utils.ts
@@ -0,0 +1,23 @@
+export function removeParenthesesFromEnd(inputString) {
+ // Check if the string ends with parentheses
+ if (inputString.endsWith('()')) {
+ // Remove the parentheses from the end
+ return inputString.slice(0, -2);
+ } else {
+ // If no parentheses at the end, return the original string
+ return inputString;
+ }
+}
+
+export function replaceLastDotWithHash(inputString) {
+ const lastDotIndex = inputString.lastIndexOf('.');
+
+ if (lastDotIndex !== -1) {
+ const stringWithHash = inputString.slice(0, lastDotIndex) + '#' + inputString.slice(lastDotIndex + 1);
+ return stringWithHash;
+ } else {
+ // If there is no dot in the string, return the original string
+ return inputString;
+ }
+}
+
diff --git a/_generated/AzureTestPlanV0_Node20/package-lock.json b/_generated/AzureTestPlanV0_Node20/package-lock.json
index df8150002c7a..34d6ad42afd8 100644
--- a/_generated/AzureTestPlanV0_Node20/package-lock.json
+++ b/_generated/AzureTestPlanV0_Node20/package-lock.json
@@ -26,9 +26,9 @@
"integrity": "sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw=="
},
"@types/node": {
- "version": "20.11.0",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.0.tgz",
- "integrity": "sha512-o9bjXmDNcF7GbM4CNQpmi+TutCgap/K3w1JyKgxAjqx41zp9qlIAVFi0IhCNsJcXolEqLWhbFbEeL0PvYm4pcQ==",
+ "version": "20.11.16",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.16.tgz",
+ "integrity": "sha512-gKb0enTmRCzXSSUJDq6/sPcqrfCv2mkkG6Jt/clpn5eiCbKTY+SgZUxo+p8ZKMof5dCp9vHQUAB7wOUTod22wQ==",
"requires": {
"undici-types": "~5.26.4"
}
@@ -124,6 +124,15 @@
}
}
},
+ "azure-devops-node-api": {
+ "version": "12.2.0",
+ "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-12.2.0.tgz",
+ "integrity": "sha512-htza/rAmMNdLWpoFh5kG7CQFaZ17ylDEGCcQCTIu39R33YFCB8LIJNzjIL9Uqudzc5VdU47sxcXxAJvcuwc3Tw==",
+ "requires": {
+ "tunnel": "0.0.6",
+ "typed-rest-client": "^1.8.4"
+ }
+ },
"azure-pipelines-task-lib": {
"version": "4.6.1",
"resolved": "https://registry.npmjs.org/azure-pipelines-task-lib/-/azure-pipelines-task-lib-4.6.1.tgz",
@@ -210,9 +219,9 @@
},
"dependencies": {
"@types/node": {
- "version": "16.18.70",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.70.tgz",
- "integrity": "sha512-8eIk20G5VVVQNZNouHjLA2b8utE2NvGybLjMaF4lyhA9uhGwnmXF8o+icdXKGSQSNANJewXva/sFUoZLwAaYAg=="
+ "version": "16.18.79",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.79.tgz",
+ "integrity": "sha512-Qd7jdLR5zmnIyMhfDrfPqN5tUCvreVpP3Qrf2oSM+F7SNzlb/MwHISGUkdFHtevfkPJ3iAGyeQI/jsbh9EStgQ=="
}
}
},
@@ -365,9 +374,9 @@
"integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw=="
},
"follow-redirects": {
- "version": "1.15.3",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz",
- "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q=="
+ "version": "1.15.5",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz",
+ "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw=="
},
"form-data": {
"version": "2.5.1",
diff --git a/_generated/AzureTestPlanV0_Node20/package.json b/_generated/AzureTestPlanV0_Node20/package.json
index a62592d1e683..25a34b0cd100 100644
--- a/_generated/AzureTestPlanV0_Node20/package.json
+++ b/_generated/AzureTestPlanV0_Node20/package.json
@@ -24,6 +24,7 @@
"azure-pipelines-task-lib": "^4.1.0",
"azure-pipelines-tasks-docker-common": "2.198.1",
"azure-pipelines-tasks-utility-common": "^3.212.0",
+ "azure-devops-node-api": "^12.2.0",
"azure-pipelines-tool-lib": "^2.0.0-preview",
"typed-rest-client": "^1.8.9",
"axios": "^1.6.2"
diff --git a/_generated/AzureTestPlanV0_Node20/task.json b/_generated/AzureTestPlanV0_Node20/task.json
index 58b1be53809a..de9e1d2fbfdb 100644
--- a/_generated/AzureTestPlanV0_Node20/task.json
+++ b/_generated/AzureTestPlanV0_Node20/task.json
@@ -13,7 +13,7 @@
"author": "Microsoft Corporation",
"version": {
"Major": 0,
- "Minor": 234,
+ "Minor": 235,
"Patch": 1
},
"preview": true,
@@ -138,7 +138,7 @@
"ErrorFailTaskOnAPIFailure": "Error occured while fetching automated tests from test plan inputs"
},
"_buildConfigMapping": {
- "Default": "0.234.0",
- "Node20-225": "0.234.1"
+ "Default": "0.235.0",
+ "Node20-225": "0.235.1"
}
}
\ No newline at end of file
diff --git a/_generated/AzureTestPlanV0_Node20/task.loc.json b/_generated/AzureTestPlanV0_Node20/task.loc.json
index be1862893e1b..06e2e8670acb 100644
--- a/_generated/AzureTestPlanV0_Node20/task.loc.json
+++ b/_generated/AzureTestPlanV0_Node20/task.loc.json
@@ -13,7 +13,7 @@
"author": "Microsoft Corporation",
"version": {
"Major": 0,
- "Minor": 234,
+ "Minor": 235,
"Patch": 1
},
"preview": true,
@@ -138,7 +138,7 @@
"ErrorFailTaskOnAPIFailure": "ms-resource:loc.messages.ErrorFailTaskOnAPIFailure"
},
"_buildConfigMapping": {
- "Default": "0.234.0",
- "Node20-225": "0.234.1"
+ "Default": "0.235.0",
+ "Node20-225": "0.235.1"
}
}
\ No newline at end of file
diff --git a/_generated/AzureWebAppV1.versionmap.txt b/_generated/AzureWebAppV1.versionmap.txt
index 56c1557e0b09..0badeff57c24 100644
--- a/_generated/AzureWebAppV1.versionmap.txt
+++ b/_generated/AzureWebAppV1.versionmap.txt
@@ -1,2 +1,2 @@
-Default|1.232.0
-Node20_229_2|1.232.1
+Default|1.235.0
+Node20_229_2|1.235.1
diff --git a/_generated/AzureWebAppV1/README.md b/_generated/AzureWebAppV1/README.md
new file mode 100644
index 000000000000..6d44622c5837
--- /dev/null
+++ b/_generated/AzureWebAppV1/README.md
@@ -0,0 +1,131 @@
+# Azure Web App Deployment: ARM
+
+## Overview
+
+The Azure Web App task is used to update different Azure App Service to deploy [Web Apps](https://azure.microsoft.com/en-in/documentation/articles/app-service-web-overview/), [Functions](https://docs.microsoft.com/en-us/azure/azure-functions/) and [WebJobs](https://azure.microsoft.com/en-us/blog/webjobs-goes-into-full-production/) to Azure. The task works on cross platform Azure Pipelines agents running Windows, Linux or Mac and uses the underlying deployment technologies of RunFromPackage, Zip Deploy, Containers and [Kudu REST APIs](https://github.com/projectkudu/kudu/wiki/REST-API).
+
+The task works for [ASP.NET](https://www.visualstudio.com/en-us/docs/release/examples/azure/azure-web-apps-from-build-and-release-hubs), [ASP.NET Core](https://www.visualstudio.com/en-us/docs/release/examples/azure/aspnet-core10-azure-web-apps), PHP, Java, Python, Go and [Node.js](https://www.visualstudio.com/en-us/docs/release/examples/nodejs/node-to-azure-webapps) based web applications.
+
+The task can be used to deploy different Azure App Services like Function App (Windows/Linux/Containers), Web App on Windows, Web App on Linux, Web App for Containers and apps configured under Azure App Service Environments.
+
+The task is **under development and is available to a limited set of Azure DevOps organizations**. The [video](https://www.youtube.com/watch?v=uQ2qCmaZ_Ag&feature=youtu.be) describes the features that are available in the task currently.
+
+## Contact Information
+
+Please report a problem at [Developer Community Forum](https://developercommunity.visualstudio.com/spaces/21/index.html) if you are facing problems in making this task work. You can also share feedback about the task like, what more functionality should be added to the task, what other tasks you would like to have, at the same place.
+
+## Pre-requisites for the task
+
+The following pre-requisites need to be setup in the target machine(s) for the task to work properly.
+
+##### Azure Web App or Azure Function
+
+The task is used to deploy a Web project to an existing Azure Web App. The Web App should exist prior to running the task. The Web App can be created from the [Azure portal](https://azure.microsoft.com/en-in/documentation/videos/azure-app-service-web-apps-with-yochay-kiriaty/) and [configured](https://azure.microsoft.com/en-us/documentation/articles/web-sites-configure/) there. Alternatively, the [Azure PowerShell task](https://github.com/Microsoft/vsts-tasks/tree/master/Tasks/AzurePowerShell) can be used to run [AzureRM PowerShell scripts](https://msdn.microsoft.com/en-us/library/mt619237.aspx) to provision and configure the Web App.
+
+The task can also be used to deploy [Azure Functions](https://azure.microsoft.com/en-in/services/functions/) (Windows/Linux/Containers).
+
+##### Azure Subscription
+
+To deploy to Azure, an Azure subscription has to be linked to Team Foundation Server or to Azure Pipelines using the Services tab in the Account Administration section. Add the Azure subscription to use in the Build or Release Management definition by opening the Account Administration screen (gear icon on the top-right of the screen) and then click on the Services Tab.
+
+Create the [ARM](https://azure.microsoft.com/en-in/documentation/articles/resource-group-overview/) service endpoint, use **'Azure Resource Manager'** endpoint type, for more details follow the steps listed in the link [here](https://go.microsoft.com/fwlink/?LinkID=623000&clcid=0x409).
+
+The task does not work with the Azure Classic service endpoint and it will not list these connections in the parameters in the task.
+
+## Deployment
+
+Several deployment methods are available in this task. To change the deployment option, expand Additional Deployment Options and enable Select deployment method to choose from additional package-based deployment options.
+
+Based on the type of Azure App Service and Azure Pipelines agent, the task chooses a suitable deployment technology. The different deployment technologies used by the task are:
+
+* *Kudu REST APIs*
+
+* *Container Registry*
+
+* *Zip Deploy*
+
+* *RunFromPackage*
+
+By default the task tries to select the appropriate deployment technology given the input package, app service type and agent OS.
+
+* When the App Service type is Web App on Linux App, use Zip Deploy
+* If War file is provided, use War Deploy
+* If Jar file is provided, use Run From Zip
+* For all others, use Run From Zip (via Zip Deploy)
+
+On non-Windows agent (for any App service type), the task relies on [Kudu REST APIs](https://github.com/projectkudu/kudu/wiki/REST-API) to deploy the Web App.
+
+### [Kudu REST APIs](https://github.com/projectkudu/kudu/wiki/REST-API)
+Works on a Windows as well as Linux automation agent when the target is a Web App on Windows or Web App on Linux (built-in source) or Function App. The task uses Kudu to copy over files to the Azure App service.
+
+### Container Registry
+Works on a Windows as well as Linux automation agent when the target is a Web App for Containers. The task updates the Azure Web App for Containers by setting the right Container registry, repository, image name and tag information. You can also use the task to pass a startup command for the container image.
+
+### Zip Deploy
+Creates a .zip deployment package of the chosen Package or folder and deploys the file contents to the wwwroot folder of the App Service name function app in Azure. This option overwrites all existing contents in the wwwroot folder. For more information, see [Zip deployment for Azure Functions](https://docs.microsoft.com/azure/azure-functions/deployment-zip-push).
+
+### RunFromPackage
+Creates the same deployment package as Zip Deploy. However, instead of deploying files to the wwwroot folder, the entire package is mounted by the Functions runtime. With this option, files in the wwwroot folder become read-only. For more information, see [Run your Azure Functions from a package file](https://docs.microsoft.com/azure/azure-functions/run-functions-from-deployment-package).
+
+### Parameters of the task
+The task is used to deploy a Web project to an existing Azure Web App or Function. The mandatory fields are highlighted with a *.
+
+* **Azure Subscription\*:** Select the AzureRM Subscription. If none exists, then click on the **Manage** link, to navigate to the Services tab in the Administrators panel. In the tab click on **New Service Endpoint** and select **Azure Resource Manager** from the dropdown.
+
+* **App Service type\*:** Select the Azure App Service type. The different app types supported are Function App, Web App on Windows, Web App on Linux, Web App for Containers and Azure App Service Environments
+
+* **App Service Name\*:** Select the name of an existing Azure App Service. Enter the name of the Web App if it was provisioned dynamically using the [Azure PowerShell task](https://github.com/Microsoft/vsts-tasks/tree/master/Tasks/AzurePowerShell) and [AzureRM PowerShell scripts](https://msdn.microsoft.com/en-us/library/mt619237.aspx).
+
+* **Deploy to Slot:** Select the option to deploy to an existing slot other than the Production slot. Do not select this option if the Web project is being deployed to the Production slot. The Web App itself is the Production slot.
+
+* **Resource Group:** Select the Azure Resource Group that contains the Azure App Service specified above. Enter the name of the Azure Resource Group if has been dynamically provisioned using [Azure Resource Group Deployment task](https://github.com/Microsoft/vsts-tasks/tree/master/Tasks/DeployAzureResourceGroup) or [Azure PowerShell task](https://github.com/Microsoft/vsts-tasks/tree/master/Tasks/AzurePowerShell). This is a required parameter if the option to Deploy to Slot has been selected.
+
+* **Slot:** Select the Slot to deploy the Web project to. Enter the name of the Slot if has been dynamically provisioned using [Azure Resource Group Deployment task](https://github.com/Microsoft/vsts-tasks/tree/master/Tasks/DeployAzureResourceGroup) or [Azure PowerShell task](https://github.com/Microsoft/vsts-tasks/tree/master/Tasks/AzurePowerShell). This is a required parameter if the option to Deploy to Slot has been selected.
+
+* **Package or Folder\*:** Location of the Web App zip package or folder on the automation agent or on a UNC path accessible to the automation agent like, \\\\BudgetIT\\Web\\Deploy\\Fabrikam.zip. Predefined system variables and wild cards like, $(System.DefaultWorkingDirectory)\\\***.zip can be also used here.
+
+* **Select deployment method:** Select the option to choose from auto, zipDeploy and runFromPackage. Default value is Auto-detect where the task tries to select the appropriate deployment technology given the input package, app service type and agent OS.
+
+
+* **Runtime Stack:**
+Web App on Linux offers two different options to publish your application, one is Custom image deployment (Web App for Containers) and the other is App deployment with a built-in platform image (Web App on Linux). You will see this parameter only when you selected 'Linux Web App' in the App type selection option in the task.
+
+For Web **Web App for Containers** you need to provide the following details:
+* *Registry or Namespace:*
+A globally unique top-level domain name for your specific registry or namespace. A fully qualified image name will be of the format: '/:'. For example, 'myregistry.azurecr.io/nginx:latest'.
+
+* *Image:*
+Image Name of the repository where the container images are stored. A fully qualified image name will be of the format: '/:'. For example, 'myregistry.azurecr.io/nginx:latest'.
+
+* *Tag:*
+Tags are optional, it is the mechanism that registries use to give Docker images a version. A fully qualified image name will be of the format: '/:'. For example, 'myregistry.azurecr.io/nginx:latest'.
+
+* *Startup command:*
+Start up command for the container.
+
+For Web **Web App on Linux** you need to provide the following details:
+* *Runtime stack:* Select the framework and version your web app will run on.
+
+* *Startup command:*
+Start up command for the app. For example if you are using PM2 process manager for Nodejs then you can specify the PM2 file here.
+
+* *Application and Configuration Settings*
+
+**App settings**: [App settings](https://docs.microsoft.com/en-us/azure/app-service/web-sites-configure#app-settings) contains name/value pairs that your web app will load on start up. Edit web app application settings by following the syntax '-key value'. Value containing spaces should be enclosed in double quotes.
+>Example : -Port 5000 -RequestTimeout 5000
+>-WEBSITE_TIME_ZONE "Eastern Standard Time"
+
+**Configuration settings**:
+Edit web app [configuration settings](https://docs.microsoft.com/en-us/azure/app-service/web-sites-configure) following the syntax -key value. Value containing spaces should be enclosed in double quotes.
+>Example : -phpVersion 5.6 -linuxFxVersion: node|6.11
+
+### Output Variables
+
+* **Web App Hosted URL:** Provide a name, like FabrikamWebAppURL for the variable for the Azure App Service Hosted URL. The variable can be used as $(variableName), like $(FabrikamWebAppURL) to refer to the Hosted URL of the Azure App Service in subsequent tasks like in the [Run Functional Tests task](https://github.com/Microsoft/vsts-tasks/tree/master/Tasks/RunDistributedTests) or the [Visual Studio Test task](https://github.com/Microsoft/vsts-tasks/tree/master/Tasks/VsTest).
+
+
+### FAQ
+* To ignore SSL error set a Variable of name VSTS_ARM_REST_IGNORE_SSL_ERRORS with value : true in the release definition.
+* The task works with the [Azure Resource Manager APIs](https://msdn.microsoft.com/en-us/library/azure/dn790568.aspx) only.
+* For avoiding deployment failure with error code ERROR_FILE_IN_USE, in case of .NET apps targeting Web App on Windows, ensure that 'Rename locked files' and 'Take App Offline' are enabled. For zero downtime deployment use slot swap.
+* When deploying to an App Service with App Insights configured, if you have enabled “Remove additional files at destination” then you also need to enable “Exclude files from the App_Data folder” in order to keep App insights extension in safe state. This is required because App Insights continuous web job gets installed into the App_Data folder.
diff --git a/_generated/AzureWebAppV1/Strings/resources.resjson/de-DE/resources.resjson b/_generated/AzureWebAppV1/Strings/resources.resjson/de-DE/resources.resjson
new file mode 100644
index 000000000000..d9344f2a1a7a
--- /dev/null
+++ b/_generated/AzureWebAppV1/Strings/resources.resjson/de-DE/resources.resjson
@@ -0,0 +1,184 @@
+{
+ "loc.friendlyName": "Azure Web App",
+ "loc.helpMarkDown": "[Weitere Informationen zu dieser Aufgabe](https://aka.ms/azurewebappdeployreadme)",
+ "loc.description": "Hiermit wird eine Azure-Web-App für Linux oder Windows bereitgestellt.",
+ "loc.instanceNameFormat": "Azure-Web-App-Bereitstellung: $(appName)",
+ "loc.group.displayName.AdditionalDeploymentOptions": "Zusätzliche Bereitstellungsoptionen",
+ "loc.group.displayName.ApplicationAndConfigurationSettings": "Anwendungs- und Konfigurationseinstellungen",
+ "loc.input.label.azureSubscription": "Azure-Abonnement",
+ "loc.input.help.azureSubscription": "Wählen Sie das Azure Resource Manager-Abonnement für die Bereitstellung aus.",
+ "loc.input.label.appType": "App-Typ",
+ "loc.input.label.appName": "App-Name",
+ "loc.input.help.appName": "Geben Sie den Namen eines vorhandenen Azure App Service ein, oder wählen Sie ihn aus. Es werden nur App-Dienste für den ausgewählten App-Typ angezeigt.",
+ "loc.input.label.deployToSlotOrASE": "In Slot oder App Service-Umgebung bereitstellen",
+ "loc.input.help.deployToSlotOrASE": "Wählen Sie die Option für die Bereitstellung in einem vorhandenen Bereitstellungsslot oder in der Azure App Service-Umgebung. Für beide Ziele benötigt die Aufgabe den Ressourcengruppennamen. Falls als Bereitstellungsziel ein Slot verwendet wird, erfolgt die Bereitstellung standardmäßig im Produktionsslot. Auch jeder andere vorhandene Slotname kann angegeben werden. Falls als Bereitstellungsziel eine Azure App Service-Umgebung verwendet wird, behalten Sie den Slotnamen \"production\" bei, und geben Sie nur den Namen der Ressourcengruppe an.",
+ "loc.input.label.resourceGroupName": "Ressourcengruppe",
+ "loc.input.help.resourceGroupName": "Der Ressourcengruppenname ist erforderlich, wenn als Bereitstellungsziel ein Bereitstellungsslot oder eine App Service-Umgebung verwendet wird. Geben Sie die Azure-Ressourcengruppe mit der oben angegebenen Azure App Service-Instanz ein, oder wählen Sie sie aus.",
+ "loc.input.label.slotName": "Slot",
+ "loc.input.help.slotName": "Geben Sie einen anderen vorhandenen Slot als den Produktionsslot ein, oder wählen Sie ihn aus.",
+ "loc.input.label.package": "Paket oder Ordner",
+ "loc.input.help.package": "Dateipfad zum Paket oder zu einem Ordner mit den durch MSBuild generierten App Service-Inhalten oder zu einer komprimierten ZIP-oder WAR-Datei. Variablen ([Build](https://docs.microsoft.com/vsts/pipelines/build/variables) | [Release](https://docs.microsoft.com/vsts/pipelines/release/variables#default-variables)), Platzhalter werden unterstützt. Beispiel: \"$(System.DefaultWorkingDirectory)/\\*\\*/\\*.zip\" oder \"$(System.DefaultWorkingDirectory)/\\*\\*/\\*.war\".",
+ "loc.input.label.customDeployFolder": "Benutzerdefinierter Bereitstellungsordner",
+ "loc.input.help.customDeployFolder": "Geben Sie den Namen des benutzerdefinierten Ordners an, in dem Sie die Bereitstellung durchführen möchten. Wenn das Feld leer ist, wird das Paket in .azurewebsites.net/ bereitgestellt. Bei Eingabe von ROOT wird das Paket in .azurewebsited.net , andernfalls erfolgt die Bereitstellung in .azurewebsited.net/.",
+ "loc.input.label.runtimeStack": "Runtimestapel",
+ "loc.input.label.startUpCommand": "Startbefehl ",
+ "loc.input.help.startUpCommand": "Geben Sie den Startbefehl ein. Beispiel: dotnet exec Dateiname.dll dotnet Dateiname.dll",
+ "loc.input.label.customWebConfig": "Parameter der Datei \"web.config\" für Python-, Node.js-, Go- und Java-Apps generieren",
+ "loc.input.help.customWebConfig": "Ein Standarddatei \"web.config\" wird generiert und in Azure App Service bereitgestellt, wenn diese Datei nicht in der Anwendung vorhanden ist. Die Werte in \"web.config\" können bearbeitet werden und variieren je nach Anwendungsframework. Zum Beispiel enthält \"web.config\" für node.js-Anwendungen Werte für eine Startdatei und ein iis_node-Modul. Dieses Bearbeitungsfeature gilt nur für die generierte Datei \"web.config\". [Weitere Informationen](https://go.microsoft.com/fwlink/?linkid=843469).",
+ "loc.input.label.appSettings": "App-Einstellungen",
+ "loc.input.help.appSettings": "Bearbeiten Sie Web-App-Anwendungseinstellungen entsprechend der Syntax \"-Schlüssel Wert\". Ein Wert mit Leerzeichen muss in doppelte Anführungszeichen eingeschlossen werden. Beispiel: -Port 5000 -RequestTimeout 5000 -WEBSITE_TIME_ZONE \"Eastern Standard Time\"",
+ "loc.input.label.configurationStrings": "Konfigurationseinstellungen",
+ "loc.input.help.configurationStrings": "Bearbeiten Sie Web-App-Konfigurationseinstellungen entsprechend der Syntax \"-Schlüssel Wert\". Ein Wert mit Leerzeichen muss in doppelte Anführungszeichen eingeschlossen werden. Beispiel: -phpVersion 5.6 -linuxFxVersion: node|6.11",
+ "loc.input.label.deploymentMethod": "Bereitstellungsmethode",
+ "loc.input.help.deploymentMethod": "Wählen Sie die Bereitstellungsmethode für die App aus.",
+ "loc.messages.Invalidwebapppackageorfolderpathprovided": "Ungültiges App Service-Paket oder ungültiger App Service-Ordnerpfad angegeben: %s",
+ "loc.messages.SetParamFilenotfound0": "Datei zum Festlegen der Parameter nicht gefunden: %s",
+ "loc.messages.XDTTransformationsappliedsuccessfully": "Die XML-Transformationen wurden erfolgreich angewendet.",
+ "loc.messages.GotconnectiondetailsforazureRMWebApp0": "Die Dienstverbindungsdetails für Azure App Service wurden abgerufen: \"%s\"",
+ "loc.messages.ErrorNoSuchDeployingMethodExists": "Fehler: Keine solche Bereitstellungsmethode vorhanden.",
+ "loc.messages.UnabletoretrieveconnectiondetailsforazureRMWebApp": "Die Dienstverbindungsdetails für Azure App Service können nicht abgerufen werden: %s. Statuscode: %s (%s)",
+ "loc.messages.UnabletoretrieveResourceID": "Die Dienstverbindungsdetails für die Azure-Ressource \"%s\" konnten nicht abgerufen werden. Statuscode: %s",
+ "loc.messages.Successfullyupdateddeploymenthistory": "Der Bereitstellungsverlauf unter \"%s\" wurde erfolgreich aktualisiert.",
+ "loc.messages.Failedtoupdatedeploymenthistory": "Fehler beim Aktualisieren des Bereitstellungsverlaufs. Fehler: %s",
+ "loc.messages.WARNINGCannotupdatedeploymentstatusSCMendpointisnotenabledforthiswebsite": "WARNUNG: Der Bereitstellungsstatus kann nicht aktualisiert werden: Der SCM-Endpunkt ist für diese Website nicht aktiviert.",
+ "loc.messages.Unabletoretrievewebconfigdetails": "Die App Service-Konfigurationsdetails können nicht abgerufen werden. Statuscode: \"%s\"",
+ "loc.messages.Unabletoretrievewebappsettings": "Die App Service-Anwendungseinstellungen können nicht abgerufen werden. [Statuscode: %s, Fehlermeldung: %s]",
+ "loc.messages.Unabletoupdatewebappsettings": "Die App Service-Anwendungseinstellungen können nicht aktualisiert werden. Statuscode: \"%s\"",
+ "loc.messages.CannotupdatedeploymentstatusuniquedeploymentIdCannotBeRetrieved": "Der Bereitstellungsstatus kann nicht aktualisiert werden: Die eindeutige Bereitstellungs-ID kann nicht abgerufen werden.",
+ "loc.messages.PackageDeploymentSuccess": "Web-Paket für den App Service erfolgreich bereitgestellt.",
+ "loc.messages.PackageDeploymentFailed": "Fehler beim Bereitstellen des Web-Pakets für den App Service.",
+ "loc.messages.Runningcommand": "Befehl wird ausgeführt: %s",
+ "loc.messages.Deployingwebapplicationatvirtualpathandphysicalpath": "Webpaket \"%s\" wird im virtuellen Pfad (physischen Pfad) bereitgestellt: %s (%s)",
+ "loc.messages.Successfullydeployedpackageusingkuduserviceat": "Das Paket \"%s\" wurde unter Verwendung des Kudu-Diensts erfolgreich unter \"%s\" bereitgestellt.",
+ "loc.messages.Failedtodeploywebapppackageusingkuduservice": "Fehler beim Bereitstellen des App Service-Pakets mithilfe des Kudu-Diensts: %s",
+ "loc.messages.Unabletodeploywebappresponsecode": "Der App Service kann nicht bereitgestellt werden. Fehlercode: %s",
+ "loc.messages.MSDeploygeneratedpackageareonlysupportedforWindowsplatform": "Mit MSDeploy generierte Pakete werden nur für Windows-Plattformen unterstützt.",
+ "loc.messages.UnsupportedinstalledversionfoundforMSDeployversionshouldbeatleast3orabove": "Nicht unterstützte installierte Version %s für MSDeploy gefunden. Version 3 oder höher muss installiert sein.",
+ "loc.messages.UnabletofindthelocationofMSDeployfromregistryonmachineError": "Der Speicherort von MS Deploy wurde nicht in der Registrierung auf dem Computer gefunden (Fehler: %s).",
+ "loc.messages.Nopackagefoundwithspecifiedpattern": "Es wurde kein Paket mit dem angegebenen Muster gefunden: %s überprüfen, ob das in der Aufgabe erwähnte Paket als Artefakt im Build oder in einer vorherigen Stage veröffentlicht und im aktuellen Auftrag heruntergeladen wurde.",
+ "loc.messages.MorethanonepackagematchedwithspecifiedpatternPleaserestrainthesearchpattern": "Mindestens zwei Pakete stimmten mit dem angegebenen Suchmuster überein: %s. Schränken Sie das Suchmuster ein.",
+ "loc.messages.Trytodeploywebappagainwithappofflineoptionselected": "Versuchen Sie, den App Service mit ausgewählter Option \"Anwendung offline schalten\" erneut bereitzustellen.",
+ "loc.messages.Trytodeploywebappagainwithrenamefileoptionselected": "Versuchen Sie, den App Service mit ausgewählter Option \"Gesperrte Dateien umbenennen\" erneut bereitzustellen.",
+ "loc.messages.NOJSONfilematchedwithspecificpattern": "Keine JSON-Datei stimmte mit dem angegebenen Muster überein: %s",
+ "loc.messages.Configfiledoesntexists": "Die Konfigurationsdatei \"%s\" ist nicht vorhanden.",
+ "loc.messages.Failedtowritetoconfigfilewitherror": "Fehler beim Schreiben in die Konfigurationsdatei \"%s\". Fehler: %s ",
+ "loc.messages.AppOfflineModeenabled": "Der App-Offlinemodus wurde aktiviert.",
+ "loc.messages.Failedtoenableappofflinemode": "Fehler beim Aktivieren des App-Offlinemodus. Statuscode: %s (%s)",
+ "loc.messages.AppOflineModedisabled": "Der App-Offlinemodus wurde deaktiviert.",
+ "loc.messages.FailedtodisableAppOfflineMode": "Fehler beim Deaktivieren des App-Offlinemodus. Statuscode: %s (%s)",
+ "loc.messages.CannotPerformXdtTransformationOnNonWindowsPlatform": "XML-Transformationen können auf einer Nicht-Windows-Plattform nicht ausgeführt werden.",
+ "loc.messages.XdtTransformationErrorWhileTransforming": "XML-Transformationsfehler beim Transformieren von \"%s\" unter Verwendung von \"%s\".",
+ "loc.messages.PublishusingwebdeployoptionsaresupportedonlywhenusingWindowsagent": "Eine Veröffentlichung unter Verwendung von webdeploy-Optionen wird nur unterstützt, wenn der Windows-Agent verwendet wird. ",
+ "loc.messages.Publishusingzipdeploynotsupportedformsbuildpackage": "Die Veröffentlichung über die ZIP Deploy-Option wird für den msBuild-Pakettyp nicht unterstützt.",
+ "loc.messages.Publishusingzipdeploynotsupportedforvirtualapplication": "Die Veröffentlichung über die ZIP Deploy-Option wird für virtuelle Anwendungen nicht unterstützt.",
+ "loc.messages.Publishusingzipdeploydoesnotsupportwarfile": "Bei der Veröffentlichung über die Optionen \"ZIP Deploy\" oder \"RunFromZip\" wird die WAR-Dateibereitstellung nicht unterstützt.",
+ "loc.messages.Publishusingrunfromzipwithpostdeploymentscript": "Bei der Veröffentlichung über RunFromZip werden Skripts nach der Bereitstellung möglicherweise nicht unterstützt, wenn diese Änderungen an wwwroot vornehmen, weil der Ordner schreibgeschützt ist.",
+ "loc.messages.ResourceDoesntExist": "Die Ressource \"%s\" ist nicht vorhanden. Die Ressource muss vor der Bereitstellung vorhanden sein.",
+ "loc.messages.EncodeNotSupported": "Erkannte Codierung der Datei \"%s\": %s. Eine Variablenersetzung wird für die Dateicodierung \"%s\" nicht unterstützt. Unterstützte Codierungen sind UTF-8 und UTF-16 LE.",
+ "loc.messages.UnknownFileEncodeError": "Die Codierung der Datei \"%s\" wurde nicht erkannt (typeCode: %s). Unterstützte Codierungen sind UTF-8 und UTF-16 LE.",
+ "loc.messages.ShortFileBufferError": "Der Dateipuffer ist zu klein, um den Codierungstyp zu erkennen: %s",
+ "loc.messages.FailedToUpdateAzureRMWebAppConfigDetails": "Fehler beim Aktualisieren der App Service-Konfigurationsdetails. Fehler: %s",
+ "loc.messages.SuccessfullyUpdatedAzureRMWebAppConfigDetails": "Die App Service-Konfigurationsdetails wurden erfolgreich aktualisiert.",
+ "loc.messages.RequestedURLforkuduphysicalpath": "Angeforderte URL für physischen Kudu-Pfad: %s",
+ "loc.messages.Physicalpathalreadyexists": "Der physische Pfad \"%s\" ist bereits vorhanden.",
+ "loc.messages.KuduPhysicalpathCreatedSuccessfully": "Der physische Kudu-Pfad wurde erfolgreich erstellt: %s",
+ "loc.messages.FailedtocreateKuduPhysicalPath": "Fehler beim Erstellen des physischen Kudu-Pfads. Fehler: %s",
+ "loc.messages.FailedtocheckphysicalPath": "Fehler beim Überprüfen des physischen Kudu-Pfads. Fehlercode: %s",
+ "loc.messages.VirtualApplicationDoesNotExist": "Die virtuelle Anwendung ist nicht vorhanden: %s",
+ "loc.messages.JSONParseError": "Die JSON-Datei konnte nicht analysiert werden: %s. Fehler: %s",
+ "loc.messages.JSONvariablesubstitutionappliedsuccessfully": "Die JSON-Variablenersetzung wurde erfolgreich angewendet.",
+ "loc.messages.XMLvariablesubstitutionappliedsuccessfully": "XML-Variablenersetzung erfolgreich angewendet.",
+ "loc.messages.failedtoUploadFileToKudu": "Datei \"%s\" kann nicht in Kudu (%s) hochgeladen werden. Statuscode: %s",
+ "loc.messages.failedtoUploadFileToKuduError": "Hochladen der Datei: %s auf Kudu (%s) nicht möglich. Fehler: %s",
+ "loc.messages.ExecuteScriptOnKudu": "Das angegebene Skript wird im Kudu-Dienst ausgeführt.",
+ "loc.messages.FailedToRunScriptOnKuduError": "Das Skript kann nicht im Kudu-Dienst ausgeführt werden. Fehler: %s",
+ "loc.messages.FailedToRunScriptOnKudu": "Ausführen des Skripts in Kudu nicht möglich: %s. Statuscode: %s",
+ "loc.messages.ScriptExecutionOnKuduSuccess": "Skript in Kudu erfolgreich ausgeführt.",
+ "loc.messages.ScriptExecutionOnKuduFailed": "Das ausgeführte Skript hat \"%s\" als Rückgabecode zurückgegeben. Fehler: %s",
+ "loc.messages.FailedtoDeleteFileFromKudu": "Die Datei \"%s\" kann nicht aus Kudu (%s) gelöscht werden. Statuscode: %s",
+ "loc.messages.FailedtoDeleteFileFromKuduError": "Löschen der Datei: %s von Kudu (%s) nicht möglich. Fehler: %s",
+ "loc.messages.ScriptFileNotFound": "Skriptdatei \"%s\" nicht gefunden.",
+ "loc.messages.InvalidScriptFile": "Ungültige Skriptdatei \"%s\" angegeben. Gültige Erweiterungen sind \".bat\" und \".cmd\" für Windows und \".sh\" für Linux.",
+ "loc.messages.RetryForTimeoutIssue": "Fehler beim Ausführen des Skripts mit Zeitüberschreitung. Es wird noch mal versucht.",
+ "loc.messages.stdoutFromScript": "Standardausgabe von Skript:",
+ "loc.messages.stderrFromScript": "Standardfehler von Skript:",
+ "loc.messages.WebConfigAlreadyExists": "web.config-Datei ist bereits vorhanden. Sie wird nicht erstellt.",
+ "loc.messages.SuccessfullyGeneratedWebConfig": "web.config-Datei erfolgreich erstellt.",
+ "loc.messages.FailedToGenerateWebConfig": "Fehler beim Erstellen von \"web.config\". %s",
+ "loc.messages.FailedToGetKuduFileContent": "Dateiinhalt konnte nicht abgerufen werden: %s. Statuscode: %s (%s)",
+ "loc.messages.FailedToGetKuduFileContentError": "Dateiinhalt konnte nicht abgerufen werden: %s. Fehler: %s",
+ "loc.messages.ScriptStatusTimeout": "Skriptstatus konnte aufgrund einer Zeitüberschreitung nicht abgerufen werden.",
+ "loc.messages.PollingForFileTimeOut": "Der Skriptstatus konnte aufgrund einer Zeitüberschreitung nicht abgerufen werden. Sie können das Zeitlimit erhöhen, indem Sie die erforderliche Minutenzahl für die Variable \"appservicedeploy.retrytimeout\" festlegen.",
+ "loc.messages.InvalidPollOption": "Ungültige Abrufoption angegeben: %s.",
+ "loc.messages.MissingAppTypeWebConfigParameters": "Das Attribut \"-appType\" fehlt in den Parametern \"Web.config\". Gültige Werte für \"-appType\" sind: \"python_Bottle\", \"python_Django\", \"python_Flask\", \"node\" und \"Go\". Beispiel: \"-appType python_Bottle\" (ohne Anführungszeichen) im Fall von Python Bottle-Framework.",
+ "loc.messages.AutoDetectDjangoSettingsFailed": "Der Pfad für die Datei \"settings.py\" von DJANGO_SETTINGS_MODULE 'settings.py' wurde nicht gefunden. Überprüfen Sie, ob die Datei \"settings.py\" existiert, oder geben Sie den korrekten Pfad in der Parametereingabe \"Web.config\" im folgenden Format an: \"-DJANGO_SETTINGS_MODULE .settings\".",
+ "loc.messages.FailedToApplyTransformation": "Die Transformation für das angegebene Paket kann nicht angewendet werden. Führen Sie die folgenden Schritte aus.",
+ "loc.messages.FailedToApplyTransformationReason1": "1. Prüfen Sie, ob die Transformation für das beim Build generierte MSBuild-Paket bereits angewendet wurde. Ist dies der Fall, entfernen Sie das Tag aus allen Konfigurationen in der CSPROJ-Datei, und führen Sie den Build erneut aus. ",
+ "loc.messages.FailedToApplyTransformationReason2": "2. Stellen Sie sicher, dass sich die Konfigurationsdatei und die Transformationsdateien im selben Ordner im Paket befinden.",
+ "loc.messages.AutoParameterizationMessage": "ConnectionString-Attribute in Web.config ist standardmäßig parametrisiert. Beachten Sie, dass die Transformation keine Auswirkungen auf connectionString-Attribute hat, da der Wert bei der Bereitstellung durch Dateien vom Typ \"Parameters.xml\" oder \"SetParameters.xml\" überschrieben wird. Sie können die automatische Parametrisierung deaktivieren, indem Sie beim Erstellung des MSBuild-Pakets die Einstellung \"/p:AutoParameterizationWebConfigConnectionStrings=False\" festlegen.",
+ "loc.messages.UnsupportedAppType": "App-Typ \"%s\" wird beim Erstellen von \"Web.config\" nicht unterstützt. Gültige Werte für \"-appType\" sind: \"python_Bottle\", \"python_Django\", \"python_Flask\" und \"node\".",
+ "loc.messages.UnableToFetchAuthorityURL": "Abrufen der Autoritäts-URL nicht möglich.",
+ "loc.messages.UnableToFetchActiveDirectory": "Abrufen der Active Directory-Ressourcen-ID nicht möglich.",
+ "loc.messages.SuccessfullyUpdatedRuntimeStackAndStartupCommand": "Runtimestapel und Startbefehl erfolgreich aktualisiert.",
+ "loc.messages.FailedToUpdateRuntimeStackAndStartupCommand": "Fehler beim Aktualisieren des Runtimestapels und des Startbefehls. Fehler: %s.",
+ "loc.messages.SuccessfullyUpdatedWebAppSettings": "App-Einstellungen erfolgreich aktualisiert.",
+ "loc.messages.FailedToUpdateAppSettingsInConfigDetails": "Fehler beim Aktualisieren der App-Einstellungen. Fehler: %s.",
+ "loc.messages.UnableToGetAzureRMWebAppMetadata": "Fehler beim Abrufen von AzureRM-WebApp-Metadaten. ErrorCode: %s",
+ "loc.messages.UnableToUpdateAzureRMWebAppMetadata": "AzureRM-WebApp-Metadaten können nicht aktualisiert werden. Fehlercode: %s",
+ "loc.messages.Unabletoretrieveazureregistrycredentials": "Die Anmeldeinformationen für Azure Container Registry konnten nicht abgerufen werden. [Statuscode: %s]",
+ "loc.messages.UnableToReadResponseBody": "Antworttext konnte nicht gelesen werden. Fehler: %s",
+ "loc.messages.UnableToUpdateWebAppConfigDetails": "WebApp-Konfigurationsdetails konnten nicht aktualisiert werden. StatusCode: \"%s\"",
+ "loc.messages.AddingReleaseAnnotation": "Releaseanmerkung für Application Insights-Ressource \"%s\" wird hinzugefügt.",
+ "loc.messages.SuccessfullyAddedReleaseAnnotation": "Releaseanmerkung erfolgreich zu Application Insight hinzugefügt: %s",
+ "loc.messages.FailedAddingReleaseAnnotation": "Fehler beim Hinzufügen einer Releaseanmerkung. %s",
+ "loc.messages.RenameLockedFilesEnabled": "Umbenennung gesperrter Dateien für App Service aktiviert.",
+ "loc.messages.FailedToEnableRenameLockedFiles": "Fehler beim Aktivieren der Umbenennung gesperrter Dateien. Fehler: %s",
+ "loc.messages.WebJobsInProgressIssue": "Einige WebJobs-Instanzen werden gerade ausgeführt und verhindern, dass die Bereitstellung Dateien entfernt. Sie können die Option \"Zusätzliche Dateien am Ziel entfernen\" deaktivieren oder fortlaufende Aufträge vor der Bereitstellung beenden.",
+ "loc.messages.FailedToFetchKuduAppSettings": "Fehler beim Abrufen von Kudu-App-Einstellungen. Fehler: %s",
+ "loc.messages.FailedToCreatePath": "Fehler beim Erstellen des Pfads \"%s\" aus Kudu. Fehler: %s",
+ "loc.messages.FailedToDeleteFile": "Fehler beim Löschen der Datei \"%s/%s\" aus Kudu. Fehler: %s",
+ "loc.messages.FailedToDeleteFolder": "Fehler beim Löschen des Ordners \"%s\" aus Kudu. Fehler: %s",
+ "loc.messages.FailedToUploadFile": "Fehler beim Hochladen der Datei \"%s/%s\" aus Kudu. Fehler: %s",
+ "loc.messages.FailedToGetFileContent": "Fehler beim Abrufen des Dateiinhalts \"%s/%s\" aus Kudu. Fehler: %s",
+ "loc.messages.FailedToListPath": "Fehler beim Auflisten von Pfad \"%s\" aus Kudu. Fehler: %s",
+ "loc.messages.RetryToDeploy": "Es wird erneut versucht, das Paket bereitzustellen.",
+ "loc.messages.FailedToGetAppServiceDetails": "Fehler beim Abrufen der App Service-Details \"%s\". Fehler: %s",
+ "loc.messages.FailedToGetAppServicePublishingProfile": "Fehler beim Abrufen des Veröffentlichungsprofils für App Service \"%s\". Fehler: %s",
+ "loc.messages.FailedToUpdateAppServiceMetadata": "Fehler beim Aktualisieren der Metadaten für App Service \"%s\". Fehler: %s",
+ "loc.messages.FailedToGetAppServiceMetadata": "Fehler beim Abrufen der Metadaten für App Service \"%s\". Fehler: %s",
+ "loc.messages.FailedToPatchAppServiceConfiguration": "Fehler beim Patchen der Konfiguration für App Service \"%s\". Fehler: %s",
+ "loc.messages.FailedToUpdateAppServiceConfiguration": "Fehler beim Aktualisieren der App-Dienstkonfiguration \"%s\". Fehler: %s",
+ "loc.messages.FailedToGetAppServiceConfiguration": "Fehler beim Abrufen der Konfiguration für App Service \"%s\". Fehler: %s",
+ "loc.messages.FailedToGetAppServicePublishingCredentials": "Fehler beim Abrufen der Anmeldeinformationen für die Veröffentlichung für App Service \"%s\". Fehler: %s",
+ "loc.messages.FailedToGetAppServiceApplicationSettings": "Fehler beim Abrufen der Anwendungseinstellungen für App Service \"%s\". Fehler: %s",
+ "loc.messages.FailedToUpdateAppServiceApplicationSettings": "Fehler beim Aktualisieren der Anwendungseinstellungen für App Service \"%s\". Fehler: %s",
+ "loc.messages.UpdatingAppServiceConfigurationSettings": "Es wird versucht, die App Service-Konfigurationseinstellungen zu aktualisieren. Daten: %s",
+ "loc.messages.UpdatedAppServiceConfigurationSettings": "Die App Service-Konfigurationseinstellungen wurden aktualisiert.",
+ "loc.messages.UpdatedAppServiceApplicationSettings": "Die App Service-Anwendungseinstellungen und die Kudu-Anwendungseinstellungen wurden aktualisiert.",
+ "loc.messages.MultipleResourceGroupFoundForAppService": "Mehrere Ressourcengruppen für App Service \"%s\" gefunden.",
+ "loc.messages.PackageDeploymentUsingZipDeployFailed": "Fehler bei der Paketbereitstellung über ZIP Deploy. Weitere Informationen finden Sie in den Protokollen.",
+ "loc.messages.PackageDeploymentInitiated": "Die Paketbereitstellung über ZIP Deploy wurde eingeleitet.",
+ "loc.messages.WarPackageDeploymentInitiated": "Die Paketbereitstellung über WAR Deploy wurde eingeleitet.",
+ "loc.messages.FailedToGetDeploymentLogs": "Fehler beim Abrufen von Bereitstellungsprotokollen. Fehler: %s",
+ "loc.messages.GoExeNameNotPresent": "Der Name der Go-EXE-Datei ist nicht vorhanden.",
+ "loc.messages.WarDeploymentRetry": "Die Bereitstellung der WAR-Datei wird wiederholt, weil sie zuvor nicht erfolgreich erweitert wurde.",
+ "loc.messages.Updatemachinetoenablesecuretlsprotocol": "Stellen Sie sicher, dass der Computer das TLS 1.2-Protokoll oder eine höhere Version verwendet. Weitere Informationen zum Aktivieren von TLS auf Ihrem Computer finden Sie unter https://aka.ms/enableTlsv2.",
+ "loc.messages.CouldNotFetchAccessTokenforAzureStatusCode": "Ein Zugriffstoken für Azure konnte nicht abgerufen werden. Statuscode: %s, Statusmeldung: %s",
+ "loc.messages.CouldNotFetchAccessTokenforMSIDueToMSINotConfiguredProperlyStatusCode": "Ein Zugriffstoken für den verwalteten Dienstprinzipal konnte nicht abgerufen werden. Konfigurieren Sie die verwaltete Dienstidentität (MSI) für den virtuellen Computer (https://aka.ms/azure-msi-docs). Statuscode: %s, Statusmeldung: %s",
+ "loc.messages.CouldNotFetchAccessTokenforMSIStatusCode": "Ein Zugriffstoken für den verwalteten Dienstprinzipal konnte nicht abgerufen werden. Statuscode: %s, Statusmeldung: %s",
+ "loc.messages.XmlParsingFailed": "Die publishProfileXML-Datei konnte nicht analysiert werden. Fehler: %s",
+ "loc.messages.PropertyDoesntExistPublishProfile": "Die [%s]-Eigenschaft ist im Veröffentlichungsprofil nicht vorhanden.",
+ "loc.messages.InvalidConnectionType": "Ungültiger Dienstverbindungstyp",
+ "loc.messages.InvalidImageSourceType": "Ungültiger Imagequelltyp",
+ "loc.messages.InvalidPublishProfile": "Die Veröffentlichungsprofildatei ist ungültig.",
+ "loc.messages.ASE_SSLIssueRecommendation": "Um ein Zertifikat in App Service zu verwenden, muss das Zertifikat von einer vertrauenswürdigen Zertifizierungsstelle signiert sein. Werden von Ihrer Web-App Zertifikatüberprüfungsfehler zurückgegeben, verwenden Sie wahrscheinlich ein selbstsigniertes Zertifikat. Um den Fehler zu beheben, müssen Sie in der Build- oder Releasepipeline eine Variable mit dem Namen VSTS_ARM_REST_IGNORE_SSL_ERRORS auf den Wert TRUE festlegen.",
+ "loc.messages.ZipDeployLogsURL": "ZIP Deploy-Protokolle können unter %s angezeigt werden.",
+ "loc.messages.DeployLogsURL": "Bereitstellungsprotokolle können unter %s angezeigt werden.",
+ "loc.messages.AppServiceApplicationURL": "URL der App Service-Anwendung: %s",
+ "loc.messages.ASE_WebDeploySSLIssueRecommendation": "Um ein Zertifikat in App Service zu verwenden, muss das Zertifikat von einer vertrauenswürdigen Zertifizierungsstelle signiert sein. Werden von Ihrer Web-App Zertifikatüberprüfungsfehler zurückgegeben, verwenden Sie wahrscheinlich ein selbstsigniertes Zertifikat. Um den Fehler zu beheben, müssen Sie \"-allowUntrusted\" in zusätzlichen Argumenten der Web Deploy-Option übergeben.",
+ "loc.messages.FailedToGetResourceID": "Fehler beim Abrufen der Ressourcen-ID für Ressourcentyp \"%s\" und Ressourcenname \"%s\". Fehler: %s",
+ "loc.messages.JarPathNotPresent": "Der Java-JAR-Pfad ist nicht vorhanden.",
+ "loc.messages.FailedToUpdateApplicationInsightsResource": "Fehler beim Aktualisieren der Application Insights-Ressource \"%s\". Fehler: %s",
+ "loc.messages.InvalidDockerImageName": "Ungültiger Docker Hub-Imagename angegeben.",
+ "loc.messages.MsBuildPackageNotSupported": "Die Bereitstellung eines mit MSBuild generierten Pakets wird nicht unterstützt. Ändern Sie das Paketformat, oder verwenden Sie die Aufgabe für die Azure App Service-Bereitstellung."
+}
\ No newline at end of file
diff --git a/_generated/AzureWebAppV1/Strings/resources.resjson/en-US/resources.resjson b/_generated/AzureWebAppV1/Strings/resources.resjson/en-US/resources.resjson
new file mode 100644
index 000000000000..f40c0c007a5a
--- /dev/null
+++ b/_generated/AzureWebAppV1/Strings/resources.resjson/en-US/resources.resjson
@@ -0,0 +1,184 @@
+{
+ "loc.friendlyName": "Azure Web App",
+ "loc.helpMarkDown": "[Learn more about this task](https://aka.ms/azurewebappdeployreadme)",
+ "loc.description": "Deploy an Azure Web App for Linux or Windows",
+ "loc.instanceNameFormat": "Azure Web App Deploy: $(appName)",
+ "loc.group.displayName.AdditionalDeploymentOptions": "Additional Deployment Options",
+ "loc.group.displayName.ApplicationAndConfigurationSettings": "Application and Configuration Settings",
+ "loc.input.label.azureSubscription": "Azure subscription",
+ "loc.input.help.azureSubscription": "Select the Azure Resource Manager subscription for the deployment.",
+ "loc.input.label.appType": "App type",
+ "loc.input.label.appName": "App name",
+ "loc.input.help.appName": "Enter or Select the name of an existing Azure App Service. App services based on selected app type will only be listed.",
+ "loc.input.label.deployToSlotOrASE": "Deploy to Slot or App Service Environment",
+ "loc.input.help.deployToSlotOrASE": "Select the option to deploy to an existing deployment slot or Azure App Service Environment. For both the targets, the task needs Resource group name. In case the deployment target is a slot, by default the deployment is done to the production slot. Any other existing slot name can also be provided. In case the deployment target is an Azure App Service environment, leave the slot name as ‘production’ and just specify the Resource group name.",
+ "loc.input.label.resourceGroupName": "Resource group",
+ "loc.input.help.resourceGroupName": "The Resource group name is required when the deployment target is either a deployment slot or an App Service Environment. Enter or Select the Azure Resource group that contains the Azure App Service specified above.",
+ "loc.input.label.slotName": "Slot",
+ "loc.input.help.slotName": "Enter or Select an existing Slot other than the Production slot.",
+ "loc.input.label.package": "Package or folder",
+ "loc.input.help.package": "File path to the package or a folder containing app service contents generated by MSBuild or a compressed zip or war file. Variables ( [Build](https://docs.microsoft.com/vsts/pipelines/build/variables) | [Release](https://docs.microsoft.com/vsts/pipelines/release/variables#default-variables)), wildcards are supported. For example, $(System.DefaultWorkingDirectory)/\\*\\*/\\*.zip or $(System.DefaultWorkingDirectory)/\\*\\*/\\*.war.",
+ "loc.input.label.customDeployFolder": "Custom Deploy Folder",
+ "loc.input.help.customDeployFolder": "Specify custom folder name you want to deploy to. If the field is empty, package is deployed to .azurewebsites.net/ If ROOT is entered, package is deployed to .azurewebsited.net else it is deployed to .azurewebsited.net/",
+ "loc.input.label.runtimeStack": "Runtime stack",
+ "loc.input.label.startUpCommand": "Startup command ",
+ "loc.input.help.startUpCommand": "Enter the start up command. For ex. dotnet exec filename.dll dotnet filename.dll",
+ "loc.input.label.customWebConfig": "Generate web.config parameters for Python, Node.js, Go and Java apps",
+ "loc.input.help.customWebConfig": "A standard Web.config will be generated and deployed to Azure App Service if the application does not have one. The values in web.config can be edited and vary based on the application framework. For example for node.js application, web.config will have startup file and iis_node module values. This edit feature is only for the generated web.config. [Learn more](https://go.microsoft.com/fwlink/?linkid=843469).",
+ "loc.input.label.appSettings": "App settings",
+ "loc.input.help.appSettings": "Edit web app application settings following the syntax -key value . Value containing spaces should be enclosed in double quotes. Example : -Port 5000 -RequestTimeout 5000 -WEBSITE_TIME_ZONE \"Eastern Standard Time\"",
+ "loc.input.label.configurationStrings": "Configuration settings",
+ "loc.input.help.configurationStrings": "Edit web app configuration settings following the syntax -key value. Value containing spaces should be enclosed in double quotes. Example : -phpVersion 5.6 -linuxFxVersion: node|6.11",
+ "loc.input.label.deploymentMethod": "Deployment method",
+ "loc.input.help.deploymentMethod": "Choose the deployment method for the app.",
+ "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",
+ "loc.messages.GotconnectiondetailsforazureRMWebApp0": "Got service connection details for Azure App Service:'%s'",
+ "loc.messages.ErrorNoSuchDeployingMethodExists": "Error : No such deploying method exists",
+ "loc.messages.UnabletoretrieveconnectiondetailsforazureRMWebApp": "Unable to retrieve service connection details for Azure App Service : %s. Status Code: %s (%s)",
+ "loc.messages.UnabletoretrieveResourceID": "Unable to retrieve service connection details for Azure Resource:'%s'. Status Code: %s",
+ "loc.messages.Successfullyupdateddeploymenthistory": "Successfully updated deployment History at %s",
+ "loc.messages.Failedtoupdatedeploymenthistory": "Failed to update deployment history. Error: %s",
+ "loc.messages.WARNINGCannotupdatedeploymentstatusSCMendpointisnotenabledforthiswebsite": "WARNING : Cannot update deployment status : SCM endpoint is not enabled for this website",
+ "loc.messages.Unabletoretrievewebconfigdetails": "Unable to retrieve App Service configuration details. Status Code: '%s'",
+ "loc.messages.Unabletoretrievewebappsettings": "Unable to retrieve App Service application settings. [Status Code: '%s', Error Message: '%s']",
+ "loc.messages.Unabletoupdatewebappsettings": "Unable to update App service application settings. Status Code: '%s'",
+ "loc.messages.CannotupdatedeploymentstatusuniquedeploymentIdCannotBeRetrieved": "Cannot update deployment status : Unique Deployment ID cannot be retrieved",
+ "loc.messages.PackageDeploymentSuccess": "Successfully deployed web package to App Service.",
+ "loc.messages.PackageDeploymentFailed": "Failed to deploy web package to App Service.",
+ "loc.messages.Runningcommand": "Running command: %s",
+ "loc.messages.Deployingwebapplicationatvirtualpathandphysicalpath": "Deploying web package : %s at virtual path (physical path) : %s (%s)",
+ "loc.messages.Successfullydeployedpackageusingkuduserviceat": "Successfully deployed package %s using kudu service at %s",
+ "loc.messages.Failedtodeploywebapppackageusingkuduservice": "Failed to deploy App Service package using kudu service : %s",
+ "loc.messages.Unabletodeploywebappresponsecode": "Unable to deploy App Service due to error code : %s",
+ "loc.messages.MSDeploygeneratedpackageareonlysupportedforWindowsplatform": "MSDeploy generated packages are only supported for Windows platform.",
+ "loc.messages.UnsupportedinstalledversionfoundforMSDeployversionshouldbeatleast3orabove": "Unsupported installed version: %s found for MSDeploy. version should be at least 3 or above",
+ "loc.messages.UnabletofindthelocationofMSDeployfromregistryonmachineError": "Unable to find the location of MS Deploy from registry on machine (Error : %s)",
+ "loc.messages.Nopackagefoundwithspecifiedpattern": "No package found with specified pattern: %s Check if the package mentioned in the task is published as an artifact in the build or a previous stage and downloaded in the current job.",
+ "loc.messages.MorethanonepackagematchedwithspecifiedpatternPleaserestrainthesearchpattern": "More than one package matched with specified pattern: %s. Please restrain the search pattern.",
+ "loc.messages.Trytodeploywebappagainwithappofflineoptionselected": "Try to deploy app service again with Take application offline option selected.",
+ "loc.messages.Trytodeploywebappagainwithrenamefileoptionselected": "Try to deploy app service again with Rename locked files option selected.",
+ "loc.messages.NOJSONfilematchedwithspecificpattern": "NO JSON file matched with specific pattern: %s.",
+ "loc.messages.Configfiledoesntexists": "Configuration file %s doesn't exist.",
+ "loc.messages.Failedtowritetoconfigfilewitherror": "Failed to write to config file %s with error : %s",
+ "loc.messages.AppOfflineModeenabled": "App offline mode enabled.",
+ "loc.messages.Failedtoenableappofflinemode": "Failed to enable app offline mode. Status Code: %s (%s)",
+ "loc.messages.AppOflineModedisabled": "App offline mode disabled.",
+ "loc.messages.FailedtodisableAppOfflineMode": "Failed to disable App offline mode. Status Code: %s (%s)",
+ "loc.messages.CannotPerformXdtTransformationOnNonWindowsPlatform": "Cannot perform XML transformations on a non-Windows platform.",
+ "loc.messages.XdtTransformationErrorWhileTransforming": "XML transformation error while transforming %s using %s.",
+ "loc.messages.PublishusingwebdeployoptionsaresupportedonlywhenusingWindowsagent": "Publish using webdeploy options are supported only when using Windows agent",
+ "loc.messages.Publishusingzipdeploynotsupportedformsbuildpackage": "Publish using zip deploy option is not supported for msBuild package type.",
+ "loc.messages.Publishusingzipdeploynotsupportedforvirtualapplication": "Publish using zip deploy option is not supported for virtual application.",
+ "loc.messages.Publishusingzipdeploydoesnotsupportwarfile": "Publish using zip deploy or RunFromZip options do not support war file deployment.",
+ "loc.messages.Publishusingrunfromzipwithpostdeploymentscript": "Publish using RunFromZip might not support post deployment script if it makes changes to wwwroot, since the folder is ReadOnly.",
+ "loc.messages.ResourceDoesntExist": "Resource '%s' doesn't exist. Resource should exist before deployment.",
+ "loc.messages.EncodeNotSupported": "Detected file encoding of the file %s as %s. Variable substitution is not supported with file encoding %s. Supported encodings are UTF-8 and UTF-16 LE.",
+ "loc.messages.UnknownFileEncodeError": "Unable to detect encoding of the file %s (typeCode: %s). Supported encodings are UTF-8 and UTF-16 LE.",
+ "loc.messages.ShortFileBufferError": "File buffer is too short to detect encoding type : %s",
+ "loc.messages.FailedToUpdateAzureRMWebAppConfigDetails": "Failed to update App Service configuration details. Error: %s",
+ "loc.messages.SuccessfullyUpdatedAzureRMWebAppConfigDetails": "Successfully updated App Service configuration details",
+ "loc.messages.RequestedURLforkuduphysicalpath": "Requested URL for kudu physical path : %s",
+ "loc.messages.Physicalpathalreadyexists": "Physical path '%s' already exists",
+ "loc.messages.KuduPhysicalpathCreatedSuccessfully": "Kudu physical path created successfully : %s",
+ "loc.messages.FailedtocreateKuduPhysicalPath": "Failed to create kudu physical path. Error : %s",
+ "loc.messages.FailedtocheckphysicalPath": "Failed to check kudu physical path. Error Code: %s",
+ "loc.messages.VirtualApplicationDoesNotExist": "Virtual application doesn't exists : %s",
+ "loc.messages.JSONParseError": "Unable to parse JSON file: %s. Error: %s",
+ "loc.messages.JSONvariablesubstitutionappliedsuccessfully": "JSON variable substitution applied successfully.",
+ "loc.messages.XMLvariablesubstitutionappliedsuccessfully": "XML variable substitution applied successfully.",
+ "loc.messages.failedtoUploadFileToKudu": "Unable to upload file: %s to Kudu (%s). Status Code: %s",
+ "loc.messages.failedtoUploadFileToKuduError": "Unable to upload file: %s to Kudu (%s). Error: %s",
+ "loc.messages.ExecuteScriptOnKudu": "Executing given script on Kudu service.",
+ "loc.messages.FailedToRunScriptOnKuduError": "Unable to run the script on Kudu Service. Error: %s",
+ "loc.messages.FailedToRunScriptOnKudu": "Unable to run the script on Kudu: %s. Status Code: %s",
+ "loc.messages.ScriptExecutionOnKuduSuccess": "Successfully executed script on Kudu.",
+ "loc.messages.ScriptExecutionOnKuduFailed": "Executed script returned '%s' as return code. Error: %s",
+ "loc.messages.FailedtoDeleteFileFromKudu": "Unable to delete file: %s from Kudu (%s). Status Code: %s",
+ "loc.messages.FailedtoDeleteFileFromKuduError": "Unable to delete file: %s from Kudu (%s). Error: %s",
+ "loc.messages.ScriptFileNotFound": "Script file '%s' not found.",
+ "loc.messages.InvalidScriptFile": "Invalid script file '%s' provided. Valid extensions are .bat and .cmd for windows and .sh for linux",
+ "loc.messages.RetryForTimeoutIssue": "Script execution failed with timeout issue. Retrying once again.",
+ "loc.messages.stdoutFromScript": "Standard output from script: ",
+ "loc.messages.stderrFromScript": "Standard error from script: ",
+ "loc.messages.WebConfigAlreadyExists": "web.config file already exists. Not generating.",
+ "loc.messages.SuccessfullyGeneratedWebConfig": "Successfully generated web.config file",
+ "loc.messages.FailedToGenerateWebConfig": "Failed to generate web.config. %s",
+ "loc.messages.FailedToGetKuduFileContent": "Unable to get file content: %s . Status code: %s (%s)",
+ "loc.messages.FailedToGetKuduFileContentError": "Unable to get file content: %s. Error: %s",
+ "loc.messages.ScriptStatusTimeout": "Unable to fetch script status due to timeout.",
+ "loc.messages.PollingForFileTimeOut": "Unable to fetch script status due to timeout. You can increase the timeout limit by setting 'appservicedeploy.retrytimeout' variable to number of minutes required.",
+ "loc.messages.InvalidPollOption": "Invalid polling option provided: %s.",
+ "loc.messages.MissingAppTypeWebConfigParameters": "Attribute '-appType' is missing in the Web.config parameters. Valid values for '-appType' are: 'python_Bottle', 'python_Django', 'python_Flask', 'node' and 'Go'. For example, '-appType python_Bottle' (sans-quotes) in case of Python Bottle framework..",
+ "loc.messages.AutoDetectDjangoSettingsFailed": "Unable to detect DJANGO_SETTINGS_MODULE 'settings.py' file path. Ensure that the 'settings.py' file exists or provide the correct path in Web.config parameter input in the following format '-DJANGO_SETTINGS_MODULE .settings'",
+ "loc.messages.FailedToApplyTransformation": "Unable to apply transformation for the given package. Verify the following.",
+ "loc.messages.FailedToApplyTransformationReason1": "1. Whether the Transformation is already applied for the MSBuild generated package during build. If yes, remove the tag for each config in the csproj file and rebuild. ",
+ "loc.messages.FailedToApplyTransformationReason2": "2. Ensure that the config file and transformation files are present in the same folder inside the package.",
+ "loc.messages.AutoParameterizationMessage": "ConnectionString attributes in Web.config is parameterized by default. Note that the transformation has no effect on connectionString attributes as the value is overridden during deployment by 'Parameters.xml or 'SetParameters.xml' files. You can disable the auto-parameterization by setting /p:AutoParameterizationWebConfigConnectionStrings=False during MSBuild package generation.",
+ "loc.messages.UnsupportedAppType": "App type '%s' not supported in Web.config generation. Valid values for '-appType' are: 'python_Bottle', 'python_Django', 'python_Flask' and 'node'",
+ "loc.messages.UnableToFetchAuthorityURL": "Unable to fetch authority URL.",
+ "loc.messages.UnableToFetchActiveDirectory": "Unable to fetch Active Directory resource ID.",
+ "loc.messages.SuccessfullyUpdatedRuntimeStackAndStartupCommand": "Successfully updated the Runtime Stack and Startup Command.",
+ "loc.messages.FailedToUpdateRuntimeStackAndStartupCommand": "Failed to update the Runtime Stack and Startup Command. Error: %s.",
+ "loc.messages.SuccessfullyUpdatedWebAppSettings": "Successfully updated the App settings.",
+ "loc.messages.FailedToUpdateAppSettingsInConfigDetails": "Failed to update the App settings. Error: %s.",
+ "loc.messages.UnableToGetAzureRMWebAppMetadata": "Failed to fetch AzureRM WebApp metadata. ErrorCode: %s",
+ "loc.messages.UnableToUpdateAzureRMWebAppMetadata": "Unable to update AzureRM WebApp metadata. Error Code: %s",
+ "loc.messages.Unabletoretrieveazureregistrycredentials": "Unable to retrieve Azure Container Registry credentials.[Status Code: '%s']",
+ "loc.messages.UnableToReadResponseBody": "Unable to read response body. Error: %s",
+ "loc.messages.UnableToUpdateWebAppConfigDetails": "Unable to update WebApp config details. StatusCode: '%s'",
+ "loc.messages.AddingReleaseAnnotation": "Adding release annotation for the Application Insights resource '%s'",
+ "loc.messages.SuccessfullyAddedReleaseAnnotation": "Successfully added release annotation to the Application Insight : %s",
+ "loc.messages.FailedAddingReleaseAnnotation": "Failed to add release annotation. %s",
+ "loc.messages.RenameLockedFilesEnabled": "Rename locked files enabled for App Service.",
+ "loc.messages.FailedToEnableRenameLockedFiles": "Failed to enable rename locked files. Error: %s",
+ "loc.messages.WebJobsInProgressIssue": "Few WebJobs in running state prevents the deployment from removing the files. You can disable 'Remove additional files at destination' option or Stop continuous Jobs before deployment.",
+ "loc.messages.FailedToFetchKuduAppSettings": "Failed to fetch Kudu App Settings. Error: %s",
+ "loc.messages.FailedToCreatePath": "Failed to create path '%s' from Kudu. Error: %s",
+ "loc.messages.FailedToDeleteFile": "Failed to delete file '%s/%s' from Kudu. Error: %s",
+ "loc.messages.FailedToDeleteFolder": "Failed to delete folder '%s' from Kudu. Error: %s",
+ "loc.messages.FailedToUploadFile": "Failed to upload file '%s/%s' from Kudu. Error: %s",
+ "loc.messages.FailedToGetFileContent": "Failed to get file content '%s/%s' from Kudu. Error: %s",
+ "loc.messages.FailedToListPath": "Failed to list path '%s' from Kudu. Error: %s",
+ "loc.messages.RetryToDeploy": "Retrying to deploy the package.",
+ "loc.messages.FailedToGetAppServiceDetails": "Failed to fetch App Service '%s' details. Error: %s",
+ "loc.messages.FailedToGetAppServicePublishingProfile": "Failed to fetch App Service '%s' publishing profile. Error: %s",
+ "loc.messages.FailedToUpdateAppServiceMetadata": "Failed to update App service '%s' Meta data. Error: %s",
+ "loc.messages.FailedToGetAppServiceMetadata": "Failed to get App service '%s' Meta data. Error: %s",
+ "loc.messages.FailedToPatchAppServiceConfiguration": "Failed to patch App Service '%s' configuration. Error: %s",
+ "loc.messages.FailedToUpdateAppServiceConfiguration": "Failed to update App service '%s' configuration. Error: %s",
+ "loc.messages.FailedToGetAppServiceConfiguration": "Failed to get App service '%s' configuration. Error: %s",
+ "loc.messages.FailedToGetAppServicePublishingCredentials": "Failed to fetch App Service '%s' publishing credentials. Error: %s",
+ "loc.messages.FailedToGetAppServiceApplicationSettings": "Failed to get App service '%s' application settings. Error: %s",
+ "loc.messages.FailedToUpdateAppServiceApplicationSettings": "Failed to update App service '%s' application settings. Error: %s",
+ "loc.messages.UpdatingAppServiceConfigurationSettings": "Trying to update App Service Configuration settings. Data: %s",
+ "loc.messages.UpdatedAppServiceConfigurationSettings": "Updated App Service Configuration settings.",
+ "loc.messages.UpdatedAppServiceApplicationSettings": "Updated App Service Application settings and Kudu Application settings.",
+ "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.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",
+ "loc.messages.WarDeploymentRetry": "Retrying war file deployment as it did not expand successfully earlier.",
+ "loc.messages.Updatemachinetoenablesecuretlsprotocol": "Make sure the machine is using TLS 1.2 protocol or higher. Check https://aka.ms/enableTlsv2 for more information on how to enable TLS in your machine.",
+ "loc.messages.CouldNotFetchAccessTokenforAzureStatusCode": "Could not fetch access token for Azure. Status code: %s, status message: %s",
+ "loc.messages.CouldNotFetchAccessTokenforMSIDueToMSINotConfiguredProperlyStatusCode": "Could not fetch access token for Managed Service Principal. Please configure Managed Service Identity (MSI) for virtual machine 'https://aka.ms/azure-msi-docs'. Status code: %s, status message: %s",
+ "loc.messages.CouldNotFetchAccessTokenforMSIStatusCode": "Could not fetch access token for Managed Service Principal. Status code: %s, status message: %s",
+ "loc.messages.XmlParsingFailed": "Unable to parse publishProfileXML file, Error: %s",
+ "loc.messages.PropertyDoesntExistPublishProfile": "[%s] Property does not exist in publish profile",
+ "loc.messages.InvalidConnectionType": "Invalid service connection type",
+ "loc.messages.InvalidImageSourceType": "Invalid Image source Type",
+ "loc.messages.InvalidPublishProfile": "Publish profile file is invalid.",
+ "loc.messages.ASE_SSLIssueRecommendation": "To use a certificate in App Service, the certificate must be signed by a trusted certificate authority. If your web app gives you certificate validation errors, you're probably using a self-signed certificate and to resolve them you need to set a variable named VSTS_ARM_REST_IGNORE_SSL_ERRORS to the value true in the build or release pipeline",
+ "loc.messages.ZipDeployLogsURL": "Zip Deploy logs can be viewed at %s",
+ "loc.messages.DeployLogsURL": "Deploy logs can be viewed at %s",
+ "loc.messages.AppServiceApplicationURL": "App Service Application URL: %s",
+ "loc.messages.ASE_WebDeploySSLIssueRecommendation": "To use a certificate in App Service, the certificate must be signed by a trusted certificate authority. If your web app gives you certificate validation errors, you're probably using a self-signed certificate and to resolve them you need to pass -allowUntrusted in additional arguments of web deploy option.",
+ "loc.messages.FailedToGetResourceID": "Failed to get resource ID for resource type '%s' and resource name '%s'. Error: %s",
+ "loc.messages.JarPathNotPresent": "Java jar path is not present",
+ "loc.messages.FailedToUpdateApplicationInsightsResource": "Failed to update Application Insights '%s' Resource. Error: %s",
+ "loc.messages.InvalidDockerImageName": "Invalid Docker hub image name provided.",
+ "loc.messages.MsBuildPackageNotSupported": "Deployment of msBuild generated package is not supported. Change package format or use Azure App Service Deploy task."
+}
\ No newline at end of file
diff --git a/_generated/AzureWebAppV1/Strings/resources.resjson/es-ES/resources.resjson b/_generated/AzureWebAppV1/Strings/resources.resjson/es-ES/resources.resjson
new file mode 100644
index 000000000000..9271a873b248
--- /dev/null
+++ b/_generated/AzureWebAppV1/Strings/resources.resjson/es-ES/resources.resjson
@@ -0,0 +1,184 @@
+{
+ "loc.friendlyName": "Aplicación web de Azure",
+ "loc.helpMarkDown": "[Obtener más información acerca de esta tarea](https://aka.ms/azurewebappdeployreadme)",
+ "loc.description": "Implementa una instancia de Azure Web App para Linux o Windows.",
+ "loc.instanceNameFormat": "Implementación de Azure Web App: $(appName)",
+ "loc.group.displayName.AdditionalDeploymentOptions": "Opciones de implementación adicionales",
+ "loc.group.displayName.ApplicationAndConfigurationSettings": "Configuración y opciones de la aplicación",
+ "loc.input.label.azureSubscription": "Suscripción a Azure",
+ "loc.input.help.azureSubscription": "Seleccione la suscripción de Azure Resource Manager para la implementación.",
+ "loc.input.label.appType": "Tipo de aplicación",
+ "loc.input.label.appName": "Nombre de aplicación",
+ "loc.input.help.appName": "Escriba o seleccione el nombre de una instancia existente de Azure App Service. Solo se enumerarán las instancias de App Service basadas en el tipo de aplicación seleccionado.",
+ "loc.input.label.deployToSlotOrASE": "Implementar en la ranura o en App Service Environment",
+ "loc.input.help.deployToSlotOrASE": "Seleccione la opción para implementar en una ranura de implementación o entorno de Azure App Service Environment existente. Para ambos destinos, la tarea necesita el nombre del grupo de recursos. En caso de que el destino de implementación sea una ranura, la implementación se realiza de forma predeterminada en la ranura de producción. También se puede proporcionar cualquier otro nombre de ranura existente. En caso de que el destino de implementación sea un entorno de Azure App Service Environment, deje el nombre de la ranura como \"Producción\" y especifique el nombre del grupo de recursos.",
+ "loc.input.label.resourceGroupName": "Grupo de recursos",
+ "loc.input.help.resourceGroupName": "El nombre del grupo de recursos es necesario cuando el destino de implementación es una ranura de implementación o una instancia de App Service Environment. Escriba o seleccione el grupo de recursos de Azure que contiene el servicio de Azure App Service especificado anteriormente.",
+ "loc.input.label.slotName": "Ranura",
+ "loc.input.help.slotName": "Escriba o seleccione un espacio que no sea el de producción.",
+ "loc.input.label.package": "Paquete o carpeta",
+ "loc.input.help.package": "Ruta de acceso al paquete o carpeta que contiene el contenido de App Service generado por MSBuild o un archivo zip o war comprimido. Variables ( [Build](https://docs.microsoft.com/vsts/pipelines/build/variables) | [Release](https://docs.microsoft.com/vsts/pipelines/release/variables#default-variables)), se admiten caracteres comodín. Por ejemplo, $(System.DefaultWorkingDirectory)/\\*\\*/\\*.zip o $(System.DefaultWorkingDirectory)/\\*\\*/\\*.war.",
+ "loc.input.label.customDeployFolder": "Carpeta de implementación personalizada",
+ "loc.input.help.customDeployFolder": "Especifique el nombre de la carpeta personalizada en la que quiere realizar la implementación. Si el campo está vacío, el paquete se implementa en .azurewebsites.net/. Si se especifica la RAÍZ, el paquete se implementa en .azurewebsited.net ; de lo contrario, se implementa en .azurewebsited.net/",
+ "loc.input.label.runtimeStack": "Pila del entorno en tiempo de ejecución",
+ "loc.input.label.startUpCommand": "Comando de inicio ",
+ "loc.input.help.startUpCommand": "Escriba el comando de inicio. Por ejemplo, dotnet exec filename.dll dotnet filename.dll",
+ "loc.input.label.customWebConfig": "Generar parámetros de web.config para aplicaciones de Python, Node.js, Go y Java",
+ "loc.input.help.customWebConfig": "Se generará un archivo web.config estándar y se implementará en Azure App Service si la aplicación no tiene uno. Los valores de web.config se pueden editar y pueden variar en función del marco de trabajo de la aplicación. Por ejemplo, para la aplicación node.js, web.config tendrá los valores de archivo de inicio y del módulo iis_node. La característica de edición es solo para el web.config generado. [Más información](https://go.microsoft.com/fwlink/?linkid=843469).",
+ "loc.input.label.appSettings": "Configuración de la aplicación",
+ "loc.input.help.appSettings": "Edite la configuración de la aplicación web siguiendo la sintaxis -clave valor. Si un valor contiene espacios, debe ponerlo entre comillas dobles. Ejemplo: -Port 5000 -RequestTimeout 5000 -WEBSITE_TIME_ZONE \"Eastern Standard Time\"",
+ "loc.input.label.configurationStrings": "Opciones de configuración",
+ "loc.input.help.configurationStrings": "Edite opciones de configuración de aplicación web la sintaxis-valor de clave. Valor que contenga espacios debe incluirse entre comillas dobles. Ejemplo: - phpVersion 5.6 - linuxFxVersion: nodo|6.11",
+ "loc.input.label.deploymentMethod": "Método de implementación",
+ "loc.input.help.deploymentMethod": "Elija el método de implementación para la aplicación.",
+ "loc.messages.Invalidwebapppackageorfolderpathprovided": "Paquete App Service o ruta de acceso de carpeta proporcionados no válidos: %s",
+ "loc.messages.SetParamFilenotfound0": "No se ha encontrado el archivo de parámetros establecido: %s",
+ "loc.messages.XDTTransformationsappliedsuccessfully": "Las transformaciones XML se aplicaron correctamente",
+ "loc.messages.GotconnectiondetailsforazureRMWebApp0": "Se obtuvieron detalles de conexión de servicio para Azure App Service: \"%s\"",
+ "loc.messages.ErrorNoSuchDeployingMethodExists": "Error : No existe tal método de implementación",
+ "loc.messages.UnabletoretrieveconnectiondetailsforazureRMWebApp": "No se pueden recuperar los detalles de la conexión de servicio para Azure App Service: %s. Código de estado: %s (%s)",
+ "loc.messages.UnabletoretrieveResourceID": "No se pueden recuperar los detalles de la conexión de servicio para el recurso de Azure \"%s\". Código de estado: %s",
+ "loc.messages.Successfullyupdateddeploymenthistory": "El historial de implementación se actualizó correctamente en %s",
+ "loc.messages.Failedtoupdatedeploymenthistory": "No se pudo actualizar el historial de implementación. Error: %s",
+ "loc.messages.WARNINGCannotupdatedeploymentstatusSCMendpointisnotenabledforthiswebsite": "ADVERTENCIA : no se puede actualizar el estado de implementación, el punto de conexión de SCM no está habilitado para este sitio web",
+ "loc.messages.Unabletoretrievewebconfigdetails": "No se pueden recuperar los detalles de configuración de la instancia de App Service. Código de estado: \"%s\"",
+ "loc.messages.Unabletoretrievewebappsettings": "No se puede recuperar la configuración de aplicación de App Service. [Código de estado: \"%s\", Mensaje de error: \"%s\"]",
+ "loc.messages.Unabletoupdatewebappsettings": "No se puede actualizar la configuración de aplicación de la instancia de App Service. Código de estado: '%s'",
+ "loc.messages.CannotupdatedeploymentstatusuniquedeploymentIdCannotBeRetrieved": "No se puede actualizar el estado de implementación : no se puede recuperar el id. de implementación único",
+ "loc.messages.PackageDeploymentSuccess": "El paquete web se implementó correctamente en App Service.",
+ "loc.messages.PackageDeploymentFailed": "No se pudo implementar el paquete web en App Service.",
+ "loc.messages.Runningcommand": "Ejecutando el comando: %s",
+ "loc.messages.Deployingwebapplicationatvirtualpathandphysicalpath": "Implementando el paquete web : %s en una ruta de acceso virtual (ruta de acceso física): %s (%s)",
+ "loc.messages.Successfullydeployedpackageusingkuduserviceat": "El paquete %s se implementó correctamente mediante el servicio Kudu en %s",
+ "loc.messages.Failedtodeploywebapppackageusingkuduservice": "No se pudo implementar el paquete App Service mediante el servicio Kudu : %s",
+ "loc.messages.Unabletodeploywebappresponsecode": "No se puede implementar App Service debido al código de error: %s",
+ "loc.messages.MSDeploygeneratedpackageareonlysupportedforWindowsplatform": "Los paquetes generados por MSDeploy solo se admiten para la plataforma Windows.",
+ "loc.messages.UnsupportedinstalledversionfoundforMSDeployversionshouldbeatleast3orabove": "Versión instalada no admitida: se encontró %s para MSDeploy, pero la versión mínima admitida es 3 o posterior.",
+ "loc.messages.UnabletofindthelocationofMSDeployfromregistryonmachineError": "No se puede encontrar la ubicación de MS Deploy del Registro en la máquina (Error : %s)",
+ "loc.messages.Nopackagefoundwithspecifiedpattern": "No se encontró ningún paquete con el patrón especificado: %s Compruebe si el paquete mencionado en la tarea se publica como artefacto en la compilación o en una fase anterior y se descarga en el trabajo actual.",
+ "loc.messages.MorethanonepackagematchedwithspecifiedpatternPleaserestrainthesearchpattern": "Más de un paquete coincidió con el patrón especificado: %s. Restrinja el patrón de búsqueda.",
+ "loc.messages.Trytodeploywebappagainwithappofflineoptionselected": "Intente volver a implementar el servicio de la aplicación con la opción Poner la aplicación sin conexión seleccionada.",
+ "loc.messages.Trytodeploywebappagainwithrenamefileoptionselected": "Intente volver a implementar el servicio de la aplicación con la opción Cambiar de nombre archivos bloqueados seleccionada.",
+ "loc.messages.NOJSONfilematchedwithspecificpattern": "Ningún archivo JSON coincidía con un patrón específico: %s.",
+ "loc.messages.Configfiledoesntexists": "El archivo de configuración %s no existe.",
+ "loc.messages.Failedtowritetoconfigfilewitherror": "No se pudo escribir en el archivo de configuración %s con el error: %s",
+ "loc.messages.AppOfflineModeenabled": "Modo de aplicación sin conexión habilitado.",
+ "loc.messages.Failedtoenableappofflinemode": "No se pudo habilitar el modo de aplicación sin conexión. Código de estado: %s (%s)",
+ "loc.messages.AppOflineModedisabled": "Modo de aplicación sin conexión deshabilitado.",
+ "loc.messages.FailedtodisableAppOfflineMode": "No se pudo deshabilitar el modo de aplicación sin conexión. Código de estado: %s (%s)",
+ "loc.messages.CannotPerformXdtTransformationOnNonWindowsPlatform": "No se pueden realizar las transformaciones XML en una plataforma que no es Windows.",
+ "loc.messages.XdtTransformationErrorWhileTransforming": "Error de transformación XML al transformar %s mediante %s.",
+ "loc.messages.PublishusingwebdeployoptionsaresupportedonlywhenusingWindowsagent": "Las opciones de publicación mediante webdeploy solo se admiten cuando se usa el agente de Windows",
+ "loc.messages.Publishusingzipdeploynotsupportedformsbuildpackage": "La publicación mediante la opción de implementación desde un archivo zip no se admite para el tipo de paquete de MSBuild.",
+ "loc.messages.Publishusingzipdeploynotsupportedforvirtualapplication": "La publicación mediante la opción de implementación desde un archivo zip no se admite para una aplicación virtual.",
+ "loc.messages.Publishusingzipdeploydoesnotsupportwarfile": "La publicación mediante las opciones de RunFromZip o de implementación desde un archivo zip no admiten la implementación de archivos war.",
+ "loc.messages.Publishusingrunfromzipwithpostdeploymentscript": "La publicación mediante RunFromZip podría no admitir el script posterior a la implementación si realiza cambios en wwwroot, puesto que la carpeta es de solo lectura.",
+ "loc.messages.ResourceDoesntExist": "El recurso \"%s\" no existe. Este debe existir antes de la implementación.",
+ "loc.messages.EncodeNotSupported": "Se detectó una codificación de archivos del archivo %s como %s. No se admite la sustitución de variables con la codificación de archivos %s. Las codificaciones admitidas son UTF-8 y UTF-16 LE.",
+ "loc.messages.UnknownFileEncodeError": "No se puede detectar la codificación del archivo %s (typeCode: %s). Las codificaciones admitidas son UTF-8 y UTF-16 LE.",
+ "loc.messages.ShortFileBufferError": "El búfer de archivos es demasiado breve para detectar el tipo de codificación : %s",
+ "loc.messages.FailedToUpdateAzureRMWebAppConfigDetails": "No se pudieron actualizar los detalles de configuración de App Service. Error: %s",
+ "loc.messages.SuccessfullyUpdatedAzureRMWebAppConfigDetails": "Los detalles de configuración de App Service se actualizaron correctamente",
+ "loc.messages.RequestedURLforkuduphysicalpath": "Dirección URL solicitada para la ruta de acceso física a Kudu: %s",
+ "loc.messages.Physicalpathalreadyexists": "La ruta de acceso física \"%s\" ya existe",
+ "loc.messages.KuduPhysicalpathCreatedSuccessfully": "La ruta de acceso física a Kudu se creó correctamente: %s",
+ "loc.messages.FailedtocreateKuduPhysicalPath": "No se pudo crear la ruta de acceso física de Kudu. Error: %s",
+ "loc.messages.FailedtocheckphysicalPath": "No se pudo comprobar la ruta de acceso física de Kudu. Código de error: %s",
+ "loc.messages.VirtualApplicationDoesNotExist": "La aplicación virtual no existe: %s",
+ "loc.messages.JSONParseError": "No se puede analizar el archivo JSON: %s. Error: %s",
+ "loc.messages.JSONvariablesubstitutionappliedsuccessfully": "La sustitución de variable JSON se aplicó correctamente.",
+ "loc.messages.XMLvariablesubstitutionappliedsuccessfully": "Sustitución de variables XML aplicada correctamente.",
+ "loc.messages.failedtoUploadFileToKudu": "No se puede cargar el archivo %s en Kudu (%s). Código de estado: %s",
+ "loc.messages.failedtoUploadFileToKuduError": "No se puede cargar el archivo %s en Kudu (%s). Error: %s",
+ "loc.messages.ExecuteScriptOnKudu": "Ejecutando el script dado en el servicio Kudu.",
+ "loc.messages.FailedToRunScriptOnKuduError": "No se puede ejecutar el script en el servicio Kudu. Error: %s",
+ "loc.messages.FailedToRunScriptOnKudu": "No se puede ejecutar el script en Kudu: %s. Código de estado: %s",
+ "loc.messages.ScriptExecutionOnKuduSuccess": "El script se ejecutó correctamente en Kudu.",
+ "loc.messages.ScriptExecutionOnKuduFailed": "El script ejecutado devolvió \"%s\" como código de retorno. Error: %s",
+ "loc.messages.FailedtoDeleteFileFromKudu": "No se puede eliminar el archivo %s de Kudu (%s). Código de estado: %s",
+ "loc.messages.FailedtoDeleteFileFromKuduError": "No se puede eliminar el archivo %s de Kudu (%s). Error: %s",
+ "loc.messages.ScriptFileNotFound": "No se encuentra el archivo de script \"%s\".",
+ "loc.messages.InvalidScriptFile": "Se proporcionó un archivo de script \"%s\" no válido. Las extensiones válidas son .bat y .cmd para Windows y .sh para Linux.",
+ "loc.messages.RetryForTimeoutIssue": "No se pudo ejecutar el script porque se agotó el tiempo de espera. Se reintentará una vez más.",
+ "loc.messages.stdoutFromScript": "Salida estándar del script: ",
+ "loc.messages.stderrFromScript": "Error estándar del script: ",
+ "loc.messages.WebConfigAlreadyExists": "El archivo web.config ya existe. No se va a generar.",
+ "loc.messages.SuccessfullyGeneratedWebConfig": "El archivo web.config se generó correctamente",
+ "loc.messages.FailedToGenerateWebConfig": "No se pudo generar el archivo web.config. %s",
+ "loc.messages.FailedToGetKuduFileContent": "No se puede obtener el contenido del archivo: %s. Código de estado: %s (%s)",
+ "loc.messages.FailedToGetKuduFileContentError": "No se puede obtener el contenido del archivo: %s. Error: %s",
+ "loc.messages.ScriptStatusTimeout": "No se pudo recuperar el estado del script porque se agotó el tiempo de espera.",
+ "loc.messages.PollingForFileTimeOut": "No se puede recuperar el estado del script porque se agotó el tiempo de espera. Puede aumentar el tiempo de espera estableciendo la variable \"appservicedeploy.retrytimeout\" en el número de minutos que sea necesario.",
+ "loc.messages.InvalidPollOption": "Se ha proporcionado una opción de sondeo no válida: %s.",
+ "loc.messages.MissingAppTypeWebConfigParameters": "El atributo \"-appType\" falta en los parámetros de Web.config. Los valores válidos para \"-appType\" son: \"python_Bottle\", \"python_Django\", \"python_Flask\", \"node\" y \"Go\". Por ejemplo, \"-appType python_Bottle\" (sin comillas) en el caso de la plataforma Python Bottle.",
+ "loc.messages.AutoDetectDjangoSettingsFailed": "No se puede detectar la ruta de acceso del archivo \"settings.py\" de DJANGO_SETTINGS_MODULE. Asegúrese de que el archivo \"settings.py\" existe o indique la ruta de acceso correcta en la entrada del parámetro de Web.config siguiendo este formato: \"-DJANGO_SETTINGS_MODULE .settings\"",
+ "loc.messages.FailedToApplyTransformation": "No se puede aplicar la transformación para el paquete dado. Compruebe lo siguiente.",
+ "loc.messages.FailedToApplyTransformationReason1": "1. Si la transformación ya se ha aplicado para el paquete generado por MSBuild durante la compilación. Si es así, quite la etiqueta para cada configuración del archivo csproj y compile de nuevo. ",
+ "loc.messages.FailedToApplyTransformationReason2": "2. Asegúrese de que el archivo de configuración y los archivos de transformación están presentes en la misma carpeta dentro del paquete.",
+ "loc.messages.AutoParameterizationMessage": "Los atributos de ConnectionString en Web.config están parametrizados de manera predeterminada. Tenga en cuenta que la transformación no tiene efecto en los atributos connectionString porque el valor se invalida durante la implementación por los archivos \"Parameters.xml\" o \"SetParameters.xml\". Puede deshabilitar la parametrización automática estableciendo /p:AutoParameterizationWebConfigConnectionStrings=False durante la generación del paquete MSBuild.",
+ "loc.messages.UnsupportedAppType": "El tipo de aplicación \"'%s\" no se admite en la generación de Web.config. Los valores válidos para \"-appType\" son: \"python_Bottle\", \"python_Django\", \"python_Flask\" y \"'node\"",
+ "loc.messages.UnableToFetchAuthorityURL": "No se puede recuperar la dirección URL de la autoridad.",
+ "loc.messages.UnableToFetchActiveDirectory": "No se puede recuperar el id. de recurso de Active Directory.",
+ "loc.messages.SuccessfullyUpdatedRuntimeStackAndStartupCommand": "La pila en tiempo de ejecución y el comando de inicio se actualizaron correctamente.",
+ "loc.messages.FailedToUpdateRuntimeStackAndStartupCommand": "No se pudieron actualizar la pila en tiempo de ejecución y el comando de inicio. Error: %s.",
+ "loc.messages.SuccessfullyUpdatedWebAppSettings": "La configuración de la aplicación se actualizó correctamente.",
+ "loc.messages.FailedToUpdateAppSettingsInConfigDetails": "No se pudo actualizar la configuración de la aplicación. Error: %s.",
+ "loc.messages.UnableToGetAzureRMWebAppMetadata": "No se pudieron capturar los metadatos de WebApp de AzureRM. Código de error: %s",
+ "loc.messages.UnableToUpdateAzureRMWebAppMetadata": "No se pueden actualizar los metadatos de WebApp de AzureRM. Código de error: %s",
+ "loc.messages.Unabletoretrieveazureregistrycredentials": "No se pueden recuperar las credenciales de Azure Container Registry. [Código de estado: \"%s\"]",
+ "loc.messages.UnableToReadResponseBody": "No se puede leer el cuerpo de la respuesta. Error: %s",
+ "loc.messages.UnableToUpdateWebAppConfigDetails": "No se pueden actualizar los detalles de la configuración de WebApp. Código de estado: \"%s\"",
+ "loc.messages.AddingReleaseAnnotation": "Agregar anotación de versión para el recurso de Application Insights \"%s\".",
+ "loc.messages.SuccessfullyAddedReleaseAnnotation": "La anotación de versión se agregó correctamente a la instancia de Application Insights: %s",
+ "loc.messages.FailedAddingReleaseAnnotation": "No se pudo agregar la anotación de versión. %s",
+ "loc.messages.RenameLockedFilesEnabled": "La opción Cambiar nombre de archivos bloqueados está habilitada para la instancia de App Service.",
+ "loc.messages.FailedToEnableRenameLockedFiles": "No se pudo habilitar el cambio de nombre de los archivos bloqueados. Error: %s",
+ "loc.messages.WebJobsInProgressIssue": "Algunos WebJobs en estado de ejecución impiden que la implementación elimine los archivos. Puede deshabilitar la opción \"Quitar archivos adicionales en el destino\" o detener los trabajos continuos antes de la implementación.",
+ "loc.messages.FailedToFetchKuduAppSettings": "No se pudo capturar la configuración de la aplicación de Kudu. Error: %s",
+ "loc.messages.FailedToCreatePath": "No se pudo crear la ruta de acceso \"%s\" de Kudu. Error: %s",
+ "loc.messages.FailedToDeleteFile": "No se pudo eliminar el archivo \"%s/%s\" de Kudu. Error: %s",
+ "loc.messages.FailedToDeleteFolder": "No se pudo eliminar la carpeta \"%s\" de Kudu. Error: %s",
+ "loc.messages.FailedToUploadFile": "No se pudo cargar el archivo \"%s/%s\" de Kudu. Error: %s",
+ "loc.messages.FailedToGetFileContent": "No se pudo obtener el contenido del archivo \"%s/%s\" de Kudu. Error: %s",
+ "loc.messages.FailedToListPath": "No se pudo enumerar la ruta de acceso \"%s\" de Kudu. Error: %s",
+ "loc.messages.RetryToDeploy": "Reintentando la implementación del paquete.",
+ "loc.messages.FailedToGetAppServiceDetails": "No se pudieron capturar los detalles de la instancia de App Service \"%s\". Error: %s",
+ "loc.messages.FailedToGetAppServicePublishingProfile": "No se pudo capturar el perfil de publicación de la instancia de App Service \"%s\". Error: %s",
+ "loc.messages.FailedToUpdateAppServiceMetadata": "No se pudieron actualizar los metadatos de la instancia de App Service \"%s\". Error: %s",
+ "loc.messages.FailedToGetAppServiceMetadata": "No se pudieron obtener los metadatos de la instancia de App Service \"%s\". Error: %s",
+ "loc.messages.FailedToPatchAppServiceConfiguration": "No se pudo aplicar una revisión a la configuración de la instancia de App Service \"%s\". Error: %s",
+ "loc.messages.FailedToUpdateAppServiceConfiguration": "No se pudo actualizar la configuración de la instancia de App Service \"%s\". Error: %s",
+ "loc.messages.FailedToGetAppServiceConfiguration": "No se pudo obtener la configuración de la instancia de App Service \"%s\". Error: %s",
+ "loc.messages.FailedToGetAppServicePublishingCredentials": "No se pudieron capturar las credenciales de publicación de la instancia de App Service \"%s\". Error: %s",
+ "loc.messages.FailedToGetAppServiceApplicationSettings": "No se pudo obtener la configuración de aplicación de la instancia de App Service \"%s\". Error: %s",
+ "loc.messages.FailedToUpdateAppServiceApplicationSettings": "No se pudo actualizar la configuración de aplicación de la instancia de App Service \"%s\". Error: %s",
+ "loc.messages.UpdatingAppServiceConfigurationSettings": "Intentando actualizar los valores de configuración de la instancia de App Service. Datos: %s",
+ "loc.messages.UpdatedAppServiceConfigurationSettings": "Se han actualizado los valores de configuración de App Service.",
+ "loc.messages.UpdatedAppServiceApplicationSettings": "Se han actualizado la configuración de aplicación de App Service y la configuración de aplicación de Kudu.",
+ "loc.messages.MultipleResourceGroupFoundForAppService": "Se encontraron varios grupos de recursos para la instancia de App Service \"%s\".",
+ "loc.messages.PackageDeploymentUsingZipDeployFailed": "Error al implementar el paquete mediante la implementación de ZIP. Consulte los registros para obtener más detalles.",
+ "loc.messages.PackageDeploymentInitiated": "Se ha iniciado la implementación del paquete mediante la implementación desde un archivo ZIP.",
+ "loc.messages.WarPackageDeploymentInitiated": "Se ha iniciado la implementación del paquete mediante la implementación desde un archivo WAR.",
+ "loc.messages.FailedToGetDeploymentLogs": "No se pudieron obtener los registros de implementación. Error: %s",
+ "loc.messages.GoExeNameNotPresent": "Falta el nombre del archivo ejecutable de Go",
+ "loc.messages.WarDeploymentRetry": "Reintentando la implementación del archivo war, ya que no se expandió correctamente.",
+ "loc.messages.Updatemachinetoenablesecuretlsprotocol": "Asegúrese de que el equipo usa el protocolo TLS 1.2 o posterior. Consulte https://aka.ms/enableTlsv2 para obtener más información sobre cómo habilitar TLS en la máquina.",
+ "loc.messages.CouldNotFetchAccessTokenforAzureStatusCode": "No se pudo capturar el token de acceso para Azure. Código de estado: %s. Mensaje de estado: %s",
+ "loc.messages.CouldNotFetchAccessTokenforMSIDueToMSINotConfiguredProperlyStatusCode": "No se pudo capturar el token de acceso para la entidad de servicio administrada. Configure Managed Service Identity (MSI) para la máquina virtual \"https://aka.ms/azure-msi-docs\". Código de estado: %s. Mensaje de estado: %s",
+ "loc.messages.CouldNotFetchAccessTokenforMSIStatusCode": "No se pudo capturar el token de acceso para la entidad de servicio administrada. Código de estado: %s. Mensaje de estado: %s",
+ "loc.messages.XmlParsingFailed": "No se puede analizar el archivo publishProfileXML: %s. Error: %s",
+ "loc.messages.PropertyDoesntExistPublishProfile": "[%s] La propiedad no existe en el perfil de publicación",
+ "loc.messages.InvalidConnectionType": "Tipo de conexión de servicio no válido",
+ "loc.messages.InvalidImageSourceType": "Tipo de origen de imagen no válido",
+ "loc.messages.InvalidPublishProfile": "El archivo del perfil de publicación no es válido.",
+ "loc.messages.ASE_SSLIssueRecommendation": "Para usar un certificado en App Service, debe haberlo firmado una entidad de certificación de confianza. Si la aplicación web genera errores de validación del certificado, es posible que esté usando un certificado autofirmado. Para resolverlo, debe establecer una variable denominada VSTS_ARM_REST_IGNORE_SSL_ERRORS como true en la canalización de compilación o de versión",
+ "loc.messages.ZipDeployLogsURL": "Los registros de implementación desde un archivo zip pueden verse en %s",
+ "loc.messages.DeployLogsURL": "Los registros de implementación pueden verse en %s",
+ "loc.messages.AppServiceApplicationURL": "Dirección URL de la aplicación de App Service: %s",
+ "loc.messages.ASE_WebDeploySSLIssueRecommendation": "Para usar un certificado en App Service, debe haberlo firmado una entidad de certificación de confianza. Si la aplicación web genera errores de validación del certificado, es posible que esté usando un certificado autofirmado. Para resolverlo, debe pasar -allowUntrusted en argumentos adicionales de la opción de implementación web.",
+ "loc.messages.FailedToGetResourceID": "No se pudo obtener el identificador del tipo de recurso \"%s\" y el nombre de recurso \"%s\". Error: %s",
+ "loc.messages.JarPathNotPresent": "La ruta de acceso de jar de Java no está presente.",
+ "loc.messages.FailedToUpdateApplicationInsightsResource": "No se pudo actualizar el recurso de Application Insights \"%s\". Error: %s",
+ "loc.messages.InvalidDockerImageName": "Se ha proporcionado un nombre de imagen de Docker Hub no válido.",
+ "loc.messages.MsBuildPackageNotSupported": "No se admite la implementación del paquete generado por msBuild. Cambie el formato del paquete o use la tarea Implementación de Azure App Service."
+}
\ No newline at end of file
diff --git a/_generated/AzureWebAppV1/Strings/resources.resjson/fr-FR/resources.resjson b/_generated/AzureWebAppV1/Strings/resources.resjson/fr-FR/resources.resjson
new file mode 100644
index 000000000000..c9c1bb5644e0
--- /dev/null
+++ b/_generated/AzureWebAppV1/Strings/resources.resjson/fr-FR/resources.resjson
@@ -0,0 +1,184 @@
+{
+ "loc.friendlyName": "Application web Azure",
+ "loc.helpMarkDown": "[En savoir plus sur cette tâche](https://aka.ms/azurewebappdeployreadme)",
+ "loc.description": "Déployer une application web Azure pour Linux ou Windows",
+ "loc.instanceNameFormat": "Déploiement d'application web Azure : $(appName)",
+ "loc.group.displayName.AdditionalDeploymentOptions": "Options de déploiement supplémentaires",
+ "loc.group.displayName.ApplicationAndConfigurationSettings": "Paramètres d'application et de configuration",
+ "loc.input.label.azureSubscription": "Abonnement Azure",
+ "loc.input.help.azureSubscription": "Sélectionnez l'abonnement Azure Resource Manager pour le déploiement.",
+ "loc.input.label.appType": "Type d'application",
+ "loc.input.label.appName": "Nom de l'application",
+ "loc.input.help.appName": "Entrez ou sélectionnez le nom d'un Azure App Service existant. Seuls les App Services basés sur le type d'application sélectionné sont listés.",
+ "loc.input.label.deployToSlotOrASE": "Déployer sur l'emplacement ou l'environnement App Service",
+ "loc.input.help.deployToSlotOrASE": "Sélectionnez l'option permettant d'effectuer un déploiement sur un emplacement de déploiement existant ou sur Azure App Service Environment. Pour les deux cibles, la tâche a besoin du nom du groupe de ressources. Si la cible de déploiement est un emplacement, le déploiement est effectué par défaut sur l'emplacement de production. Vous pouvez également indiquer un autre nom d'emplacement existant. Si la cible de déploiement est un environnement Azure App Service, gardez le nom d'emplacement 'production', et spécifiez simplement le nom du groupe de ressources.",
+ "loc.input.label.resourceGroupName": "Groupe de ressources",
+ "loc.input.help.resourceGroupName": "Le nom du groupe de ressources est obligatoire quand la cible de déploiement est un emplacement de déploiement ou un environnement App Service. Entrez ou sélectionnez le groupe de ressources Azure qui contient le service Azure App Service spécifié ci-dessus.",
+ "loc.input.label.slotName": "Emplacement",
+ "loc.input.help.slotName": "Entrez ou sélectionnez un emplacement existant autre que l'emplacement de production.",
+ "loc.input.label.package": "Package ou dossier",
+ "loc.input.help.package": "Chemin de fichier du package ou d'un dossier de contenu App Service généré par MSBuild, ou d'un fichier zip ou war compressé. Les variables ([Build](https://docs.microsoft.com/vsts/pipelines/build/variables) | [Mise en production](https://docs.microsoft.com/vsts/pipelines/release/variables#default-variables)) et les caractères génériques sont pris en charge. Exemple : $(System.DefaultWorkingDirectory)/\\*\\*/\\*.zip ou $(System.DefaultWorkingDirectory)/\\*\\*/\\*.war.",
+ "loc.input.label.customDeployFolder": "Dossier de déploiement personnalisé",
+ "loc.input.help.customDeployFolder": "Spécifiez le nom du dossier personnalisé sur lequel vous souhaitez effectuer le déploiement. Si le champ est vide, le package est déployé sur .azurewebsites.net/ Si ROOT est entré, le package est déployé sur .azurewebsited.net , sinon il est déployé sur .azurewebsited.net/",
+ "loc.input.label.runtimeStack": "Pile de runtime",
+ "loc.input.label.startUpCommand": "Commande de démarrage ",
+ "loc.input.help.startUpCommand": "Entrez la commande de démarrage. Exemple : dotnet exec filename.dll dotnet filename.dll",
+ "loc.input.label.customWebConfig": "Générer les paramètres web.config pour les applications Python, Node.js, Go et Java",
+ "loc.input.help.customWebConfig": "Un fichier web.config standard va être généré et déployé sur Azure App Service, si l'application n'en a pas. Vous pouvez modifier les valeurs du fichier web.config. Celles-ci varient en fonction du framework d'application. Par exemple, pour l'application node.js, web.config a un fichier de démarrage et des valeurs de module iis_node. Cette fonctionnalité d'édition est réservée au fichier web.config généré. [En savoir plus](https://go.microsoft.com/fwlink/?linkid=843469).",
+ "loc.input.label.appSettings": "Paramètres de l'application",
+ "loc.input.help.appSettings": "Modifiez les paramètres d'application Web App qui suivent la valeur -key de la syntaxe. La valeur contenant des espaces doit être comprise entre des guillemets. Exemple :-Port 5000 - RequestTimeout 5000 -WEBSITE_TIME_ZONE \"Eastern Standard Time\"",
+ "loc.input.label.configurationStrings": "Paramètres de configuration",
+ "loc.input.help.configurationStrings": "Modifiez les paramètres de configuration Web App qui suivent la valeur -key de la syntaxe. La valeur contenant des espaces doit être comprise entre des guillemets. Exemple : - phpVersion 5.6 -linuxFXVersion : node|6.11",
+ "loc.input.label.deploymentMethod": "Méthode de déploiement",
+ "loc.input.help.deploymentMethod": "Choisissez la méthode de déploiement de l'application.",
+ "loc.messages.Invalidwebapppackageorfolderpathprovided": "Chemin de dossier ou package App Service fourni non valide : %s",
+ "loc.messages.SetParamFilenotfound0": "Fichier de définition de paramètres introuvable : %s",
+ "loc.messages.XDTTransformationsappliedsuccessfully": "Transformations XML correctement appliquées",
+ "loc.messages.GotconnectiondetailsforazureRMWebApp0": "Obtention effectuée des détails de la connexion de service d'Azure App Service : '%s'",
+ "loc.messages.ErrorNoSuchDeployingMethodExists": "Erreur : Aucune méthode de déploiement de ce type n'existe",
+ "loc.messages.UnabletoretrieveconnectiondetailsforazureRMWebApp": "Impossible de récupérer les détails de la connexion de service d'Azure App Service : %s. Code d'état : %s (%s)",
+ "loc.messages.UnabletoretrieveResourceID": "Impossible de récupérer les détails de connexion de service de la ressource Azure : '%s'. Code d'état : %s",
+ "loc.messages.Successfullyupdateddeploymenthistory": "Historique de déploiement mis à jour sur %s",
+ "loc.messages.Failedtoupdatedeploymenthistory": "Échec de la mise à jour de l'historique de déploiement. Erreur : %s",
+ "loc.messages.WARNINGCannotupdatedeploymentstatusSCMendpointisnotenabledforthiswebsite": "AVERTISSEMENT : Impossible de mettre à jour l'état de déploiement : le point de terminaison SCM n'est pas activé pour ce site web",
+ "loc.messages.Unabletoretrievewebconfigdetails": "Impossible de récupérer les détails de la configuration d'App Service. Code d'état : '%s'",
+ "loc.messages.Unabletoretrievewebappsettings": "Impossible de récupérer les paramètres d'application App Service. [Code d'état : '%s', message d'erreur : '%s']",
+ "loc.messages.Unabletoupdatewebappsettings": "Impossible de mettre à jour les paramètres d'application d'App Service. Code d'état : '%s'",
+ "loc.messages.CannotupdatedeploymentstatusuniquedeploymentIdCannotBeRetrieved": "Impossible de mettre à jour l'état du déploiement : l'ID de déploiement unique ne peut pas être récupéré",
+ "loc.messages.PackageDeploymentSuccess": "Déploiement réussi du package web sur App Service.",
+ "loc.messages.PackageDeploymentFailed": "Échec de déploiement du package web sur App Service.",
+ "loc.messages.Runningcommand": "Exécution de la commande : %s",
+ "loc.messages.Deployingwebapplicationatvirtualpathandphysicalpath": "Déploiement du package web : %s sur le chemin virtuel (chemin physique) : %s (%s)",
+ "loc.messages.Successfullydeployedpackageusingkuduserviceat": "Package %s déployé à l'aide du service kudu sur %s",
+ "loc.messages.Failedtodeploywebapppackageusingkuduservice": "Impossible de déployer le package App Service à l'aide du service kudu : %s",
+ "loc.messages.Unabletodeploywebappresponsecode": "Impossible de déployer App Service en raison du code d'erreur %s",
+ "loc.messages.MSDeploygeneratedpackageareonlysupportedforWindowsplatform": "Les packages générés par MSDeploy sont uniquement pris en charge par la plateforme Windows.",
+ "loc.messages.UnsupportedinstalledversionfoundforMSDeployversionshouldbeatleast3orabove": "Version installée non prise en charge : %s trouvé pour MSDeploy. Il doit s'agir au minimum de la version 3 ou d'une version ultérieure",
+ "loc.messages.UnabletofindthelocationofMSDeployfromregistryonmachineError": "Emplacement introuvable de MSDeploy dans le Registre de l'ordinateur (Erreur : %s)",
+ "loc.messages.Nopackagefoundwithspecifiedpattern": "Package introuvable avec le modèle spécifié : %s Vérifiez si le package mentionné dans la tâche est publié en tant qu'artefact dans la build ou à une étape précédente, et s'il est téléchargé dans le travail actuel.",
+ "loc.messages.MorethanonepackagematchedwithspecifiedpatternPleaserestrainthesearchpattern": "Plusieurs packages correspondent au modèle spécifié : %s. Affinez le modèle de recherche.",
+ "loc.messages.Trytodeploywebappagainwithappofflineoptionselected": "Essayez de redéployer App Service avec l'option Mettre l'application hors connexion sélectionnée.",
+ "loc.messages.Trytodeploywebappagainwithrenamefileoptionselected": "Essayez de redéployer App Service avec l'option Renommer les fichiers verrouillés sélectionnée.",
+ "loc.messages.NOJSONfilematchedwithspecificpattern": "Aucun fichier JSON ne correspond au modèle spécifique : %s.",
+ "loc.messages.Configfiledoesntexists": "Le fichier de configuration %s n'existe pas.",
+ "loc.messages.Failedtowritetoconfigfilewitherror": "Échec d'écriture dans le fichier config %s avec l'erreur : %s",
+ "loc.messages.AppOfflineModeenabled": "Mode hors connexion de l'application activé.",
+ "loc.messages.Failedtoenableappofflinemode": "Échec de l'activation du mode hors connexion de l'application. Code d'état : %s (%s)",
+ "loc.messages.AppOflineModedisabled": "Mode hors connexion de l'application désactivé.",
+ "loc.messages.FailedtodisableAppOfflineMode": "Impossible de désactiver le mode hors connexion de l'application. Code d'état : %s (%s)",
+ "loc.messages.CannotPerformXdtTransformationOnNonWindowsPlatform": "Impossible d'effectuer les transformations XML sur une plateforme non-Windows.",
+ "loc.messages.XdtTransformationErrorWhileTransforming": "Erreur de transformation XML lors de la transformation de %s à l'aide de %s.",
+ "loc.messages.PublishusingwebdeployoptionsaresupportedonlywhenusingWindowsagent": "Les options de publication à l'aide de webdeploy ne sont prises en charge qu'en cas d'utilisation de l'agent Windows",
+ "loc.messages.Publishusingzipdeploynotsupportedformsbuildpackage": "La publication à l'aide de l'option zip deploy n'est pas prise en charge pour le type de package msBuild.",
+ "loc.messages.Publishusingzipdeploynotsupportedforvirtualapplication": "La publication à l'aide de l'option zip deploy n'est pas prise en charge pour une application virtuelle.",
+ "loc.messages.Publishusingzipdeploydoesnotsupportwarfile": "La publication à l'aide des options zip deploy ou RunFromZip ne prend pas en charge le déploiement de fichiers war.",
+ "loc.messages.Publishusingrunfromzipwithpostdeploymentscript": "La publication à l'aide de RunFromZip risque de ne pas prendre en charge le script de postdéploiement, s'il apporte des changements à wwwroot, car le dossier est ReadOnly.",
+ "loc.messages.ResourceDoesntExist": "La ressource '%s' n'existe pas. La ressource doit exister avant le déploiement.",
+ "loc.messages.EncodeNotSupported": "Encodage du fichier %s en %s détecté. La substitution de variable n'est pas prise en charge avec l'encodage de fichier %s. Les encodages pris en charge sont UTF-8 et UTF-16 LE.",
+ "loc.messages.UnknownFileEncodeError": "Impossible de détecter l'encodage du fichier %s (typeCode : %s). Les encodages pris en charge sont UTF-8 et UTF-16 LE.",
+ "loc.messages.ShortFileBufferError": "La mémoire tampon de fichier est insuffisante pour détecter le type d'encodage : %s",
+ "loc.messages.FailedToUpdateAzureRMWebAppConfigDetails": "Impossible de mettre à jour les informations sur la configuration App Service. Erreur : %s",
+ "loc.messages.SuccessfullyUpdatedAzureRMWebAppConfigDetails": "Informations sur la configuration App Service correctement mises à jour",
+ "loc.messages.RequestedURLforkuduphysicalpath": "URL demandée pour le chemin d'accès physique Kudu : %s",
+ "loc.messages.Physicalpathalreadyexists": "Le chemin d'accès physique '%s' existe déjà",
+ "loc.messages.KuduPhysicalpathCreatedSuccessfully": "Chemin d'accès physique Kudu correctement créé : %s",
+ "loc.messages.FailedtocreateKuduPhysicalPath": "Échec de la création du chemin physique de kudu. Erreur : %s",
+ "loc.messages.FailedtocheckphysicalPath": "Échec de la vérification du chemin physique de kudu. Code d'erreur : %s",
+ "loc.messages.VirtualApplicationDoesNotExist": "L'application virtuelle %s n'existe pas",
+ "loc.messages.JSONParseError": "Impossible d'analyser le fichier JSON : %s. Erreur : %s",
+ "loc.messages.JSONvariablesubstitutionappliedsuccessfully": "Substitution de variable JSON correctement appliquée.",
+ "loc.messages.XMLvariablesubstitutionappliedsuccessfully": "La substitution de la variable XML a été appliquée.",
+ "loc.messages.failedtoUploadFileToKudu": "Impossible de charger le fichier %s sur Kudu (%s). Code d'état : %s",
+ "loc.messages.failedtoUploadFileToKuduError": "Impossible de charger le fichier %s sur Kudu (%s). Erreur : %s",
+ "loc.messages.ExecuteScriptOnKudu": "Exécution du script donné sur le service Kudu.",
+ "loc.messages.FailedToRunScriptOnKuduError": "Impossible d'exécuter le script sur le service Kudu. Erreur : %s",
+ "loc.messages.FailedToRunScriptOnKudu": "Impossible d'exécuter le script sur Kudu : %s. Code d'état : %s",
+ "loc.messages.ScriptExecutionOnKuduSuccess": "Exécution réussie du script sur Kudu.",
+ "loc.messages.ScriptExecutionOnKuduFailed": "Le script exécuté a généré le code de retour '%s'. Erreur : %s",
+ "loc.messages.FailedtoDeleteFileFromKudu": "Impossible de supprimer le fichier %s de Kudu (%s). Code d'état : %s",
+ "loc.messages.FailedtoDeleteFileFromKuduError": "Impossible de supprimer le fichier %s de Kudu (%s). Erreur : %s",
+ "loc.messages.ScriptFileNotFound": "Le fichier de script '%s' est introuvable.",
+ "loc.messages.InvalidScriptFile": "Le fichier de script fourni '%s' est non valide. Les extensions valides sont .bat et .cmd pour Windows, et.sh pour Linux",
+ "loc.messages.RetryForTimeoutIssue": "Échec de l'exécution du script en raison d'un problème de délai d'expiration. Nouvelle tentative.",
+ "loc.messages.stdoutFromScript": "Sortie standard du script : ",
+ "loc.messages.stderrFromScript": "Erreur standard du script : ",
+ "loc.messages.WebConfigAlreadyExists": "Le fichier web.config existe déjà. Aucune génération en cours.",
+ "loc.messages.SuccessfullyGeneratedWebConfig": "Génération réussie du fichier web.config",
+ "loc.messages.FailedToGenerateWebConfig": "Échec de génération de web.config. %s",
+ "loc.messages.FailedToGetKuduFileContent": "Impossible d'obtenir le contenu du fichier : %s. Code d'état : %s (%s)",
+ "loc.messages.FailedToGetKuduFileContentError": "Impossible d'obtenir le contenu du fichier : %s. Erreur : %s",
+ "loc.messages.ScriptStatusTimeout": "Impossible de récupérer (fetch) l'état du script en raison du délai d'expiration.",
+ "loc.messages.PollingForFileTimeOut": "Impossible de récupérer (fetch) l'état du script en raison du délai d'expiration. Vous pouvez augmenter la limite du délai d'expiration en affectant le nombre de minutes nécessaires à la variable 'appservicedeploy.retrytimeout'.",
+ "loc.messages.InvalidPollOption": "Option d'interrogation non valide fournie : %s.",
+ "loc.messages.MissingAppTypeWebConfigParameters": "Il manque l'attribut '-appType' dans les paramètres de Web.config. Les valeurs valides pour '-appType' sont : 'python_Bottle', 'python_Django', 'python_Flask', 'node' et 'Go'. Exemple : '-appType python_Bottle' (sans guillemets) dans le cas d'un framework Python Bottle.",
+ "loc.messages.AutoDetectDjangoSettingsFailed": "Impossible de détecter le chemin du fichier 'settings.py' pour DJANGO_SETTINGS_MODULE. Vérifiez que le fichier 'settings.py' existe, ou indiquez le chemin approprié dans l'entrée de paramètre de Web.config au format suivant : '-DJANGO_SETTINGS_MODULE .settings'",
+ "loc.messages.FailedToApplyTransformation": "Impossible d'appliquer la transformation pour le package donné. Vérifiez ce qui suit.",
+ "loc.messages.FailedToApplyTransformationReason1": "1. La transformation est-elle déjà appliquée pour le package MSBuild généré durant la build ? Si la réponse est oui, supprimez la balise pour chaque configuration dans le fichier csproj, puis effectuez une regénération. ",
+ "loc.messages.FailedToApplyTransformationReason2": "2. Vérifiez que le fichier config et les fichiers de transformation sont présents dans le même dossier à l'intérieur du package.",
+ "loc.messages.AutoParameterizationMessage": "Les attributs de ConnectionString dans Web.config sont paramétrables par défaut. Notez que la transformation n'a aucun effet sur les attributs de connectionString, car la valeur est remplacée durant le déploiement par les fichiers 'Parameters.xml' ou 'SetParameters.xml'. Vous pouvez désactiver le paramétrage automatique en définissant /p:AutoParameterizationWebConfigConnectionStrings=False durant la génération du package MSBuild.",
+ "loc.messages.UnsupportedAppType": "Le type d'application '%s' n'est pas pris en charge dans la génération de Web.config. Les valeurs valides pour '-appType' sont : 'python_Bottle', 'python_Django', 'python_Flask' et 'node'",
+ "loc.messages.UnableToFetchAuthorityURL": "Impossible de récupérer (fetch) l'URL d'autorité.",
+ "loc.messages.UnableToFetchActiveDirectory": "Impossible de récupérer (fetch) l'ID de ressource Active Directory.",
+ "loc.messages.SuccessfullyUpdatedRuntimeStackAndStartupCommand": "Mise à jour réussie de la pile d'exécution et de la commande de démarrage.",
+ "loc.messages.FailedToUpdateRuntimeStackAndStartupCommand": "Échec de la mise à jour de la pile d'exécution et de la commande de démarrage. Erreur : %s.",
+ "loc.messages.SuccessfullyUpdatedWebAppSettings": "Mise à jour réussie des paramètres de l'application.",
+ "loc.messages.FailedToUpdateAppSettingsInConfigDetails": "Échec de la mise à jour des paramètres de l'application. Erreur : %s.",
+ "loc.messages.UnableToGetAzureRMWebAppMetadata": "Échec de la récupération (fetch) des métadonnées de la WebApp AzureRM. ErrorCode : %s",
+ "loc.messages.UnableToUpdateAzureRMWebAppMetadata": "Impossible de mettre à jour les métadonnées de la WebApp AzureRM. Code d'erreur : %s",
+ "loc.messages.Unabletoretrieveazureregistrycredentials": "Impossible de récupérer les informations d'identification d'Azure Container Registry.[Code d'état : '%s']",
+ "loc.messages.UnableToReadResponseBody": "Impossible de lire le corps de la réponse. Erreur : %s",
+ "loc.messages.UnableToUpdateWebAppConfigDetails": "Impossible de mettre à jour les détails de configuration de la WebApp. StatusCode : '%s'",
+ "loc.messages.AddingReleaseAnnotation": "Ajout d'une annotation de mise en production pour la ressource Application Insights '%s'",
+ "loc.messages.SuccessfullyAddedReleaseAnnotation": "Ajout réussi de l'annotation de mise en production à Application Insight : %s",
+ "loc.messages.FailedAddingReleaseAnnotation": "Échec de l'ajout de l'annotation de mise en production. %s",
+ "loc.messages.RenameLockedFilesEnabled": "Le renommage des fichiers verrouillés est activé pour App Service.",
+ "loc.messages.FailedToEnableRenameLockedFiles": "Échec de l'activation du renommage des fichiers verrouillés. Erreur : %s",
+ "loc.messages.WebJobsInProgressIssue": "Un petit nombre de WebJobs à l'état en cours d'exécution empêchent le processus de déploiement de supprimer les fichiers. Désactivez l'option Supprimer les fichiers supplémentaires à l'emplacement de destination, ou arrêtez les travaux continus avant le déploiement.",
+ "loc.messages.FailedToFetchKuduAppSettings": "Échec de la récupération (fetch) des paramètres d'application Kudu. Erreur : %s",
+ "loc.messages.FailedToCreatePath": "Échec de la création du chemin '%s' à partir de Kudu. Erreur : %s",
+ "loc.messages.FailedToDeleteFile": "Échec de la suppression du fichier '%s/%s' à partir de Kudu. Erreur : %s",
+ "loc.messages.FailedToDeleteFolder": "Échec de la suppression du dossier '%s' dans Kudu. Erreur : %s",
+ "loc.messages.FailedToUploadFile": "Échec du chargement du fichier '%s/%s' à partir de Kudu. Erreur : %s",
+ "loc.messages.FailedToGetFileContent": "Échec de l'obtention du contenu du fichier '%s/%s' à partir de Kudu. Erreur : %s",
+ "loc.messages.FailedToListPath": "Échec du listage du chemin '%s' à partir de Kudu. Erreur : %s",
+ "loc.messages.RetryToDeploy": "Nouvelle tentative de déploiement du package.",
+ "loc.messages.FailedToGetAppServiceDetails": "Échec de la récupération (fetch) des détails de l'App Service '%s'. Erreur : %s",
+ "loc.messages.FailedToGetAppServicePublishingProfile": "Échec de la récupération (fetch) du profil de publication de l'App Service '%s'. Erreur : %s",
+ "loc.messages.FailedToUpdateAppServiceMetadata": "Échec de la mise à jour des métadonnées de l'App Service '%s'. Erreur : %s",
+ "loc.messages.FailedToGetAppServiceMetadata": "Échec de l'obtention des métadonnées de l'App Service '%s'. Erreur : %s",
+ "loc.messages.FailedToPatchAppServiceConfiguration": "Échec de l'application du correctif à la configuration de l'App Service '%s'. Erreur : %s",
+ "loc.messages.FailedToUpdateAppServiceConfiguration": "Échec de la mise à jour de la configuration de l'App Service '%s'. Erreur : %s",
+ "loc.messages.FailedToGetAppServiceConfiguration": "Échec de l'obtention de la configuration de l'App Service '%s'. Erreur : %s",
+ "loc.messages.FailedToGetAppServicePublishingCredentials": "Échec de la récupération (fetch) des informations d'identification de publication de l'App Service '%s'. Erreur : %s",
+ "loc.messages.FailedToGetAppServiceApplicationSettings": "Échec de l'obtention des paramètres d'application de l'App Service '%s'. Erreur : %s",
+ "loc.messages.FailedToUpdateAppServiceApplicationSettings": "Échec de la mise à jour des paramètres d'application de l'App Service '%s'. Erreur : %s",
+ "loc.messages.UpdatingAppServiceConfigurationSettings": "Tentative de mise à jour des paramètres de configuration d'App Service. Données : %s",
+ "loc.messages.UpdatedAppServiceConfigurationSettings": "Mise à jour effectuée des paramètres de configuration d'App Service.",
+ "loc.messages.UpdatedAppServiceApplicationSettings": "Mise à jour effectuée des paramètres d'application d'App Service et des paramètres d'application de Kudu.",
+ "loc.messages.MultipleResourceGroupFoundForAppService": "Plusieurs groupes de ressources trouvés pour l'App Service '%s'.",
+ "loc.messages.PackageDeploymentUsingZipDeployFailed": "Échec du déploiement de package à l'aide de ZIP Deploy. Pour plus d'informations, consultez les journaux.",
+ "loc.messages.PackageDeploymentInitiated": "Déploiement de package avec ZIP Deploy lancé.",
+ "loc.messages.WarPackageDeploymentInitiated": "Lancement effectué du déploiement de package à l'aide de WAR Deploy.",
+ "loc.messages.FailedToGetDeploymentLogs": "Échec de l'obtention des journaux de déploiement. Erreur : %s",
+ "loc.messages.GoExeNameNotPresent": "Nom de l’exe Go absent",
+ "loc.messages.WarDeploymentRetry": "Nouvelle tentative de déploiement du fichier war, car il ne s'est pas décompressé correctement.",
+ "loc.messages.Updatemachinetoenablesecuretlsprotocol": "Assurez-vous que l'ordinateur utilise le protocole TLS 1.2 ou ultérieur. Consultez https://aka.ms/enableTlsv2 pour plus d'informations sur l'activation de TLS sur votre ordinateur.",
+ "loc.messages.CouldNotFetchAccessTokenforAzureStatusCode": "Impossible de récupérer (fetch) le jeton d'accès pour Azure. Code d'état : %s, message d'état : %s",
+ "loc.messages.CouldNotFetchAccessTokenforMSIDueToMSINotConfiguredProperlyStatusCode": "Impossible de récupérer (fetch) le jeton d'accès pour le principal du service managé. Configurez MSI (Managed Service Identity) pour la machine virtuelle 'https://aka.ms/azure-msi-docs'. Code d'état : %s, message d'état : %s",
+ "loc.messages.CouldNotFetchAccessTokenforMSIStatusCode": "Impossible de récupérer (fetch) le jeton d'accès pour le principal du service managé. Code d'état : %s, message d'état : %s",
+ "loc.messages.XmlParsingFailed": "Impossible d'analyser le fichier publishProfileXML. Erreur : %s",
+ "loc.messages.PropertyDoesntExistPublishProfile": "[%s] La propriété n'existe pas dans le profil de publication",
+ "loc.messages.InvalidConnectionType": "Type de connexion de service non valide",
+ "loc.messages.InvalidImageSourceType": "Type de source d'image non valide",
+ "loc.messages.InvalidPublishProfile": "Le fichier de profil de publication est non valide.",
+ "loc.messages.ASE_SSLIssueRecommendation": "Pour utiliser un certificat dans App Service, celui-ci doit être signé par une autorité de certification de confiance. Si votre application web génère des erreurs de validation de certificat, cela signifie probablement que vous utilisez un certificat auto-signé. Pour résoudre ces erreurs, vous devez affecter la valeur true à une variable nommée VSTS_ARM_REST_IGNORE_SSL_ERRORS dans le pipeline de build ou le pipeline de mise en production",
+ "loc.messages.ZipDeployLogsURL": "Les journaux Zip Deploy peuvent être consultés sur %s",
+ "loc.messages.DeployLogsURL": "Les journaux de déploiement peuvent être consultés sur %s",
+ "loc.messages.AppServiceApplicationURL": "URL d'application App Service : %s",
+ "loc.messages.ASE_WebDeploySSLIssueRecommendation": "Pour utiliser un certificat dans App Service, celui-ci doit être signé par une autorité de certification de confiance. Si votre application web génère des erreurs de validation de certificat, cela signifie probablement que vous utilisez un certificat auto-signé. Pour résoudre ces erreurs, vous devez passer -allowUntrusted dans des arguments supplémentaires de l'option Web Deploy.",
+ "loc.messages.FailedToGetResourceID": "Échec de l'obtention de l'ID de ressource pour le type de ressource '%s' et le nom de ressource '%s'. Erreur : %s",
+ "loc.messages.JarPathNotPresent": "Le chemin du fichier jar Java n'est pas présent",
+ "loc.messages.FailedToUpdateApplicationInsightsResource": "Échec de la mise à jour de la ressource Application Insights '%s'. Erreur : %s",
+ "loc.messages.InvalidDockerImageName": "Le nom fourni pour l'image Docker Hub est non valide.",
+ "loc.messages.MsBuildPackageNotSupported": "Le déploiement du package généré par msBuild n'est pas pris en charge. Changez le format du package, ou utilisez la tâche de déploiement Azure App Service."
+}
\ No newline at end of file
diff --git a/_generated/AzureWebAppV1/Strings/resources.resjson/it-IT/resources.resjson b/_generated/AzureWebAppV1/Strings/resources.resjson/it-IT/resources.resjson
new file mode 100644
index 000000000000..85559afdd605
--- /dev/null
+++ b/_generated/AzureWebAppV1/Strings/resources.resjson/it-IT/resources.resjson
@@ -0,0 +1,184 @@
+{
+ "loc.friendlyName": "App Web di Azure",
+ "loc.helpMarkDown": "[Altre informazioni su questa attività](https://aka.ms/azurewebappdeployreadme)",
+ "loc.description": "Distribuisce un'app Web di Azure per Linux o Windows",
+ "loc.instanceNameFormat": "Distribuzione app Web di Azure: $(appName)",
+ "loc.group.displayName.AdditionalDeploymentOptions": "Opzioni di distribuzione aggiuntive",
+ "loc.group.displayName.ApplicationAndConfigurationSettings": "Impostazioni applicazione e configurazione",
+ "loc.input.label.azureSubscription": "Sottoscrizione di Azure",
+ "loc.input.help.azureSubscription": "Consente di selezionare la sottoscrizione di Azure Resource Manager per la distribuzione.",
+ "loc.input.label.appType": "Tipo di app",
+ "loc.input.label.appName": "Nome dell'app",
+ "loc.input.help.appName": "Consente di immettere o selezionare il nome di un servizio app di Azure. Verranno elencati solo i servizi app basati sul tipo di app selezionato.",
+ "loc.input.label.deployToSlotOrASE": "Distribuisci nello slot o nell'ambiente del servizio app",
+ "loc.input.help.deployToSlotOrASE": "Consente di selezionare l'opzione per la distribuzione in uno slot di distribuzione esistente o in un ambiente del servizio app di Azure. Per entrambe le destinazioni l'attività richiede il nome del gruppo di risorse. Se la destinazione di distribuzione è uno slot, per impostazione predefinita la distribuzione viene eseguita nello slot di produzione. È anche possibile specificare qualsiasi altro nome di slot esistente. Se la destinazione di distribuzione è un ambiente del servizio app di Azure, lasciare il nome dello slot impostato su 'produzione' e specificare solo il nome del gruppo di risorse.",
+ "loc.input.label.resourceGroupName": "Gruppo di risorse",
+ "loc.input.help.resourceGroupName": "Il nome del gruppo di risorse è obbligatorio quando la destinazione di distribuzione è uno slot di distribuzione o un ambiente del servizio app. Immettere o selezionare il gruppo di risorse di Azure che contiene il servizio app di Azure specificato sopra.",
+ "loc.input.label.slotName": "Slot",
+ "loc.input.help.slotName": "Immettere o selezionare uno slot esistente diverso da quello di produzione.",
+ "loc.input.label.package": "Pacchetto o cartella",
+ "loc.input.help.package": "Percorso file del pacchetto o di una cartella che include il contenuto del servizio app generato da MSBuild oppure un file WAR o ZIP compresso. Variabili ( [Compilazione](https://docs.microsoft.com/vsts/pipelines/build/variables) | [Versione](https://docs.microsoft.com/vsts/pipelines/release/variables#default-variables)). I caratteri jolly sono supportati. Ad esempio, $(System.DefaultWorkingDirectory)/\\*\\*/\\*.zip o $(System.DefaultWorkingDirectory)/\\*\\*/\\*.war.",
+ "loc.input.label.customDeployFolder": "Cartella di distribuzione personalizzata",
+ "loc.input.help.customDeployFolder": "Consente di specificare il nome della cartella personalizzata in cui eseguire la distribuzione. Se il campo è vuoto, il pacchetto viene distribuito in .azurewebsites.net/ Se si immette ROOT, il pacchetto viene distribuito in .azurewebsited.net In caso contrario, viene distribuito in .azurewebsited.net/",
+ "loc.input.label.runtimeStack": "Stack di runtime",
+ "loc.input.label.startUpCommand": "Comando di avvio ",
+ "loc.input.help.startUpCommand": "Immettere il comando di avvio, ad esempio dotnet exec filename.dll dotnet filename.dll",
+ "loc.input.label.customWebConfig": "Genera i parametri di web.config per app Python, Node.js, Go e Java",
+ "loc.input.help.customWebConfig": "Verrà generato un file Web.config standard che verrà distribuito nel servizio app di Azure, se non è disponibile per l'applicazione. I valori presenti nel file Web.config sono modificabili e possono variare a seconda del framework dell'applicazione. Ad esempio, per l'applicazione node.js il file Web.config includerà i valori per il file di avvio e il modulo iis_node. Questa funzionalità di modifica è utilizzabile solo per il file Web.config generato. [Altre informazioni](https://go.microsoft.com/fwlink/?linkid=843469).",
+ "loc.input.label.appSettings": "Impostazioni app",
+ "loc.input.help.appSettings": "Consente di modificare le impostazioni applicazione dell'app Web successive al valore -key della sintassi. Il valore che contiene spazi deve essere racchiuso tra virgolette. Esempio: -Port 5000 -RequestTimeout 5000 -WEBSITE_TIME_ZONE \"Ora solare fuso orientale\"",
+ "loc.input.label.configurationStrings": "Impostazioni di configurazione",
+ "loc.input.help.configurationStrings": "Consente di modificare le impostazioni di configurazione dell'app Web successive al valore -key della sintassi. Il valore che contiene spazi deve essere racchiuso tra virgolette. Esempio: -phpVersion 5.6 -linuxFxVersion: node|6.11",
+ "loc.input.label.deploymentMethod": "Metodo di distribuzione",
+ "loc.input.help.deploymentMethod": "Consente di scegliere il metodo di distribuzione per l'app.",
+ "loc.messages.Invalidwebapppackageorfolderpathprovided": "Il percorso specificato per il pacchetto o la cartella del servizio app non è valido: %s",
+ "loc.messages.SetParamFilenotfound0": "Il file dei parametri del set non è stato trovato: %s",
+ "loc.messages.XDTTransformationsappliedsuccessfully": "Le trasformazioni XML sono state applicate",
+ "loc.messages.GotconnectiondetailsforazureRMWebApp0": "I dettagli della connessione al servizio per il servizio app di Azure sono stati recuperati: '%s'",
+ "loc.messages.ErrorNoSuchDeployingMethodExists": "Errore: non esiste alcun metodo di distribuzione di questo tipo",
+ "loc.messages.UnabletoretrieveconnectiondetailsforazureRMWebApp": "Non è possibile recuperare i dettagli della connessione al servizio per il servizio app di Azure: %s. Codice di stato: %s (%s)",
+ "loc.messages.UnabletoretrieveResourceID": "Non è possibile recuperare i dettagli della connessione al servizio per la risorsa di Azure '%s'. Codice di stato: %s",
+ "loc.messages.Successfullyupdateddeploymenthistory": "L'aggiornamento della cronologia di distribuzione all'indirizzo %s è stato completato",
+ "loc.messages.Failedtoupdatedeploymenthistory": "Non è stato possibile aggiornare la cronologia di distribuzione. Errore: %s",
+ "loc.messages.WARNINGCannotupdatedeploymentstatusSCMendpointisnotenabledforthiswebsite": "AVVISO: non è possibile aggiornare lo stato di distribuzione. L'endpoint di Gestione controllo del codice sorgente non è abilitato per questo sito Web",
+ "loc.messages.Unabletoretrievewebconfigdetails": "Non è possibile recuperare i dettagli di configurazione del servizio app. Codice di stato: '%s'",
+ "loc.messages.Unabletoretrievewebappsettings": "Non è possibile recuperare le impostazioni dell'applicazione del servizio app. [Codice di stato: '%s'. Messaggio di errore: '%s']",
+ "loc.messages.Unabletoupdatewebappsettings": "Non è possibile aggiornare le impostazioni dell'applicazione del servizio app. Codice di stato: '%s'",
+ "loc.messages.CannotupdatedeploymentstatusuniquedeploymentIdCannotBeRetrieved": "Non è possibile aggiornare lo stato di distribuzione. L'ID distribuzione univoco non è stato recuperato",
+ "loc.messages.PackageDeploymentSuccess": "Il pacchetto Web è stato distribuito nel servizio app.",
+ "loc.messages.PackageDeploymentFailed": "Non è stato possibile distribuire il pacchetto Web nel servizio app.",
+ "loc.messages.Runningcommand": "Esecuzione del comando: %s",
+ "loc.messages.Deployingwebapplicationatvirtualpathandphysicalpath": "Distribuzione del pacchetto Web %s nel percorso virtuale (percorso fisico) %s (%s)",
+ "loc.messages.Successfullydeployedpackageusingkuduserviceat": "La distribuzione del pacchetto %s con il servizio Kudu all'indirizzo %s è riuscita",
+ "loc.messages.Failedtodeploywebapppackageusingkuduservice": "Non è stato possibile distribuire il pacchetto del servizio app con il servizio Kudu: %s",
+ "loc.messages.Unabletodeploywebappresponsecode": "Non è possibile distribuire il servizio app a causa del codice errore: %s",
+ "loc.messages.MSDeploygeneratedpackageareonlysupportedforWindowsplatform": "I pacchetti generati da MSDeploy sono supportati solo per la piattaforma Windows.",
+ "loc.messages.UnsupportedinstalledversionfoundforMSDeployversionshouldbeatleast3orabove": "La versione installata non è supportata. La versione trovata per MSDeploy è %s, ma deve essere almeno 3 o successiva",
+ "loc.messages.UnabletofindthelocationofMSDeployfromregistryonmachineError": "Il percorso di MSDeploy non è stato trovato dal Registro di sistema nel computer (errore: %s)",
+ "loc.messages.Nopackagefoundwithspecifiedpattern": "Non è stato trovato alcun pacchetto con il criterio specificato: %s Verificare se il pacchetto menzionato nell'attività viene pubblicato come artefatto nella compilazione o in una fase precedente e quindi scaricato nel processo corrente.",
+ "loc.messages.MorethanonepackagematchedwithspecifiedpatternPleaserestrainthesearchpattern": "Più pacchetti corrispondono al criterio specificato %s. Restringere i criteri di ricerca.",
+ "loc.messages.Trytodeploywebappagainwithappofflineoptionselected": "Provare a distribuire di nuovo il servizio app dopo aver selezionato l'opzione Porta l'applicazione offline.",
+ "loc.messages.Trytodeploywebappagainwithrenamefileoptionselected": "Provare a distribuire di nuovo il servizio app dopo aver selezionato l'opzione Rinomina i file bloccati.",
+ "loc.messages.NOJSONfilematchedwithspecificpattern": "Non sono stati trovati file JSON corrispondenti al criterio specificato: %s.",
+ "loc.messages.Configfiledoesntexists": "Il file di configurazione %s non esiste.",
+ "loc.messages.Failedtowritetoconfigfilewitherror": "Non è stato possibile scrivere nel file config %s. Errore: %s",
+ "loc.messages.AppOfflineModeenabled": "La modalità offline dell'app è abilitata.",
+ "loc.messages.Failedtoenableappofflinemode": "Non è stato possibile abilitare la modalità offline dell'app. Codice di stato: %s (%s)",
+ "loc.messages.AppOflineModedisabled": "La modalità offline dell'app è disabilitata.",
+ "loc.messages.FailedtodisableAppOfflineMode": "Non è stato possibile disabilitare la modalità offline dell'app. Codice di stato: %s (%s)",
+ "loc.messages.CannotPerformXdtTransformationOnNonWindowsPlatform": "Non è possibile eseguire trasformazioni XML su una piattaforma non Windows.",
+ "loc.messages.XdtTransformationErrorWhileTransforming": "Si è verificato un errore di trasformazione XML durante la trasformazione di %s con %s.",
+ "loc.messages.PublishusingwebdeployoptionsaresupportedonlywhenusingWindowsagent": "Le opzioni di pubblicazione con Distribuzione Web sono supportate solo quando si usa l'agente Windows",
+ "loc.messages.Publishusingzipdeploynotsupportedformsbuildpackage": "La pubblicazione con l'opzione zipdeploy non è supportata per il tipo di pacchetto msBuild.",
+ "loc.messages.Publishusingzipdeploynotsupportedforvirtualapplication": "La pubblicazione con l'opzione zipdeploy non è supportata per l'applicazione virtuale.",
+ "loc.messages.Publishusingzipdeploydoesnotsupportwarfile": "Se si pubblica usando le opzioni zipdeploy o RunFromZip, la distribuzione di file war non è supportata.",
+ "loc.messages.Publishusingrunfromzipwithpostdeploymentscript": "Se si pubblica usando RunFromZip, è possibile che lo script post-distribuzione non sia supportato se apporta modifiche a wwwroot perché la cartella è di sola lettura.",
+ "loc.messages.ResourceDoesntExist": "La risorsa '%s' non esiste. La risorsa deve esistere prima della distribuzione.",
+ "loc.messages.EncodeNotSupported": "La codifica rilevata del file %s è %s. La sostituzione delle variabili non è supportata con la codifica file %s. Le codifiche supportate sono UTF-8 e UTF-16 LE.",
+ "loc.messages.UnknownFileEncodeError": "Non è possibile rilevare la codifica del file %s (typeCode: %s). Le codifiche supportate sono UTF-8 e UTF-16 LE.",
+ "loc.messages.ShortFileBufferError": "Il buffer di file è troppo piccolo per il rilevamento del tipo di codifica: %s",
+ "loc.messages.FailedToUpdateAzureRMWebAppConfigDetails": "Non è stato possibile aggiornare i dettagli della configurazione del servizio app. Errore: %s",
+ "loc.messages.SuccessfullyUpdatedAzureRMWebAppConfigDetails": "I dettagli della configurazione del servizio app sono stati aggiornati",
+ "loc.messages.RequestedURLforkuduphysicalpath": "È stato richiesto l'URL per il percorso fisico di Kudu: %s",
+ "loc.messages.Physicalpathalreadyexists": "Il percorso fisico '%s' esiste già",
+ "loc.messages.KuduPhysicalpathCreatedSuccessfully": "Il percorso fisico di Kudu è stato creato: %s",
+ "loc.messages.FailedtocreateKuduPhysicalPath": "Non è stato possibile creare il percorso fisico di Kudu. Errore: %s",
+ "loc.messages.FailedtocheckphysicalPath": "Non è stato possibile verificare il percorso fisico di Kudu. Codice errore: %s",
+ "loc.messages.VirtualApplicationDoesNotExist": "L'applicazione virtuale non esiste: %s",
+ "loc.messages.JSONParseError": "Non è possibile analizzare il file JSON: %s. Errore: %s",
+ "loc.messages.JSONvariablesubstitutionappliedsuccessfully": "La sostituzione di variabili JSON è stata applicata.",
+ "loc.messages.XMLvariablesubstitutionappliedsuccessfully": "La sostituzione di variabili XML è stata applicata.",
+ "loc.messages.failedtoUploadFileToKudu": "Non è possibile caricare il file %s in Kudu (%s). Codice di stato: %s",
+ "loc.messages.failedtoUploadFileToKuduError": "Non è stato possibile caricare il file %s in Kudu (%s). Errore: %s",
+ "loc.messages.ExecuteScriptOnKudu": "Esecuzione dello script specificato nel servizio Kudu.",
+ "loc.messages.FailedToRunScriptOnKuduError": "Non è possibile eseguire lo script nel servizio Kudu. Errore: %s",
+ "loc.messages.FailedToRunScriptOnKudu": "Non è possibile eseguire lo script in Kudu: %s. Codice di stato: %s",
+ "loc.messages.ScriptExecutionOnKuduSuccess": "Lo script è stato eseguito in Kudu.",
+ "loc.messages.ScriptExecutionOnKuduFailed": "Il codice restituito dallo script eseguito è '%s'. Errore: %s",
+ "loc.messages.FailedtoDeleteFileFromKudu": "Non è possibile eliminare il file %s da Kudu (%s). Codice di stato: %s",
+ "loc.messages.FailedtoDeleteFileFromKuduError": "Non è possibile eliminare il file %s da Kudu (%s). Errore: %s",
+ "loc.messages.ScriptFileNotFound": "Il file di script '%s' non è stato trovato.",
+ "loc.messages.InvalidScriptFile": "Il file di script specificato '%s' non è valido. Le estensioni valide sono bat e cmd per Windows e sh per Linux",
+ "loc.messages.RetryForTimeoutIssue": "L'esecuzione dello script non è riuscita a causa del timeout. Verrà effettuato un nuovo tentativo.",
+ "loc.messages.stdoutFromScript": "Output standard dello script: ",
+ "loc.messages.stderrFromScript": "Errore standard dello script: ",
+ "loc.messages.WebConfigAlreadyExists": "Il file Web.config esiste già e non verrà generato.",
+ "loc.messages.SuccessfullyGeneratedWebConfig": "Il file Web.config è stato generato",
+ "loc.messages.FailedToGenerateWebConfig": "Non è stato possibile generare il file Web.config. %s",
+ "loc.messages.FailedToGetKuduFileContent": "Non è possibile recuperare il contenuto del file: %s. Codice di stato: %s (%s)",
+ "loc.messages.FailedToGetKuduFileContentError": "Non è possibile recuperare il contenuto del file: %s. Errore: %s",
+ "loc.messages.ScriptStatusTimeout": "Non è possibile recuperare lo stato dello script a causa del timeout.",
+ "loc.messages.PollingForFileTimeOut": "Non è possibile recuperare lo stato dello script a causa del timeout. È possibile aumentare il limite di timeout impostando la variabile 'appservicedeploy.retrytimeout' sul numero di minuti necessari.",
+ "loc.messages.InvalidPollOption": "L'opzione di polling specificata %s non è valida.",
+ "loc.messages.MissingAppTypeWebConfigParameters": "Nei parametri di Web.config manca l'attributo '-appType'. I valori validi per '-appType' sono: 'python_Bottle', 'python_Django', 'python_Flask', 'node' e 'Go'. Esempio: '-appType python_Bottle' (senza virgolette) nel caso del framework Python Bottle.",
+ "loc.messages.AutoDetectDjangoSettingsFailed": "Il percorso del file 'settings.py' di DJANGO_SETTINGS_MODULE non è stato rilevato. Assicurarsi che il file 'settings.py' sia esistente oppure specificare il percorso corretto nel campo di input del parametro di Web.config nel formato seguente: '-DJANGO_SETTINGS_MODULE .settings'",
+ "loc.messages.FailedToApplyTransformation": "Non è possibile applicare la trasformazione per il pacchetto specificato. Eseguire le verifiche seguenti.",
+ "loc.messages.FailedToApplyTransformationReason1": "1. Verificare se la trasformazione è già stata applicata per il pacchetto generato da MSBuild durante la compilazione. In caso affermativo, rimuovere il tag per ogni file config nel file csproj e ricompilare. ",
+ "loc.messages.FailedToApplyTransformationReason2": "2. Assicurarsi che il file config e i file di trasformazione siano presenti nella stessa cartella all'interno del pacchetto.",
+ "loc.messages.AutoParameterizationMessage": "Per impostazione predefinita, agli attributi di ConnectionString in Web.config sono associati parametri. Si noti che la trasformazione non ha effetto sugli attributi di ConnectionString perché durante la distribuzione il valore viene sostituito dai file 'Parameters.xml' o 'SetParameters.xml'. Per disabilitare l'aggiunta automatica di parametri, impostare /p:AutoParameterizationWebConfigConnectionStrings=False durante la generazione del pacchetto MSBuild.",
+ "loc.messages.UnsupportedAppType": "Il tipo di app '%s' non è supportato nella generazione di Web.config. I valori validi per '-appType' sono: 'python_Bottle', 'python_Django', 'python_Flask' e 'node'",
+ "loc.messages.UnableToFetchAuthorityURL": "Non è possibile recuperare l'URL dell'autorità.",
+ "loc.messages.UnableToFetchActiveDirectory": "Non è possibile recuperare l'ID risorsa di Active Directory.",
+ "loc.messages.SuccessfullyUpdatedRuntimeStackAndStartupCommand": "Lo stack di runtime e il comando di avvio sono stati aggiornati.",
+ "loc.messages.FailedToUpdateRuntimeStackAndStartupCommand": "Non è stato possibile aggiornare lo stack di runtime e il comando di avvio. Errore: %s.",
+ "loc.messages.SuccessfullyUpdatedWebAppSettings": "Le impostazioni dell'app sono state aggiornate.",
+ "loc.messages.FailedToUpdateAppSettingsInConfigDetails": "Non è stato possibile aggiornare le impostazioni dell'app. Errore: %s.",
+ "loc.messages.UnableToGetAzureRMWebAppMetadata": "Non è stato possibile recuperare i metadati dell'app Web AzureRM. Codice errore: %s",
+ "loc.messages.UnableToUpdateAzureRMWebAppMetadata": "Non è possibile aggiornare i metadati dell'app Web di AzureRM. Codice errore: %s",
+ "loc.messages.Unabletoretrieveazureregistrycredentials": "Non è possibile recuperare le credenziali di Registro Azure Container. [Codice di stato: '%s']",
+ "loc.messages.UnableToReadResponseBody": "Non è possibile leggere il corpo della risposta. Errore: %s",
+ "loc.messages.UnableToUpdateWebAppConfigDetails": "Non è possibile aggiornare i dettagli di configurazione dell'app Web. Codice di stato: '%s'",
+ "loc.messages.AddingReleaseAnnotation": "Aggiunta dell'annotazione versione per la risorsa '%s' di Application Insights",
+ "loc.messages.SuccessfullyAddedReleaseAnnotation": "L'annotazione versione è stata aggiunta alla risorsa di Application Insights: %s",
+ "loc.messages.FailedAddingReleaseAnnotation": "Non è stato possibile aggiungere l'annotazione versione. %s",
+ "loc.messages.RenameLockedFilesEnabled": "La ridenominazione dei file bloccati è abilitata per il servizio app.",
+ "loc.messages.FailedToEnableRenameLockedFiles": "Non è stato possibile abilitare la ridenominazione de file bloccati. Errore: %s",
+ "loc.messages.WebJobsInProgressIssue": "Qualche processo Web nello stato in esecuzione impedisce alla distribuzione di rimuovere i file. È possibile disabilitare l'opzione 'Rimuovi file aggiuntivi nella destinazione' oppure arrestare i processi continui prima della distribuzione.",
+ "loc.messages.FailedToFetchKuduAppSettings": "Non è stato possibile recuperare le impostazioni dell'app Kudu. Errore: %s",
+ "loc.messages.FailedToCreatePath": "Non è stato possibile creare il percorso '%s' da Kudu. Errore: %s",
+ "loc.messages.FailedToDeleteFile": "Non è stato possibile eliminare il file '%s/%s' da Kudu. Errore: %s",
+ "loc.messages.FailedToDeleteFolder": "Non è stato possibile eliminare la cartella '%s' da Kudu. Errore: %s",
+ "loc.messages.FailedToUploadFile": "Non è stato possibile caricare il file '%s/%s' da Kudu. Errore: %s",
+ "loc.messages.FailedToGetFileContent": "Non è stato possibile ottenere il contenuto '%s/%s' del file da Kudu. Errore: %s",
+ "loc.messages.FailedToListPath": "Non è stato possibile elencare il percorso '%s' da Kudu. Errore: %s",
+ "loc.messages.RetryToDeploy": "Verrà effettuato un nuovo tentativo di distribuzione del pacchetto.",
+ "loc.messages.FailedToGetAppServiceDetails": "Non è stato possibile recuperare i dettagli del servizio app '%s'. Errore: %s",
+ "loc.messages.FailedToGetAppServicePublishingProfile": "Non è stato possibile recuperare il profilo di pubblicazione del servizio app '%s'. Errore: %s",
+ "loc.messages.FailedToUpdateAppServiceMetadata": "Non è stato possibile aggiornare i metadati del servizio app '%s'. Errore: %s",
+ "loc.messages.FailedToGetAppServiceMetadata": "Non è stato possibile ottenere i metadati del servizio app '%s'. Errore: %s",
+ "loc.messages.FailedToPatchAppServiceConfiguration": "Non è stato possibile correggere la configurazione del servizio app '%s'. Errore: %s",
+ "loc.messages.FailedToUpdateAppServiceConfiguration": "Non è stato possibile aggiornare la configurazione del servizio app '%s'. Errore: %s",
+ "loc.messages.FailedToGetAppServiceConfiguration": "Non è stato possibile ottenere la configurazione del servizio app '%s'. Errore: %s",
+ "loc.messages.FailedToGetAppServicePublishingCredentials": "Non è stato possibile recuperare le credenziali di pubblicazione del servizio app '%s'. Errore: %s",
+ "loc.messages.FailedToGetAppServiceApplicationSettings": "Non è stato possibile ottenere le impostazioni applicazione del servizio app '%s'. Errore: %s",
+ "loc.messages.FailedToUpdateAppServiceApplicationSettings": "Non è stato possibile aggiornare le impostazioni applicazione del servizio app '%s'. Errore: %s",
+ "loc.messages.UpdatingAppServiceConfigurationSettings": "Tentativo di aggiornamento delle impostazioni di configurazione del servizio app. Dati: %s",
+ "loc.messages.UpdatedAppServiceConfigurationSettings": "Le impostazioni di configurazione del servizio app sono state aggiornate.",
+ "loc.messages.UpdatedAppServiceApplicationSettings": "Le impostazioni applicazione del servizio app e le impostazioni applicazione di Kudu sono state aggiornate.",
+ "loc.messages.MultipleResourceGroupFoundForAppService": "Sono stati trovati più gruppi di risorse per il servizio app '%s'.",
+ "loc.messages.PackageDeploymentUsingZipDeployFailed": "La distribuzione del pacchetto con zipdeploy non è riuscita. Per maggiori dettagli, vedere i log.",
+ "loc.messages.PackageDeploymentInitiated": "La distribuzione del pacchetto con zipdeploy è stata avviata.",
+ "loc.messages.WarPackageDeploymentInitiated": "La distribuzione del pacchetto con WAR Deploy è stata avviata.",
+ "loc.messages.FailedToGetDeploymentLogs": "Non è stato possibile ottenere i log di distribuzione. Errore: %s",
+ "loc.messages.GoExeNameNotPresent": "Il nome dell'eseguibile Go non è presente",
+ "loc.messages.WarDeploymentRetry": "Verrà effettuato un nuovo tentativo di distribuzione del file WAR perché in precedenza non si è espanso correttamente.",
+ "loc.messages.Updatemachinetoenablesecuretlsprotocol": "Assicurarsi che il computer usi il protocollo TLS 1.2 o superiore. Per altre informazioni su come abilitare TLS nel computer, vedere https://aka.ms/enableTlsv2.",
+ "loc.messages.CouldNotFetchAccessTokenforAzureStatusCode": "Non è stato possibile recuperare il token di accesso per Azure. Codice di stato: %s. Messaggio di stato: %s",
+ "loc.messages.CouldNotFetchAccessTokenforMSIDueToMSINotConfiguredProperlyStatusCode": "Non è stato possibile recuperare il token di accesso per l'entità servizio gestita. Configurare l'identità del servizio gestita per la macchina virtuale 'https://aka.ms/azure-msi-docs'. Codice di stato: %s. Messaggio di stato: %s",
+ "loc.messages.CouldNotFetchAccessTokenforMSIStatusCode": "Non è stato possibile recuperare il token di accesso per l'entità servizio gestita. Codice di stato: %s. Messaggio di stato: %s",
+ "loc.messages.XmlParsingFailed": "Non è possibile analizzare il file XML del profilo di pubblicazione. Errore: %s",
+ "loc.messages.PropertyDoesntExistPublishProfile": "[%s] La proprietà non esiste nel profilo di pubblicazione",
+ "loc.messages.InvalidConnectionType": "Il tipo di connessione al servizio non è valido",
+ "loc.messages.InvalidImageSourceType": "Il tipo di origine immagini non è valido",
+ "loc.messages.InvalidPublishProfile": "Il file del profilo di pubblicazione non è valido.",
+ "loc.messages.ASE_SSLIssueRecommendation": "Per usare un certificato nel servizio app, il certificato deve essere firmato da un'autorità di certificazione attendibile. Se l'app Web restituisce errori di convalida del certificato, è possibile che si stia usando un certificato autofirmato. Per risolvere gli errori, è necessario impostare su true una variabile denominata VSTS_ARM_ARM_REST_IGNORE_SSL_ERRORS nella pipeline di compilazione o versione",
+ "loc.messages.ZipDeployLogsURL": "I log di zipdeploy possono essere visualizzati in %s",
+ "loc.messages.DeployLogsURL": "I log di distribuzione possono essere visualizzati in %s",
+ "loc.messages.AppServiceApplicationURL": "URL dell'applicazione del servizio app: %s",
+ "loc.messages.ASE_WebDeploySSLIssueRecommendation": "Per usare un certificato nel servizio app, il certificato deve essere firmato da un'autorità di certificazione attendibile. Se l'app Web restituisce errori di convalida del certificato, è possibile che si stia usando un certificato autofirmato. Per risolvere gli errori, è necessario passare -allowUntrusted negli argomenti aggiuntivi dell'opzione di distribuzione Web.",
+ "loc.messages.FailedToGetResourceID": "Non è stato possibile ottenere l'ID risorsa per il tipo di risorsa '%s' e il nome di risorsa '%s'. Errore: %s",
+ "loc.messages.JarPathNotPresent": "Il percorso del file jar Java non è presente",
+ "loc.messages.FailedToUpdateApplicationInsightsResource": "Non è stato possibile aggiornare la risorsa '%s' di Application Insights. Errore: %s",
+ "loc.messages.InvalidDockerImageName": "Il nome dell'immagine di Docker Hub specificato non è valido.",
+ "loc.messages.MsBuildPackageNotSupported": "La distribuzione del pacchetto generato da msBuild non è supportata. Modificare il formato del pacchetto oppure usare l'attività Distribuzione Servizio app di Azure."
+}
\ No newline at end of file
diff --git a/_generated/AzureWebAppV1/Strings/resources.resjson/ja-JP/resources.resjson b/_generated/AzureWebAppV1/Strings/resources.resjson/ja-JP/resources.resjson
new file mode 100644
index 000000000000..eff08a5d7f18
--- /dev/null
+++ b/_generated/AzureWebAppV1/Strings/resources.resjson/ja-JP/resources.resjson
@@ -0,0 +1,184 @@
+{
+ "loc.friendlyName": "Azure Web アプリ",
+ "loc.helpMarkDown": "[このタスクの詳細を表示](https://aka.ms/azurewebappdeployreadme)",
+ "loc.description": "Linux または Windows 用の Azure Web App をデプロイします",
+ "loc.instanceNameFormat": "Azure Web App のデプロイ: $(appName)",
+ "loc.group.displayName.AdditionalDeploymentOptions": "追加の配置オプション",
+ "loc.group.displayName.ApplicationAndConfigurationSettings": "アプリケーションと構成の設定",
+ "loc.input.label.azureSubscription": "Azure サブスクリプション",
+ "loc.input.help.azureSubscription": "配置用の Azure Resource Manager サブスクリプションを選択します。",
+ "loc.input.label.appType": "アプリの種類",
+ "loc.input.label.appName": "アプリ名",
+ "loc.input.help.appName": "既存の Azure App Service の名前を入力するか、選択します。選択するアプリの種類に基づく App Service のみが一覧表示されます。",
+ "loc.input.label.deployToSlotOrASE": "スロットまたは App Service Environment に配置する",
+ "loc.input.help.deployToSlotOrASE": "既存の配置スロットまたは Azure App Service Environment に配置するためのオプションを選択します。 どちらのターゲットでも、タスクにはリソース グループ名が必要です。 配置ターゲットがスロットの場合、配置は既定で運用スロットに実施されます。他の既存のスロット名を指定することもできます。 配置ターゲットが Azure App Service Environment の場合、スロット名を 'production' のままにして、リソース グループ名だけを指定します。",
+ "loc.input.label.resourceGroupName": "リソース グループ",
+ "loc.input.help.resourceGroupName": "配置ターゲットが配置スロットまたは App Service Environment の場合、リソース グループ名が必要です。 上記で指定された Azure App Service を含む Azure リソース グループを入力するか選択します。",
+ "loc.input.label.slotName": "スロット",
+ "loc.input.help.slotName": "運用スロット以外の既存のスロットを入力または選択してください。",
+ "loc.input.label.package": "パッケージまたはフォルダー",
+ "loc.input.help.package": "MSBuild で生成されたアプリ サービスのコンテンツが入ったパッケージまたはフォルダー、あるいは圧縮された zip または war ファイルへのファイル パス。 変数 ([ビルド](https://docs.microsoft.com/vsts/pipelines/build/variables) |[リリース](https://docs.microsoft.com/vsts/pipelines/release/variables#default-variables))、ワイルドカードを使用できます。 たとえば、$(System.DefaultWorkingDirectory)/\\*\\*/\\*.zip または $(System.DefaultWorkingDirectory)/\\*\\*/\\*.war。",
+ "loc.input.label.customDeployFolder": "カスタム デプロイ フォルダー",
+ "loc.input.help.customDeployFolder": "デプロイ先のカスタム フォルダー名を指定します。 このフィールドが空の場合、パッケージは .azurewebsites.net/ にデプロイされます ROOT を入力した場合、パッケージは .azurewebsited.net にデプロイされます それ以外の場合は、.azurewebsited.net/ にデプロイされます",
+ "loc.input.label.runtimeStack": "ランタイム スタック",
+ "loc.input.label.startUpCommand": "スタートアップ コマンド ",
+ "loc.input.help.startUpCommand": "スタートアップ コマンドを入力してください。例: dotnet exec filename.dll dotnet filename.dll",
+ "loc.input.label.customWebConfig": "Python、Node.js、Go、Java アプリ向けの web.config パラメーターを生成する",
+ "loc.input.help.customWebConfig": "アプリケーションに web.config がない場合は、標準の web.config が生成され、Azure App Service に配置されます。web.config 内の値は編集可能で、アプリケーション フレームワークに基づいて変えることができます。たとえば、node.js アプリケーションの場合、スタートアップ ファイルと iis_node モジュールの値を web.config 内に設定します。この編集機能は、生成される web.config のためにのみ使用できます。[詳細情報](https://go.microsoft.com/fwlink/?linkid=843469)。",
+ "loc.input.label.appSettings": "アプリ設定",
+ "loc.input.help.appSettings": "構文 -key value の後に続く Web App アプリケーションの設定を編集します。スペースが含まれる値は二重引用符で囲む必要があります。 例: -Port 5000 -RequestTimeout 5000 -WEBSITE_TIME_ZONE \"Eastern Standard Time\"",
+ "loc.input.label.configurationStrings": "構成設定",
+ "loc.input.help.configurationStrings": "構文 -key value の後に続く Web App 構成の設定を編集します。スペースが含まれる値は、二重引用符で囲む必要があります。 例: -phpVersion 5.6 -linuxFxVersion: node|6.11",
+ "loc.input.label.deploymentMethod": "デプロイ方法",
+ "loc.input.help.deploymentMethod": "アプリの配置方法を選択します。",
+ "loc.messages.Invalidwebapppackageorfolderpathprovided": "無効な App Service パッケージまたはフォルダー パスが指定されました: %s",
+ "loc.messages.SetParamFilenotfound0": "Set パラメーター ファイルが見つかりません: %s",
+ "loc.messages.XDTTransformationsappliedsuccessfully": "XML 変換が正常に適用されました",
+ "loc.messages.GotconnectiondetailsforazureRMWebApp0": "Azure App Service のサービス接続の詳細を取得しました: '%s'",
+ "loc.messages.ErrorNoSuchDeployingMethodExists": "エラー: そのような配置方法はありません",
+ "loc.messages.UnabletoretrieveconnectiondetailsforazureRMWebApp": "Azure App Service のサービス接続の詳細を取得できません: %s。状態コード: %s (%s)",
+ "loc.messages.UnabletoretrieveResourceID": "Azure Resource のサービス接続の詳細を取得できません: '%s'。状態コード: %s",
+ "loc.messages.Successfullyupdateddeploymenthistory": "配置履歴が %s で正常に更新されました",
+ "loc.messages.Failedtoupdatedeploymenthistory": "配置履歴を更新できませんでした。エラー: %s",
+ "loc.messages.WARNINGCannotupdatedeploymentstatusSCMendpointisnotenabledforthiswebsite": "警告: 配置状態を更新できません: この Web サイトでは SCM エンドポイントが有効になっていません",
+ "loc.messages.Unabletoretrievewebconfigdetails": "App Service の構成の詳細を取得できません。状態コード: '%s'",
+ "loc.messages.Unabletoretrievewebappsettings": "App Service のアプリケーションの設定を取得できません。[状態コード: '%s'、エラー メッセージ: '%s']",
+ "loc.messages.Unabletoupdatewebappsettings": "App Service のアプリケーションの設定を更新できません。状態コード: '%s'",
+ "loc.messages.CannotupdatedeploymentstatusuniquedeploymentIdCannotBeRetrieved": "配置の状態を更新できません: 一意の配置 ID を取得できません",
+ "loc.messages.PackageDeploymentSuccess": "Web パッケージを App Service に正常に配置できました。",
+ "loc.messages.PackageDeploymentFailed": "Web パッケージを App Service に配置できませんでした。",
+ "loc.messages.Runningcommand": "コマンドを実行しています: %s",
+ "loc.messages.Deployingwebapplicationatvirtualpathandphysicalpath": "Web パッケージ: %s を仮想パス (物理パス) へ配置しています: %s (%s)",
+ "loc.messages.Successfullydeployedpackageusingkuduserviceat": "kudu サービスにより、パッケージ %s が %s に配置されました",
+ "loc.messages.Failedtodeploywebapppackageusingkuduservice": "Kudu サービスを使用して App Service パッケージをデプロイできませんでした: %s",
+ "loc.messages.Unabletodeploywebappresponsecode": "エラー コードにより、App Service を配置できません: %s",
+ "loc.messages.MSDeploygeneratedpackageareonlysupportedforWindowsplatform": "MSDeploy が生成したパッケージは Windows プラットフォームでのみサポートされます。",
+ "loc.messages.UnsupportedinstalledversionfoundforMSDeployversionshouldbeatleast3orabove": "MSDeploy のサポートされていないバージョン: %s がインストールされています。バージョンは 3 以降である必要があります",
+ "loc.messages.UnabletofindthelocationofMSDeployfromregistryonmachineError": "コンピューター上のレジストリから、MS Deploy の場所を特定できません (エラー: %s)",
+ "loc.messages.Nopackagefoundwithspecifiedpattern": "指定されたパターン %s のパッケージが見つかりませんでした タスクに指定されているパッケージがビルドまたは前のステージで成果物として公開されており、現在のジョブにダウンロードされているかどうかをご確認ください。",
+ "loc.messages.MorethanonepackagematchedwithspecifiedpatternPleaserestrainthesearchpattern": "指定したパターンと一致するパッケージが複数あります: %s。検索パターンを絞り込んでください。",
+ "loc.messages.Trytodeploywebappagainwithappofflineoptionselected": "[アプリケーションをオフラインにする] オプションを選択して、もう一度 App Service を配置してください。",
+ "loc.messages.Trytodeploywebappagainwithrenamefileoptionselected": "[ロックされたファイルの名前を変更する] オプションを選択して、もう一度 App Service を配置してください。",
+ "loc.messages.NOJSONfilematchedwithspecificpattern": "指定のパターンと一致する JSON ファイルはありません: %s。",
+ "loc.messages.Configfiledoesntexists": "構成ファイル %s がありません。",
+ "loc.messages.Failedtowritetoconfigfilewitherror": "構成ファイル %s への書き込みに失敗しました。エラー: %s",
+ "loc.messages.AppOfflineModeenabled": "アプリのオフライン モードが有効です。",
+ "loc.messages.Failedtoenableappofflinemode": "アプリのオフライン モードを有効にできませんでした。状態コード: %s (%s)",
+ "loc.messages.AppOflineModedisabled": "アプリのオフライン モードが無効です。",
+ "loc.messages.FailedtodisableAppOfflineMode": "アプリのオフライン モードを無効にできませんでした。状態コード: %s (%s)",
+ "loc.messages.CannotPerformXdtTransformationOnNonWindowsPlatform": "非 Windows プラットフォームでは XML 変換を実行できません。",
+ "loc.messages.XdtTransformationErrorWhileTransforming": "%s の %s による変換中に XML 変換エラーが発生しました。",
+ "loc.messages.PublishusingwebdeployoptionsaresupportedonlywhenusingWindowsagent": "Web 配置オプションによる公開は、Windows エージェントを使用している場合のみサポートされます",
+ "loc.messages.Publishusingzipdeploynotsupportedformsbuildpackage": "zip 配置オプションによる公開は、msBuild パッケージの種類ではサポートされていません。",
+ "loc.messages.Publishusingzipdeploynotsupportedforvirtualapplication": "zip 配置オプションによる公開は、仮想アプリケーションではサポートされていません。",
+ "loc.messages.Publishusingzipdeploydoesnotsupportwarfile": "zip 配置または RunFromZip オプションによる公開は、war ファイルの配置をサポートしていません。",
+ "loc.messages.Publishusingrunfromzipwithpostdeploymentscript": "フォルダーが ReadOnly のため、RunFromZip による公開は、wwwroot に変更を加える場合は配置後スクリプトをサポートしない可能性があります。",
+ "loc.messages.ResourceDoesntExist": "リソース '%s' がありません。リソースは配置前に存在している必要があります。",
+ "loc.messages.EncodeNotSupported": "ファイル %s のファイル エンコードが %s として検出されました。ファイル エンコード %s では変数置換はサポートされていません。サポートされているエンコードは UTF-8 と UTF-16 LE です。",
+ "loc.messages.UnknownFileEncodeError": "ファイル %s (typeCode: %s) のエンコードを検出できません。サポートされているエンコードは UTF-8 および UTF-16 LE です。",
+ "loc.messages.ShortFileBufferError": "ファイル バッファーが短すぎてエンコードの種類を検出できません: %s",
+ "loc.messages.FailedToUpdateAzureRMWebAppConfigDetails": "App Service 構成の詳細を更新できませんでした。エラー: %s",
+ "loc.messages.SuccessfullyUpdatedAzureRMWebAppConfigDetails": "App Service 構成の詳細が正常に更新されました",
+ "loc.messages.RequestedURLforkuduphysicalpath": "Kudu 物理パスに関して URL が要求されました: %s",
+ "loc.messages.Physicalpathalreadyexists": "物理パス '%s' は既に存在しています",
+ "loc.messages.KuduPhysicalpathCreatedSuccessfully": "Kudu 物理パスが正常に作成されました: %s",
+ "loc.messages.FailedtocreateKuduPhysicalPath": "Kudu 物理パスを作成することができませんでした。エラー: %s",
+ "loc.messages.FailedtocheckphysicalPath": "Kudu 物理パスを確認できませんでした。エラー コード: %s",
+ "loc.messages.VirtualApplicationDoesNotExist": "仮想アプリケーションがありません: %s",
+ "loc.messages.JSONParseError": "JSON ファイルを解析できません: %s。エラー: %s",
+ "loc.messages.JSONvariablesubstitutionappliedsuccessfully": "JSON 変数置換が正常に適用されました。",
+ "loc.messages.XMLvariablesubstitutionappliedsuccessfully": "XML 変数の置換が正常に適用されました。",
+ "loc.messages.failedtoUploadFileToKudu": "ファイル %s を Kudu (%s) にアップロードできません。状態コード: %s",
+ "loc.messages.failedtoUploadFileToKuduError": "ファイル %s を Kudu (%s) にアップロードできません。エラー: %s",
+ "loc.messages.ExecuteScriptOnKudu": "指定されたスクリプトを Kudu サービス上で実行しています。",
+ "loc.messages.FailedToRunScriptOnKuduError": "スクリプトを Kudu サービス上で実行できません。エラー: %s",
+ "loc.messages.FailedToRunScriptOnKudu": "スクリプトを Kudu (%s) 上で実行できません。状態コード: %s",
+ "loc.messages.ScriptExecutionOnKuduSuccess": "スクリプトを Kudu 上で正常に実行できました。",
+ "loc.messages.ScriptExecutionOnKuduFailed": "実行したスクリプトからリターン コードとして '%s' が返されました。エラー: %s",
+ "loc.messages.FailedtoDeleteFileFromKudu": "ファイル %s を Kudu (%s) から削除できません。状態コード: %s",
+ "loc.messages.FailedtoDeleteFileFromKuduError": "ファイル %s を Kudu (%s) から削除できません。エラー: %s",
+ "loc.messages.ScriptFileNotFound": "スクリプト ファイル '%s' が見つかりません。",
+ "loc.messages.InvalidScriptFile": "無効なスクリプト ファイル '%s' が指定されました。有効な拡張子は、Windows の場合は .bat と .cmd、Linux の場合は .sh です",
+ "loc.messages.RetryForTimeoutIssue": "タイムアウトの問題でスクリプトを実行できませんでした。もう一度お試しください。",
+ "loc.messages.stdoutFromScript": "スクリプトからの標準出力: ",
+ "loc.messages.stderrFromScript": "スクリプトからの標準エラー出力: ",
+ "loc.messages.WebConfigAlreadyExists": "web.config ファイルは既に存在します。生成しません。",
+ "loc.messages.SuccessfullyGeneratedWebConfig": "web.config ファイルを正常に生成できました",
+ "loc.messages.FailedToGenerateWebConfig": "web.config を生成できませんでした。%s",
+ "loc.messages.FailedToGetKuduFileContent": "ファイルの内容を取得できません: %s。状態コード: %s (%s)",
+ "loc.messages.FailedToGetKuduFileContentError": "ファイルの内容を取得できません: %s。エラー: %s",
+ "loc.messages.ScriptStatusTimeout": "タイムアウトのため、スクリプトの状態をフェッチできません。",
+ "loc.messages.PollingForFileTimeOut": "タイムアウトのため、スクリプトの状態をフェッチできません。タイムアウト制限を延長するには、'appservicedeploy.retrytimeout' 変数を必要な時間 (分) に設定します。",
+ "loc.messages.InvalidPollOption": "指定されたポーリング オプションが無効です: %s。",
+ "loc.messages.MissingAppTypeWebConfigParameters": "属性 '-appType' が Web.config パラメーターにありません。'-appType' に対して有効な値は、'python_Bottle'、'python_Django'、'python_Flask'、'node'、'Go' です。 たとえば、Python Bottle フレームワークの場合は、'-appType python_Bottle' (sans-quotes) を指定します。",
+ "loc.messages.AutoDetectDjangoSettingsFailed": "DJANGO_SETTINGS_MODULE の 'settings.py' ファイル パスを検出できません。'settings.py' ファイルが存在することを確認するか、次の形式で Web.config パラメーター入力に正しいパスを指定してください: '-DJANGO_SETTINGS_MODULE .settings'",
+ "loc.messages.FailedToApplyTransformation": "指定されたパッケージに変換を適用することはできません。次の点をご確認ください。",
+ "loc.messages.FailedToApplyTransformationReason1": "1. ビルド中、MSBuild によって生成されたパッケージに対して変換が既に適用されたかどうか。適用された場合は、csproj ファイル内の各構成の タグを削除してから、リビルドします。",
+ "loc.messages.FailedToApplyTransformationReason2": "2. 構成ファイルと変換ファイルがパッケージ内の同じフォルダーに存在すること。",
+ "loc.messages.AutoParameterizationMessage": "Web.config の ConnectionString 属性は既定でパラメーター化されています。'Parameters.xml' ファイルまたは 'SetParameters.xml' ファイルによって値が配置中に上書きされるため、変換が connectionString 属性に影響を与えることはありません。自動パラメーター化は、MSBuild パッケージの生成中に /p:AutoParameterizationWebConfigConnectionStrings=False のように設定することによって無効にできます。",
+ "loc.messages.UnsupportedAppType": "アプリの種類 '%s' が Web.config 生成でサポートされていません。'-appType' に対して有効な値は、'python_Bottle'、'python_Django'、'python_Flask'、'node' です。",
+ "loc.messages.UnableToFetchAuthorityURL": "機関の URL をフェッチできません。",
+ "loc.messages.UnableToFetchActiveDirectory": "Active Directory リソース ID をフェッチできません。",
+ "loc.messages.SuccessfullyUpdatedRuntimeStackAndStartupCommand": "ランタイム スタックとスタートアップ コマンドが正常に更新されました。",
+ "loc.messages.FailedToUpdateRuntimeStackAndStartupCommand": "ランタイム スタックとスタートアップ コマンドの更新に失敗しました。エラー: %s。",
+ "loc.messages.SuccessfullyUpdatedWebAppSettings": "アプリの設定が正常に更新されました。",
+ "loc.messages.FailedToUpdateAppSettingsInConfigDetails": "アプリ設定の更新に失敗しました。エラー: %s。",
+ "loc.messages.UnableToGetAzureRMWebAppMetadata": "AzureRM WebApp メタデータをフェッチできませんでした。ErrorCode: %s",
+ "loc.messages.UnableToUpdateAzureRMWebAppMetadata": "AzureRM WebApp メタデータを更新できません。エラー コード: %s",
+ "loc.messages.Unabletoretrieveazureregistrycredentials": "Azure コンテナー レジストリの資格情報を取得できません。[状態コード: '%s']",
+ "loc.messages.UnableToReadResponseBody": "応答本文を読み取ることができません。エラー: %s",
+ "loc.messages.UnableToUpdateWebAppConfigDetails": "WebApp 構成の詳細を更新できません。StatusCode: '%s'",
+ "loc.messages.AddingReleaseAnnotation": "Application Insights リソース ’%s’ のリリース コメントを追加しています",
+ "loc.messages.SuccessfullyAddedReleaseAnnotation": "Application Insight にリリース コメントが正常に追加されました: %s",
+ "loc.messages.FailedAddingReleaseAnnotation": "リリース コメントを追加できませんでした。%s",
+ "loc.messages.RenameLockedFilesEnabled": "App Service で [ロックされたファイルの名前を変更する] が有効です。",
+ "loc.messages.FailedToEnableRenameLockedFiles": "[ロックされたファイルの名前を変更する] を有効にできませんでした。エラー: %s",
+ "loc.messages.WebJobsInProgressIssue": "実行状態の Web ジョブが少数あるため、配置でファイルを削除できません。[Remove additional files at destination] (同期先で追加のファイルを削除する) オプションを無効にするか、配置の前に継続ジョブを停止することができます。",
+ "loc.messages.FailedToFetchKuduAppSettings": "Kudu アプリ設定をフェッチできませんでした。エラー: %s",
+ "loc.messages.FailedToCreatePath": "Kudu からパス '%s' を作成することができませんでした。エラー: %s",
+ "loc.messages.FailedToDeleteFile": "Kudu からファイル '%s/%s' を削除することができませんでした。エラー: %s",
+ "loc.messages.FailedToDeleteFolder": "Kudu からフォルダー '%s' を削除できませんでした。エラー: %s",
+ "loc.messages.FailedToUploadFile": "Kudu からファイル '%s/%s' をアップロードできませんでした。エラー: %s",
+ "loc.messages.FailedToGetFileContent": "Kudu からファイル コンテンツ '%s/%s' を取得できませんでした。エラー: %s",
+ "loc.messages.FailedToListPath": "Kudu からパス '%s' の一覧を取得できませんでした。エラー: %s",
+ "loc.messages.RetryToDeploy": "パッケージの配置を再試行しています。",
+ "loc.messages.FailedToGetAppServiceDetails": "App Service '%s' の詳細をフェッチできませんでした。エラー: %s",
+ "loc.messages.FailedToGetAppServicePublishingProfile": "App Service '%s' の公開プロファイルをフェッチできませんでした。エラー: %s",
+ "loc.messages.FailedToUpdateAppServiceMetadata": "App Service '%s' のメタデータの更新に失敗しました。エラー: %s",
+ "loc.messages.FailedToGetAppServiceMetadata": "App Service '%s' のメタデータの取得に失敗しました。エラー: %s",
+ "loc.messages.FailedToPatchAppServiceConfiguration": "App Service '%s' の構成を修正できませんでした。エラー: %s",
+ "loc.messages.FailedToUpdateAppServiceConfiguration": "App Service '%s' 構成を更新できませんでした。エラー: %s",
+ "loc.messages.FailedToGetAppServiceConfiguration": "App Service '%s' 構成を取得できませんでした。エラー: %s",
+ "loc.messages.FailedToGetAppServicePublishingCredentials": "App Service '%s' の公開資格情報をフェッチできませんでした。エラー: %s",
+ "loc.messages.FailedToGetAppServiceApplicationSettings": "App Service '%s' アプリケーション設定を取得できませんでした。エラー: %s",
+ "loc.messages.FailedToUpdateAppServiceApplicationSettings": "App Service '%s' アプリケーション設定を更新できませんでした。エラー: %s",
+ "loc.messages.UpdatingAppServiceConfigurationSettings": "App Service 構成の設定を更新しようとしています。データ: %s",
+ "loc.messages.UpdatedAppServiceConfigurationSettings": "App Service 構成の設定が更新されました。",
+ "loc.messages.UpdatedAppServiceApplicationSettings": "App Service アプリケーション設定と Kudu アプリケーション設定が更新されました。",
+ "loc.messages.MultipleResourceGroupFoundForAppService": "App Service '%s' に複数のリソース グループが見つかりました。",
+ "loc.messages.PackageDeploymentUsingZipDeployFailed": "ZIP 配置を使用したパッケージ配置に失敗しました。詳細についてはログを参照してください。",
+ "loc.messages.PackageDeploymentInitiated": "ZIP 配置を使用したパッケージ配置を開始しました。",
+ "loc.messages.WarPackageDeploymentInitiated": "WAR 配置を使用したパッケージ配置が開始しました。",
+ "loc.messages.FailedToGetDeploymentLogs": "配置ログを取得できませんでした。エラー: %s",
+ "loc.messages.GoExeNameNotPresent": "Go exe 名が存在しません",
+ "loc.messages.WarDeploymentRetry": "war ファイルは前回正常に展開されなかったため、展開を再試行しています。",
+ "loc.messages.Updatemachinetoenablesecuretlsprotocol": "マシンで TLS 1.2 プロトコル以上を使用していることを確認します。お使いのマシンで TLS を有効にする方法について詳しくは、https://aka.ms/enableTlsv2 をご確認ください。",
+ "loc.messages.CouldNotFetchAccessTokenforAzureStatusCode": "Azure 用のアクセス トークンをフェッチできませんでした。状態コード: %s、状態メッセージ: %s",
+ "loc.messages.CouldNotFetchAccessTokenforMSIDueToMSINotConfiguredProperlyStatusCode": "マネージド サービス プリンシパルのアクセス トークンをフェッチできませんでした。仮想マシンのマネージド サービス ID (MSI) を構成してください 'https://aka.ms/azure-msi-docs'。状態コード: %s、ステータス メッセージ: %s",
+ "loc.messages.CouldNotFetchAccessTokenforMSIStatusCode": "マネージド サービス プリンシパルのアクセス トークンをフェッチできませんでした。状態コード: %s、ステータス メッセージ: %s",
+ "loc.messages.XmlParsingFailed": "publishProfileXML ファイルを解析できません。エラー: %s",
+ "loc.messages.PropertyDoesntExistPublishProfile": "[%s] プロパティが公開プロファイル内に存在しません",
+ "loc.messages.InvalidConnectionType": "無効なサービス接続の種類",
+ "loc.messages.InvalidImageSourceType": "無効な画像ソースの種類",
+ "loc.messages.InvalidPublishProfile": "公開プロファイルのファイルが無効です。",
+ "loc.messages.ASE_SSLIssueRecommendation": "App Service で証明書を使用するには、証明書が信頼された証明機関によって署名されている必要があります。Web アプリで証明書の検証エラーが出る場合は、自己署名証明書を使用している可能性があり、それを解決するには、VSTS_ARM_REST_IGNORE_SSL_ERRORS という名前の変数の値をビルド定義またはリリース パイプラインで true に設定する必要があります。",
+ "loc.messages.ZipDeployLogsURL": "Zip 配置のログは、%s で確認できます",
+ "loc.messages.DeployLogsURL": "配置ログは %s で確認できます",
+ "loc.messages.AppServiceApplicationURL": "App Service Application URL: %s",
+ "loc.messages.ASE_WebDeploySSLIssueRecommendation": "App Service で証明書を使用するには、証明書が信頼された証明機関によって署名されている必要があります。Web アプリで証明書の検証エラーが出る場合は、自己署名証明書を使用している可能性があります。これを解決するには、Web 配置オプションの追加引数に -allowUntrusted を渡す必要があります。",
+ "loc.messages.FailedToGetResourceID": "リソースの種類 '%s'、リソース名 '%s' のリソース ID を取得できませんでした。エラー: %s",
+ "loc.messages.JarPathNotPresent": "Java jar パスが存在しません",
+ "loc.messages.FailedToUpdateApplicationInsightsResource": "Application Insights '%s' リソースを更新できませんでした。エラー: %s",
+ "loc.messages.InvalidDockerImageName": "無効な Docker Hub イメージ名が指定されました。",
+ "loc.messages.MsBuildPackageNotSupported": "MsBuild が生成したパッケージの配置はサポートされていません。パッケージ形式を変更するか、Azure App Service デプロイ タスクを使用してください。"
+}
\ No newline at end of file
diff --git a/_generated/AzureWebAppV1/Strings/resources.resjson/ko-KR/resources.resjson b/_generated/AzureWebAppV1/Strings/resources.resjson/ko-KR/resources.resjson
new file mode 100644
index 000000000000..03494ea188c5
--- /dev/null
+++ b/_generated/AzureWebAppV1/Strings/resources.resjson/ko-KR/resources.resjson
@@ -0,0 +1,184 @@
+{
+ "loc.friendlyName": "Azure 웹앱",
+ "loc.helpMarkDown": "[이 작업에 대한 자세한 정보](https://aka.ms/azurewebappdeployreadme)",
+ "loc.description": "Linux 또는 Windows용 Azure 웹앱을 배포합니다.",
+ "loc.instanceNameFormat": "Azure 웹앱 배포: $(appName)",
+ "loc.group.displayName.AdditionalDeploymentOptions": "추가 배포 옵션",
+ "loc.group.displayName.ApplicationAndConfigurationSettings": "응용 프로그램 및 구성 설정",
+ "loc.input.label.azureSubscription": "Azure 구독",
+ "loc.input.help.azureSubscription": "배포에 대한 Azure Resource Manager 구독을 선택합니다.",
+ "loc.input.label.appType": "앱 유형",
+ "loc.input.label.appName": "앱 이름",
+ "loc.input.help.appName": "기존 Azure App Service의 이름을 입력하거나 선택합니다. 선택한 앱 유형을 기반으로 하는 앱 서비스만 나열됩니다.",
+ "loc.input.label.deployToSlotOrASE": "슬롯 또는 App Service Environment에 배포",
+ "loc.input.help.deployToSlotOrASE": "기존 배포 슬롯 또는 Azure App Service Environment에 배포하는 옵션을 선택합니다. 두 대상 모두, 작업에 리소스 그룹 이름이 필요합니다. 배포 대상이 슬롯인 경우 기본적으로 프로덕션 슬롯에 배포가 수행됩니다. 다른 기존 슬롯 이름을 제공할 수도 있습니다. 배포 대상이 Azure App Service Environment인 경우 슬롯 이름을 '프로덕션'으로 두고 리소스 그룹 이름만 지정하세요.",
+ "loc.input.label.resourceGroupName": "리소스 그룹",
+ "loc.input.help.resourceGroupName": "배포 대상이 배포 슬롯 또는 App Service Environment인 경우 리소스 그룹 이름이 필요합니다. 위에서 지정한 Azure App Service를 포함하는 Azure 리소스 그룹을 입력하거나 선택합니다.",
+ "loc.input.label.slotName": "슬롯",
+ "loc.input.help.slotName": "프로덕션 슬롯이 아닌 기존 슬롯을 입력하거나 선택합니다.",
+ "loc.input.label.package": "패키지 또는 폴더",
+ "loc.input.help.package": "패키지, MSBuild에서 생성된 App Service 콘텐츠를 포함하는 폴더 또는 압축된 zip 또는 war 파일의 파일 경로입니다. 변수([Build](https://docs.microsoft.com/vsts/pipelines/build/variables) | [Release](https://docs.microsoft.com/vsts/pipelines/release/variables#default-variables)), 와일드카드가 지원됩니다. 예: $(System.DefaultWorkingDirectory)/\\*\\*/\\*.zip 또는 $(System.DefaultWorkingDirectory)/\\*\\*/\\*.war.",
+ "loc.input.label.customDeployFolder": "사용자 지정 배포 폴더",
+ "loc.input.help.customDeployFolder": "배포하려는 사용자 지정 폴더 이름을 지정합니다. 필드가 비어 있으면 패키지가 .azurewebsites.net/에 배포됩니다. ROOT를 입력하면 패키지가 .azurewebsited.net 에 배포되고 입력하지 않으면 .azurewebsited.net/에 배포됩니다.",
+ "loc.input.label.runtimeStack": "런타임 스택",
+ "loc.input.label.startUpCommand": "시작 명령 ",
+ "loc.input.help.startUpCommand": "시작 명령을 입력합니다. 예: dotnet exec filename.dll dotnet filename.dll",
+ "loc.input.label.customWebConfig": "Python, Node.js, Go 및 Java 앱에 대한 web.config 매개 변수 생성",
+ "loc.input.help.customWebConfig": "애플리케이션에 없는 경우 표준 Web.config가 생성되어 Azure App Service에 배포됩니다. web.config의 값은 편집 가능하며, 애플리케이션 프레임워크에 따라 달라집니다. 예를 들어 node.js 애플리케이션의 경우 web.config에 시작 파일 및 iis_node 모듈 값이 포함됩니다. 이 편집 기능은 생성된 web.config에만 사용됩니다. [자세한 정보](https://go.microsoft.com/fwlink/?linkid=843469).",
+ "loc.input.label.appSettings": "앱 설정",
+ "loc.input.help.appSettings": "구문 -key 값 다음에 오는 웹앱 응용 프로그램 설정을 편집합니다. 공백이 포함되는 값은 큰따옴표로 묶어야 합니다. 예 : -Port 5000 -RequestTimeout 5000 -WEBSITE_TIME_ZONE \"Eastern Standard Time\"",
+ "loc.input.label.configurationStrings": "구성 설정",
+ "loc.input.help.configurationStrings": "구문 -key 값 다음에 오는 웹앱 구성 설정을 편집합니다. 공백이 포함되는 값은 큰따옴표로 묶어야 합니다. 예 : -phpVersion 5.6 -linuxFxVersion: node|6.11",
+ "loc.input.label.deploymentMethod": "배포 방법",
+ "loc.input.help.deploymentMethod": "앱의 배포 방법을 선택합니다.",
+ "loc.messages.Invalidwebapppackageorfolderpathprovided": "잘못된 App Service 패키지 또는 폴더 경로를 제공했습니다. %s",
+ "loc.messages.SetParamFilenotfound0": "매개 변수 설정 파일을 찾을 수 없습니다. %s",
+ "loc.messages.XDTTransformationsappliedsuccessfully": "XML 변환을 적용했습니다.",
+ "loc.messages.GotconnectiondetailsforazureRMWebApp0": "Azure App Service '%s'에 대한 서비스 연결 정보를 가져왔습니다.",
+ "loc.messages.ErrorNoSuchDeployingMethodExists": "오류: 해당 배포 방법이 없습니다.",
+ "loc.messages.UnabletoretrieveconnectiondetailsforazureRMWebApp": "Azure App Service %s에 대한 서비스 연결 정보를 검색할 수 없습니다. 상태 코드: %s(%s)",
+ "loc.messages.UnabletoretrieveResourceID": "Azure 리소스 '%s'에 대한 서비스 연결 정보를 검색할 수 없습니다. 상태 코드: %s",
+ "loc.messages.Successfullyupdateddeploymenthistory": "%s에서 배포 기록을 업데이트했습니다.",
+ "loc.messages.Failedtoupdatedeploymenthistory": "배포 기록을 업데이트하지 못했습니다. 오류: %s",
+ "loc.messages.WARNINGCannotupdatedeploymentstatusSCMendpointisnotenabledforthiswebsite": "경고: 배포 상태를 업데이트할 수 없습니다. 이 웹 사이트에는 SCM 엔드포인트를 사용할 수 없습니다.",
+ "loc.messages.Unabletoretrievewebconfigdetails": "App Service 구성 정보를 검색할 수 없습니다. 상태 코드: '%s'",
+ "loc.messages.Unabletoretrievewebappsettings": "App Service 응용 프로그램 설정을 검색할 수 없습니다[상태 코드: '%s', 오류 메시지: '%s'].",
+ "loc.messages.Unabletoupdatewebappsettings": "App Service 응용 프로그램 설정을 업데이트할 수 없습니다. 상태 코드: '%s'",
+ "loc.messages.CannotupdatedeploymentstatusuniquedeploymentIdCannotBeRetrieved": "배포 상태를 업데이트할 수 없습니다. 고유한 배포 ID를 검색할 수 없습니다.",
+ "loc.messages.PackageDeploymentSuccess": "웹 패키지를 App Service에 배포했습니다.",
+ "loc.messages.PackageDeploymentFailed": "웹 패키지를 App Service에 배포하지 못했습니다.",
+ "loc.messages.Runningcommand": "%s 명령을 실행하고 있습니다.",
+ "loc.messages.Deployingwebapplicationatvirtualpathandphysicalpath": "웹 패키지 %s을(를) 가상 경로(실제 경로) %s(%s)에 배포하는 중입니다.",
+ "loc.messages.Successfullydeployedpackageusingkuduserviceat": "Kudu 서비스를 사용하여 %s 패키지를 %s에 배포했습니다.",
+ "loc.messages.Failedtodeploywebapppackageusingkuduservice": "Kudu 서비스를 사용하여 App Service 패키지를 배포하지 못했습니다. %s",
+ "loc.messages.Unabletodeploywebappresponsecode": "오류 코드로 인해 App Service를 배포할 수 없습니다. %s",
+ "loc.messages.MSDeploygeneratedpackageareonlysupportedforWindowsplatform": "MSDeploy 생성 패키지는 Windows 플랫폼에만 지원됩니다.",
+ "loc.messages.UnsupportedinstalledversionfoundforMSDeployversionshouldbeatleast3orabove": "MSDeploy에 대해 지원되지 않는 설치된 버전 %s을(를) 찾았습니다. 버전은 3 이상이어야 합니다.",
+ "loc.messages.UnabletofindthelocationofMSDeployfromregistryonmachineError": "컴퓨터의 레지스트리에서 MS 배포의 위치를 찾을 수 없습니다(오류: %s).",
+ "loc.messages.Nopackagefoundwithspecifiedpattern": "지정된 패턴의 패키지를 찾을 수 없습니다. %s 작업에 언급된 패키지가 빌드 또는 이전 스테이지에서 아티팩트로 게시되고 현재 작업에 다운로드되는지 확인합니다.",
+ "loc.messages.MorethanonepackagematchedwithspecifiedpatternPleaserestrainthesearchpattern": "지정한 패턴 %s과(와) 일치하는 패키지가 두 개 이상 있습니다. 검색 패턴을 제한하세요.",
+ "loc.messages.Trytodeploywebappagainwithappofflineoptionselected": "[응용 프로그램을 오프라인으로 만들기] 옵션을 선택하고 App Service를 다시 배포해 보세요.",
+ "loc.messages.Trytodeploywebappagainwithrenamefileoptionselected": "[잠겨 있는 파일 이름 바꾸기] 옵션을 선택하고 App Service를 다시 배포해 보세요.",
+ "loc.messages.NOJSONfilematchedwithspecificpattern": "특정 패턴과 일치하는 JSON 파일이 없음: %s",
+ "loc.messages.Configfiledoesntexists": "구성 파일 %s이(가) 없습니다.",
+ "loc.messages.Failedtowritetoconfigfilewitherror": "구성 파일 %s에 쓰지 못했습니다(오류: %s).",
+ "loc.messages.AppOfflineModeenabled": "앱 오프라인 모드를 사용하도록 설정했습니다.",
+ "loc.messages.Failedtoenableappofflinemode": "앱 오프라인 모드를 사용하도록 설정하지 못했습니다. 상태 코드: %s(%s)",
+ "loc.messages.AppOflineModedisabled": "앱 오프라인 모드를 사용하지 않도록 설정했습니다.",
+ "loc.messages.FailedtodisableAppOfflineMode": "앱 오프라인 모드를 사용하지 않도록 설정하지 못했습니다. 상태 코드: %s(%s)",
+ "loc.messages.CannotPerformXdtTransformationOnNonWindowsPlatform": "Windows가 아닌 플랫폼에서는 XML 변환을 수행할 수 없습니다.",
+ "loc.messages.XdtTransformationErrorWhileTransforming": "%s을(를) 변환(%s 사용)하는 동안 XML 변환 오류가 발생했습니다.",
+ "loc.messages.PublishusingwebdeployoptionsaresupportedonlywhenusingWindowsagent": "웹 배포 옵션을 사용한 게시는 Windows 에이전트를 사용할 경우에만 지원됩니다.",
+ "loc.messages.Publishusingzipdeploynotsupportedformsbuildpackage": "zip 배포 옵션을 사용한 게시는 msBuild 패키지 형식에 대해 지원되지 않습니다.",
+ "loc.messages.Publishusingzipdeploynotsupportedforvirtualapplication": "zip 배포 옵션을 사용한 게시는 가상 애플리케이션에 대해 지원되지 않습니다.",
+ "loc.messages.Publishusingzipdeploydoesnotsupportwarfile": "zip 배포 또는 RunFromZip 옵션을 사용한 게시에서는 war 파일 배포를 지원하지 않습니다.",
+ "loc.messages.Publishusingrunfromzipwithpostdeploymentscript": "폴더가 읽기 전용이므로 wwwroot를 변경하는 경우 RunFromZip을 사용한 게시에서 배포 후 스크립트를 지원하지 않을 수 있습니다.",
+ "loc.messages.ResourceDoesntExist": "'%s' 리소스가 없습니다. 배포 전에 리소스가 있어야 합니다.",
+ "loc.messages.EncodeNotSupported": "%s 파일에 대한 파일 인코딩이 %s(으)로 검색되었습니다. 파일 인코딩 %s을(를) 사용할 경우 변수 대체가 지원되지 않습니다. 지원되는 인코딩은 UTF-8 및 UTF-16 LE입니다.",
+ "loc.messages.UnknownFileEncodeError": "%s 파일(typeCode: %s)에 대한 인코딩을 검색할 수 없습니다. 지원되는 인코딩은 UTF-8 및 UTF-16 LE입니다.",
+ "loc.messages.ShortFileBufferError": "파일 버퍼가 너무 짧아서 인코딩 형식을 검색할 수 없습니다. %s",
+ "loc.messages.FailedToUpdateAzureRMWebAppConfigDetails": "App Service 구성 정보를 업데이트하지 못했습니다. 오류: %s",
+ "loc.messages.SuccessfullyUpdatedAzureRMWebAppConfigDetails": "App Service 구성 정보를 업데이트했습니다.",
+ "loc.messages.RequestedURLforkuduphysicalpath": "Kudu 실제 경로의 요청된 URL: %s",
+ "loc.messages.Physicalpathalreadyexists": "실제 경로 '%s'이(가) 이미 있습니다.",
+ "loc.messages.KuduPhysicalpathCreatedSuccessfully": "Kudu 실제 경로를 만들었습니다. %s",
+ "loc.messages.FailedtocreateKuduPhysicalPath": "Kudu 실제 경로를 만들지 못했습니다. 오류: %s",
+ "loc.messages.FailedtocheckphysicalPath": "Kudu 실제 경로를 확인하지 못했습니다. 오류 코드: %s",
+ "loc.messages.VirtualApplicationDoesNotExist": "가상 응용 프로그램이 없습니다. %s",
+ "loc.messages.JSONParseError": "JSON 파일 %s을(를) 구문 분석할 수 없습니다. 오류: %s",
+ "loc.messages.JSONvariablesubstitutionappliedsuccessfully": "JSON 변수 대체를 적용했습니다.",
+ "loc.messages.XMLvariablesubstitutionappliedsuccessfully": "XML 변수 대체를 적용했습니다.",
+ "loc.messages.failedtoUploadFileToKudu": "%s 파일을 Kudu(%s)에 업로드할 수 없습니다. 상태 코드: %s",
+ "loc.messages.failedtoUploadFileToKuduError": "%s 파일을 Kudu(%s)에 업로드할 수 없습니다. 오류: %s",
+ "loc.messages.ExecuteScriptOnKudu": "Kudu 서비스에서 지정된 스크립트를 실행하는 중입니다.",
+ "loc.messages.FailedToRunScriptOnKuduError": "Kudu 서비스에서 스크립트를 실행할 수 없습니다. 오류: %s",
+ "loc.messages.FailedToRunScriptOnKudu": "Kudu에서 스크립트를 실행할 수 없음: %s. 상태 코드: %s",
+ "loc.messages.ScriptExecutionOnKuduSuccess": "Kudu에서 스크립트를 실행했습니다.",
+ "loc.messages.ScriptExecutionOnKuduFailed": "실행된 스크립트에서 반환 코드로 '%s'을(를) 반환했습니다. 오류: %s",
+ "loc.messages.FailedtoDeleteFileFromKudu": "%s 파일을 Kudu(%s)에서 삭제할 수 없습니다. 상태 코드: %s",
+ "loc.messages.FailedtoDeleteFileFromKuduError": "%s 파일을 Kudu(%s)에서 삭제할 수 없습니다. 오류: %s",
+ "loc.messages.ScriptFileNotFound": "스크립트 파일 '%s'을(를) 찾을 수 없습니다.",
+ "loc.messages.InvalidScriptFile": "잘못된 스크립트 파일 '%s'이(가) 제공되었습니다. 유효한 확장명은 Windows의 경우 .bat 및 .cmd이고, Linux의 경우 .sh입니다.",
+ "loc.messages.RetryForTimeoutIssue": "시간 초과 문제로 스크립트 실행에 실패했습니다. 다시 시도하는 중입니다.",
+ "loc.messages.stdoutFromScript": "스크립트의 표준 출력: ",
+ "loc.messages.stderrFromScript": "스크립트의 표준 오류: ",
+ "loc.messages.WebConfigAlreadyExists": "web.config 파일이 이미 있습니다. 생성하지 않습니다.",
+ "loc.messages.SuccessfullyGeneratedWebConfig": "web.config 파일을 생성했습니다.",
+ "loc.messages.FailedToGenerateWebConfig": "web.config를 생성하지 못했습니다. %s",
+ "loc.messages.FailedToGetKuduFileContent": "파일 콘텐츠 %s을(를) 가져오지 못했습니다. 상태 코드: %s(%s)",
+ "loc.messages.FailedToGetKuduFileContentError": "파일 콘텐츠 %s을(를) 가져오지 못했습니다. 오류: %s",
+ "loc.messages.ScriptStatusTimeout": "시간 초과로 인해 스크립트 상태를 페치할 수 없습니다.",
+ "loc.messages.PollingForFileTimeOut": "시간 초과로 인해 스크립트 상태를 페치할 수 없습니다. 'appservicedeploy.retrytimeout' 변수를 필요한 시간(분)으로 설정하여 시간 제한을 늘릴 수 있습니다.",
+ "loc.messages.InvalidPollOption": "잘못된 폴링 옵션이 제공됨: %s.",
+ "loc.messages.MissingAppTypeWebConfigParameters": "Web.config 매개 변수에 '-appType' 특성이 없습니다. '-appType'에 대해 유효한 값은 'python_Bottle', 'python_Django', 'python_Flask' 'node' 및 'Go'입니다. 예를 들어 Python Bottle 프레임워크의 경우 '-appType python_Bottle' (sans-quotes)입니다.",
+ "loc.messages.AutoDetectDjangoSettingsFailed": "DJANGO_SETTINGS_MODULE 'settings.py' 파일 경로를 검색할 수 없습니다. 'settings.py' 파일이 존재하는지 확인하거나 Web.config 매개 변수 입력에 '-DJANGO_SETTINGS_MODULE .settings' 형식으로 올바른 경로를 제공하세요.",
+ "loc.messages.FailedToApplyTransformation": "지정된 패키지에 변환을 적용할 수 없습니다. 다음을 확인하세요.",
+ "loc.messages.FailedToApplyTransformationReason1": "1. 빌드 중 생성된 MSBuild 패키지에 대해 변환이 이미 적용되었는지 여부를 확인합니다. 그런 경우 csproj 파일에서 각 구성에 대해 태그를 제거하고 다시 빌드합니다. ",
+ "loc.messages.FailedToApplyTransformationReason2": "2. 구성 파일 및 변환 파일이 패키지 내의 동일한 폴더에 있는지 확인합니다.",
+ "loc.messages.AutoParameterizationMessage": "Web.config의 ConnectionString 특성은 기본적으로 매개 변수가 있습니다. 'Parameters.xml' 또는 'SetParameters.xml' 파일로 배포 중 값이 재정의되므로 변환은 connectionString 특성에 아무런 영향을 미치지 않습니다. MSBuild 패키지 생성 중 p:AutoParameterizationWebConfigConnectionStrings=False를 설정하여 자동 매개 변수화를 사용하지 않도록 설정할 수 있습니다.",
+ "loc.messages.UnsupportedAppType": "Web.config 생성에서 '%s' 앱 형식이 지원되지 않습니다. '-appType'에 대해 유효한 값은 'python_Bottle', 'python_Django', 'python_Flask' 및 'node'입니다.",
+ "loc.messages.UnableToFetchAuthorityURL": "기관 URL을 페치할 수 없습니다.",
+ "loc.messages.UnableToFetchActiveDirectory": "Active Directory 리소스 ID를 페치할 수 없습니다.",
+ "loc.messages.SuccessfullyUpdatedRuntimeStackAndStartupCommand": "런타임 스택 및 시작 명령을 업데이트했습니다.",
+ "loc.messages.FailedToUpdateRuntimeStackAndStartupCommand": "런타임 스택 및 시작 명령을 업데이트하지 못했습니다. 오류: %s.",
+ "loc.messages.SuccessfullyUpdatedWebAppSettings": "앱 설정을 업데이트했습니다.",
+ "loc.messages.FailedToUpdateAppSettingsInConfigDetails": "앱 설정을 업데이트하지 못했습니다. 오류: %s.",
+ "loc.messages.UnableToGetAzureRMWebAppMetadata": "AzureRM WebApp 메타데이터를 페치하지 못했습니다. 오류 코드: %s",
+ "loc.messages.UnableToUpdateAzureRMWebAppMetadata": "AzureRM WebApp 메타데이터를 업데이트할 수 없습니다. 오류 코드: %s",
+ "loc.messages.Unabletoretrieveazureregistrycredentials": "Azure Container Registry 자격 증명을 검색할 수 없습니다.[상태 코드: '%s']",
+ "loc.messages.UnableToReadResponseBody": "응답 본문을 읽을 수 없습니다. 오류: %s",
+ "loc.messages.UnableToUpdateWebAppConfigDetails": "WebApp 구성 정보를 업데이트할 수 없습니다. 상태 코드: '%s'",
+ "loc.messages.AddingReleaseAnnotation": "Application Insights 리소스 '%s'에 대한 릴리스 주석을 추가하는 중",
+ "loc.messages.SuccessfullyAddedReleaseAnnotation": "Application Insight에 릴리스 주석 추가함: %s",
+ "loc.messages.FailedAddingReleaseAnnotation": "릴리스 주석을 추가하지 못했습니다. %s",
+ "loc.messages.RenameLockedFilesEnabled": "App Service에 대해 잠긴 파일 이름 바꾸기를 사용할 수 있습니다.",
+ "loc.messages.FailedToEnableRenameLockedFiles": "잠긴 파일 이름 바꾸기를 사용하도록 설정하지 못했습니다. 오류: %s",
+ "loc.messages.WebJobsInProgressIssue": "실행 상태의 WebJobs가 거의 없으므로 배포에서 파일을 제거할 수 없습니다. 배포 전에 연속 작업을 중지하거나 '대상에서 추가 파일 제거' 옵션을 사용하지 않을 수 있습니다.",
+ "loc.messages.FailedToFetchKuduAppSettings": "Kudu 앱 설정을 페치하지 못했습니다. 오류: %s",
+ "loc.messages.FailedToCreatePath": "Kudu에서 '%s' 경로를 만들지 못했습니다. 오류: %s",
+ "loc.messages.FailedToDeleteFile": "Kudu에서 '%s/%s' 파일을 삭제하지 못했습니다. 오류: %s",
+ "loc.messages.FailedToDeleteFolder": "Kudu에서 '%s' 폴더를 삭제하지 못했습니다. 오류: %s",
+ "loc.messages.FailedToUploadFile": "Kudu에서 '%s/%s' 파일을 업로드하지 못했습니다. 오류: %s",
+ "loc.messages.FailedToGetFileContent": "Kudu에서 파일 콘텐츠 '%s/%s'을(를) 가져오지 못했습니다. 오류: %s",
+ "loc.messages.FailedToListPath": "Kudu에서 '%s' 경로를 나열하지 못했습니다. 오류: %s",
+ "loc.messages.RetryToDeploy": "패키지 배포를 다시 시도하는 중입니다.",
+ "loc.messages.FailedToGetAppServiceDetails": "App Service '%s' 정보를 페치하지 못했습니다. 오류: %s",
+ "loc.messages.FailedToGetAppServicePublishingProfile": "App Service '%s' 게시 프로필을 페치하지 못했습니다. 오류: %s",
+ "loc.messages.FailedToUpdateAppServiceMetadata": "App Service '%s' 메타데이터를 업데이트하지 못했습니다. 오류: %s",
+ "loc.messages.FailedToGetAppServiceMetadata": "App Service '%s' 메타데이터를 가져오지 못했습니다. 오류: %s",
+ "loc.messages.FailedToPatchAppServiceConfiguration": "App Service '%s' 구성을 패치하지 못했습니다. 오류: %s",
+ "loc.messages.FailedToUpdateAppServiceConfiguration": "App Service '%s' 구성을 업데이트하지 못했습니다. 오류: %s",
+ "loc.messages.FailedToGetAppServiceConfiguration": "App Service '%s' 구성을 가져오지 못했습니다. 오류: %s",
+ "loc.messages.FailedToGetAppServicePublishingCredentials": "App Service '%s' 게시 자격 증명을 페치하지 못했습니다. 오류: %s",
+ "loc.messages.FailedToGetAppServiceApplicationSettings": "App Service '%s' 애플리케이션 설정을 가져오지 못했습니다. 오류: %s",
+ "loc.messages.FailedToUpdateAppServiceApplicationSettings": "App Service '%s' 애플리케이션 설정을 업데이트하지 못했습니다. 오류: %s",
+ "loc.messages.UpdatingAppServiceConfigurationSettings": "App Service 구성 설정을 업데이트하는 중입니다. 데이터: %s",
+ "loc.messages.UpdatedAppServiceConfigurationSettings": "App Service 구성 설정을 업데이트했습니다.",
+ "loc.messages.UpdatedAppServiceApplicationSettings": "App Service 응용 프로그램 설정 및 Kudu 응용 프로그램 설정을 업데이트했습니다.",
+ "loc.messages.MultipleResourceGroupFoundForAppService": "App Service '%s'에 대한 리소스 그룹이 여러 개 있습니다.",
+ "loc.messages.PackageDeploymentUsingZipDeployFailed": "ZIP 배포를 사용한 패키지 배포에 실패했습니다. 자세한 내용은 로그를 참조하세요.",
+ "loc.messages.PackageDeploymentInitiated": "ZIP 배포를 사용한 패키지 배포가 시작되었습니다.",
+ "loc.messages.WarPackageDeploymentInitiated": "WAR 배포를 사용한 패키지 배포가 시작되었습니다.",
+ "loc.messages.FailedToGetDeploymentLogs": "배포 로그를 가져오지 못했습니다. 오류: %s",
+ "loc.messages.GoExeNameNotPresent": "Go exe 이름이 없습니다.",
+ "loc.messages.WarDeploymentRetry": "이전에 war 파일이 확장되지 않았으므로 war 파일 배포를 다시 시도합니다.",
+ "loc.messages.Updatemachinetoenablesecuretlsprotocol": "머신에서 TLS 1.2 프로토콜 이상을 사용 중인지 확인하세요. 머신에서 TLS를 사용하도록 설정하는 방법에 대해 자세히 알아보려면 https://aka.ms/enableTlsv2를 참조하세요.",
+ "loc.messages.CouldNotFetchAccessTokenforAzureStatusCode": "Azure에 대한 액세스 토큰을 페치할 수 없습니다. 상태 코드: %s, 상태 메시지: %s",
+ "loc.messages.CouldNotFetchAccessTokenforMSIDueToMSINotConfiguredProperlyStatusCode": "관리 서비스 주체에 대한 액세스 토큰을 페치할 수 없습니다. 가상 머신에 대한 MSI(관리 서비스 ID)를 구성하세요('https://aka.ms/azure-msi-docs'). 상태 코드: %s, 상태 메시지: %s",
+ "loc.messages.CouldNotFetchAccessTokenforMSIStatusCode": "관리 서비스 주체에 대한 액세스 토큰을 페치할 수 없습니다. 상태 코드: %s, 상태 메시지: %s",
+ "loc.messages.XmlParsingFailed": "publishProfileXML 파일을 구문 분석할 수 없습니다. 오류: %s",
+ "loc.messages.PropertyDoesntExistPublishProfile": "[%s] 속성이 게시 프로필에 없습니다.",
+ "loc.messages.InvalidConnectionType": "잘못된 서비스 연결 형식",
+ "loc.messages.InvalidImageSourceType": "잘못된 이미지 소스 유형",
+ "loc.messages.InvalidPublishProfile": "게시 프로필 파일이 잘못되었습니다.",
+ "loc.messages.ASE_SSLIssueRecommendation": "App Service에서 인증서를 사용하려면 신뢰할 수 있는 인증 기관에서 인증서에 서명해야 합니다. 웹앱에서 인증서 유효성 검사 오류가 발생하는 경우, 자체 서명된 인증서를 사용하는 중일 수 있으며 오류를 해결하려면 이름이 VSTS_ARM_REST_IGNORE_SSL_ERRORS인 변수를 빌드 또는 릴리스 파이프라인에서 true 값으로 설정해야 합니다.",
+ "loc.messages.ZipDeployLogsURL": "zip 배포 로그는 %s에서 볼 수 있습니다.",
+ "loc.messages.DeployLogsURL": "배포 로그는 %s에서 볼 수 있습니다.",
+ "loc.messages.AppServiceApplicationURL": "App Service 애플리케이션 URL: %s",
+ "loc.messages.ASE_WebDeploySSLIssueRecommendation": "App Service에서 인증서를 사용하려면 신뢰할 수 있는 인증 기관에서 인증서에 서명해야 합니다. 웹앱에서 인증서 유효성 검사 오류가 발생하는 경우 자체 서명된 인증서를 사용하는 것 같으며, 오류를 해결하려면 웹 배포 옵션의 추가 인수에 -allowUntrusted를 전달해야 합니다.",
+ "loc.messages.FailedToGetResourceID": "리소스 종류 '%s' 및 리소스 이름 '%s'의 리소스 ID를 가져오지 못했습니다. 오류: %s",
+ "loc.messages.JarPathNotPresent": "Java jar 경로가 없습니다.",
+ "loc.messages.FailedToUpdateApplicationInsightsResource": "Application Insights '%s' 리소스를 업데이트하지 못했습니다. 오류: %s",
+ "loc.messages.InvalidDockerImageName": "지정한 Docker Hub 이미지 이름이 잘못되었습니다.",
+ "loc.messages.MsBuildPackageNotSupported": "msBuild에서 생성된 패키지를 배포할 수 없습니다. 패키지 형식을 변경하거나 Azure App Service 배포 작업을 사용하세요."
+}
\ No newline at end of file
diff --git a/_generated/AzureWebAppV1/Strings/resources.resjson/ru-RU/resources.resjson b/_generated/AzureWebAppV1/Strings/resources.resjson/ru-RU/resources.resjson
new file mode 100644
index 000000000000..b53791398a79
--- /dev/null
+++ b/_generated/AzureWebAppV1/Strings/resources.resjson/ru-RU/resources.resjson
@@ -0,0 +1,184 @@
+{
+ "loc.friendlyName": "Веб-приложение Azure",
+ "loc.helpMarkDown": "[См. дополнительные сведения об этой задаче](https://aka.ms/azurewebappdeployreadme)",
+ "loc.description": "Развертывание веб-приложения Azure для Linux или Windows",
+ "loc.instanceNameFormat": "Развертывание веб-приложения Azure: $(appName)",
+ "loc.group.displayName.AdditionalDeploymentOptions": "Дополнительные параметры развертывания",
+ "loc.group.displayName.ApplicationAndConfigurationSettings": "Параметры приложения и конфигурации",
+ "loc.input.label.azureSubscription": "Подписка Azure",
+ "loc.input.help.azureSubscription": "Выберите подписку Azure Resource Manager для развертывания.",
+ "loc.input.label.appType": "Тип приложения",
+ "loc.input.label.appName": "Имя приложения",
+ "loc.input.help.appName": "Введите или выберите имя существующей службы приложений Azure. Будут перечислены только службы приложений для выбранного типа приложения.",
+ "loc.input.label.deployToSlotOrASE": "Развернуть в слоте или среде службы приложений",
+ "loc.input.help.deployToSlotOrASE": "Выберите вариант развертывания в существующем слоте развертывания или в среде службы приложений Azure. В обоих случаях задаче требуется имя группы ресурсов. Если целью развертывания является слот, по умолчанию оно выполняется в рабочем слоте. Можно также указать имя любого другого существующего слота. Если целью развертывания является среда службы приложений Azure, оставьте имя слота \"рабочий\" и укажите имя группы ресурсов.",
+ "loc.input.label.resourceGroupName": "Группа ресурсов",
+ "loc.input.help.resourceGroupName": "Имя группы ресурсов является обязательным, если цель развертывания — слот развертывания или среда службы приложений. Введите или выберите группу ресурсов Azure, которая содержит указанную выше службу приложений Azure.",
+ "loc.input.label.slotName": "Слот",
+ "loc.input.help.slotName": "Введите или выберите существующий слот вместо рабочего слота.",
+ "loc.input.label.package": "Пакет или папка",
+ "loc.input.help.package": "Путь к файлу пакета или папке с содержимым службы приложений, созданным MSBuild, или к сжатому ZIP- или WAR-файлу. Поддерживаются переменные ([сборки](https://docs.microsoft.com/vsts/pipelines/build/variables) | [выпуска](https://docs.microsoft.com/vsts/pipelines/release/variables#default-variables)), а также подстановочные знаки. Примеры: $(System.DefaultWorkingDirectory)/\\*\\*/\\*.zip или $(System.DefaultWorkingDirectory)/\\*\\*/\\*.war.",
+ "loc.input.label.customDeployFolder": "Настраиваемая папка развертывания",
+ "loc.input.help.customDeployFolder": "Укажите имя настраиваемой папки, в которой требуется выполнить развертывание. Если поле пусто, пакет развертывается в .azurewebsites.net/,