Согласно документации"Шаблон ARM является идемпотентным, что означает, что он может быть выполнен столько раз, сколько вы sh, и результат будет одинаковым каждый раз". Но я только что узнал, что при повторном развертывании AppService (без каких-либо изменений) оно удаляет мое приложение. Конечные точки больше не отвечали, и журналы приложений отсутствовали, поэтому я пошел на консоль портала Azure, запустил DIR
, и, к моему удивлению, единственный файл, который там есть, hostingstart.html
! Это где-то задокументировано? Это полностью меняет то, как мне нужно обрабатывать шаблоны ARM в моем конвейере выпуска.
Я использую связанные шаблоны. В основном шаблоне у меня есть этот ресурс:
{
"name": "myApp",
"type": "Microsoft.Resources/deployments",
"apiVersion": "2019-10-01",
"dependsOn": [
"storage"
],
"properties": {
"mode": "Incremental",
"templateLink": {
"uri": "[uri(variables('templateBaseUrl'), 'myApp.json')]"
},
"parameters": {
"env": {
"value": "[parameters('env')]"
},
"myAppAppServiceSku": {
"value": "[parameters('myAppAppServiceSku')]"
},
"storageAccountName": {
"value": "[variables('storageAccountName')]"
}
}
}
}
и связанный шаблон
"resources": [
{
"name": "[variables('myAppServerFarmName')]",
"type": "Microsoft.Web/serverfarms",
"apiVersion": "2018-02-01",
"location": "[resourceGroup().location]",
"tags": {
"ENV": "[parameters('env')]"
},
"sku": {
"name": "[parameters('myAppAppServiceSku')]"
},
"properties": {
}
},
{
"name": "[variables('myAppWebSiteName')]",
"type": "Microsoft.Web/sites",
"apiVersion": "2018-11-01",
"dependsOn": [
"[variables('myAppServerFarmName')]"
],
"location": "[resourceGroup().location]",
"tags": {
"ENV": "[parameters('env')]"
},
"properties": {
"serverFarmId": "[resourceId('Microsoft.Web/serverfarms/', variables('myAppServerFarmName'))]",
"siteConfig": {
"alwaysOn": true
}
},
"resources": [
{
"name": "appSettings",
"type": "config",
"apiVersion": "2018-11-01",
"dependsOn": [
"[variables('myAppWebSiteName')]"
],
"tags": {
"ENV": "[parameters('env')]"
},
"properties": {
"storageAccountName": "[parameters('storageAccountName')]",
"storageKey": "[listKeys(resourceId('Microsoft.Storage/storageAccounts/', parameters('storageAccountName')), '2019-04-01').keys[0].value]"
}
}
]
}
]
РЕДАКТИРОВАТЬ: Я проверил развертывание с использованием Kudu ZIP Deploy. И после этого развертывания повторное развертывание шаблонов ARM не удаляет код! Так что все работает как положено. Таким образом, развертывание из Release Pipelines каким-то образом отличается.
После выполнения обоих шагов все выглядит нормально. Но когда я просто выполняю первый шаг, код приложения удаляется. Вот как это выглядит прямо сейчас.
И у шагов есть по одной задаче: