У меня есть Azure AppService (микросервис веб-сайта), созданный из шаблона ARM. Он содержит приложение drupal. Я настроил его для чтения с сервера git в битбакете. Когда я создаю первый раз, он успешно извлекает файлы из битбакета (главная ветка). Все хорошо:-) Служба App создана из PowerShell script, которая использует шаблоны ARM, запущенные из проекта Jenkins. Проект называется ReCreateXXXAppService и запускает PowerShell, который определяет, есть ли AppService, удалите его, если это так, и разверните его снова.
Это сводка моего кода вокруг New-AzureRmResourceGroupDeployment:
$repoUrl = "https://"+$AppServiceUsername+":"+$AppServicePassword+"@bitbucket.org/XXX/as-cms.git"
$params = @{siteName=$AppServiceName ; hostingPlanName="$($AppServiceName)-HP"; siteLocation=$AppServiceLocationName; repoUrl=$repoUrl; branch="master";}
$templateFile = Join-Path $scriptDir "templates\$TemplateName"
Write-Host "Using template file $TemplateFile"
New-AzureRmResourceGroupDeployment -Mode Complete -Force -TemplateParameterObject $params -Name "$($AppServiceName)-dn" -ResourceGroupName $azureResourceGroupName -TemplateFile $templateFile
Когда я что-то меняю в главной ветке, у меня есть два варианта:
- Автоматизировано: Запустите RecreateXXXAppService снова в Jenkins, подождите около 1-2 минут (пока приложение App обнаружено, удалено и создано), и у меня есть развернутое изменение.
- Вручную: Перейдите на портал azure, выберите App Service, Continuous Deployment и нажмите Синхронизировать. Требуется только 15-20 секунд. (Проверьте скриншот)
Мой вопрос:
Как я могу автоматизировать с PowerShell эквивалент нажатия кнопки "Синхронизация"?
ПРИМЕЧАНИЕ 1: здесь есть аналогичный вопрос , без ответа.
ПРИМЕЧАНИЕ 2. Шаблонная часть для создания управления источником - это:
{
"apiVersion": "2014-04-01",
"name": "web",
"type": "sourcecontrols",
"dependsOn": [
"[resourceId('Microsoft.Web/Sites', parameters('siteName'))]",
"[concat('Microsoft.Web/Sites/', parameters('siteName'), '/config/web')]"
],
"properties": {
"RepoUrl": "[parameters('repoUrl')]",
"branch": "[parameters('branch')]",
"IsManualIntegration": true
}
}
ПРИМЕЧАНИЕ 3. Я пробовал ответить @MichaelB без везения. Кажется, он работает, но не обновляет файлы. Выходной сигнал
Name : as-xxxx-dev01
ResourceId : /subscriptions/a303bbb8-8c07-wq10-8a6a-6c1eceef81bb/resourceGroups/as-rg-xxxx-EUN-DEV01/providers/Microsoft.Web/sites/as-cms-dev01/sourcecontrols/web
ResourceName : as-xxxx-dev01/web
ResourceType : Microsoft.Web/sites/sourcecontrols
ResourceGroupName : as-rg-xxxx-EUN-DEV01
Location : North Europe
SubscriptionId : a303ibb8-7i77-41d0-8a2s-6c1aaaaf81aa
Tags : {System.Collections.Hashtable}
Properties : @{RepoUrl=https://deployments:*******@bitbucket.org/project/as-xxxx.git; Branch=master; IsManualIntegration=False; DeploymentRollbackEnabled=False;
IsMercurial=False; ProvisioningState=Succeeded}