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.