Развертывание шаблонов ARM из Azure Release Pipelines удаляет код - PullRequest
0 голосов
/ 22 января 2020

Согласно документации"Шаблон 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 каким-то образом отличается.

После выполнения обоих шагов все выглядит нормально. Но когда я просто выполняю первый шаг, код приложения удаляется. Вот как это выглядит прямо сейчас.

Release pipeline

И у шагов есть по одной задаче: ARM templates stage Deploy App stage

1 Ответ

0 голосов
/ 27 января 2020

См. Azure Функции Повторное развертывание шаблона ARM удаляет мои опубликованные функции для получения дополнительной информации. По сути, вам нужно добавить это в ваш шаблон:

{ "name": "WEBSITE_RUN_FROM_PACKAGE", "value": "1" }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...