ARM Template - интегрируйте функции Azure и логические приложения с репозиторием VSO

Я разрабатываю шаблон ARM, в котором я хочу развернуть приложение логики, которое использует функции Azure, которые должны постоянно обновляться с моим внешним репозиторием (VSO) (с использованием Microsoft.Web/sites/sourcecontrols).

мой deployment.json похоже:

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "parameters": {
    "repoUrl": {
      "type": "string",
      "defaultValue": "https://{USER}:{TOKEN}@{GIT_URL}"
    },
    "environment": {
    "type":"string"
    }
  },
  "variables": {
    "branch": "[concat('master-', parameters('environment'))]"
  },
  "resources": [
    {
      "apiVersion": "2015-08-01",
      "type": "Microsoft.Web/sites",
      "name": "[variables('functionAppName')]",
      "location": "[resourceGroup().location]",
      "kind": "functionapp",
      "dependsOn": [
        "[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]",
        "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]"
      ],
      "resources": [
        {
          "apiVersion": "2015-08-01",
          "name": "web",
          "type": "sourcecontrols",
          "dependsOn": [
            "[resourceId('Microsoft.Web/Sites', variables('functionAppName'))]"
          ],
          "properties": {
            "RepoUrl": "[parameters('repoURL')]",
            "branch": "[variables('branch')]",
            "IsManualIntegration": true,
          }
        }
      ],
      "properties": {
        "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]",
        "siteConfig": {
          "appSettings": [
            //AzureWebJobsDashboard, AzureWebJobsStorage, and so on          
          ]
        }
      }
    },
    {
      "name": "[variables('logicAppName')]",
      "type": "Microsoft.Logic/workflows",
      "location": "[resourceGroup().location]",
      "apiVersion": "2016-06-01",
      "dependsOn": [
        "[resourceId('Microsoft.Web/connections', variables('servicebusConnectionName'))]",
        "[resourceId('Microsoft.Web/sites/sourcecontrols', variables('functionAppName'), 'web')]"
      ],
      "tags": {
        "displayName": "order-create"
      },
      //(...)
    }
  ]
}

Как видите, у меня есть: "IsManualIntegration": true, В resources.azure.com все выглядит с ожидаемыми значениями:

"properties": {
  "repoUrl": "https://{GIT_REPO_URL}",
  "branch": "master-dev",
  "isManualIntegration": true,
  "deploymentRollbackEnabled": false,
  "isMercurial": false,
  "provisioningState": "Succeeded"
}

В этом случае все работает хорошо. Когда я нажимаю кнопку "Изменить", меняю значение на false, сохраните изменения кнопкой "PUT", как показано ниже:

Затем появляется загрузчик, через несколько секунд мои изменения отменяются, и все же "isManualIntegration" устанавливается в "true".

Я попробовал также второй подход, чтобы протолкнуть шаблон с "isManualIntegration": "false"/ ​​false (оба подхода), и я вижу конфликты в сборках приложения логики (вид из сборки приложения логики):

Когда я иду к своим лазурным функциям. Затем создается функция (что я и ожидал), но внутри нет никаких "методов". Все настройки приложения созданы.

Знаете ли вы, как решить проблему? Нужно ли прикреплять следующий ресурс в моем шаблоне?

РЕДАКТИРОВАТЬ: я получил в моем диспетчере ресурсов, что свойства после развертывания с IsManualIntegration: false:

"provisioningDetails": "Microsoft.Web.Hosting.SourceControls.OAuthException: Vso TestWebHook: Failed because you are not an administrator on the VSTS project.  Access Denied: MY_INITIALS needs the following permission(s) on the resource PublisherSecurity to perform this action: Edit Subscription

в Microsoft.Web.Hosting.SourceControls.VsoProxy. (...) "

Текущая проблема: как добавить edit subscription действие для меня, если я администратор.

1 ответ

Я полагаю, что это может быть тот шаг, который отсутствует, но я думал, что это было необходимо, если вы не указали {user}:{token} вручную. Дай мне знать. Я также полагаю, что для выполнения указанных выше действий вам больше не нужно указывать пользователя и токен - при развертывании функции автоматически будет надежно извлечен код, который поможет немного упростить шаблон ARM.

Другие вопросы по тегам