Mar*_*arc 6 yaml azure azure-devops azure-pipelines
我想从 Azure DevOps 管道执行以下操作:
staging
)staging
插槽production
production
,现在的staging
插槽到目前为止我所拥有的是:
staging
与生产交换插槽production
,现在的staging
插槽YAML:
- task: AzureRmWebAppDeployment@4
inputs:
ConnectionType: 'AzureRM'
azureSubscription: 'BizSpark(...)'
appType: 'webApp'
WebAppName: 'foo'
deployToSlotOrASE: true
ResourceGroupName: 'Default-WestEurope'
SlotName: 'staging'
packageForLinux: '$(Build.ArtifactStagingDirectory)/**/*.zip'
- task: AzureAppServiceManage@0
inputs:
azureSubscription: 'BizSpark(..)'
Action: 'Swap Slots'
WebAppName: 'foo'
ResourceGroupName: 'Default-WestEurope'
SourceSlot: 'staging'
- task: AzureAppServiceManage@0
inputs:
azureSubscription: 'BizSpark(..)'
Action: 'Delete Slot'
WebAppName: 'foo'
ResourceGroupName: 'Default-WestEurope'
Slot: 'staging'
Run Code Online (Sandbox Code Playgroud)
但是,AzureAppServiceManage
task 不提供创建部署槽的方法。
如何才能做到这一点?
在 Azure DevOps 管道中为 WebApp 创建部署槽
恐怕在 Azure DevOps 管道中没有这种开箱即用的方式来为 WebApp 创建部署槽。
作为任务的状态Azure App Service Management
,我们可以知道:
Azure 应用服务管理任务用于启动/停止/重启应用服务、交换槽、安装扩展、启用持续监控或启动/停止所有连续的 Web 作业Azure 应用服务上的。
它不支持在 Azure DevOps 管道中为 WebApp 创建部署槽。AFAIK,目前没有其他任务在 Azure DevOps 管道中支持此功能。
作为这个问题的解决方案,就像juunas评论一样,通常这是通过ARM模板部署来实现的。
我们可以使用以下 ARM 模板为 Azure 应用服务配置部署槽:
{
"$schema": "http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"siteName": {
"type": "string"
},
"slotName": {
"type": "string"
}
},
"resources": [
{
"apiVersion": "2015-04-01",
"type": "Microsoft.Web/Sites/Slots",
"name": "[concat(parameters('siteName'), '/', parameters('slotName'))]",
"location": "[resourceGroup().location]",
"properties": {},
"resources": []
}
]
}
Run Code Online (Sandbox Code Playgroud)
然后,我们可以使用 Azure devops 部署 ARM 模板。
希望这可以帮助。
小智 5
我可以使用 powershell 和 Microsft Hosted Agent 在 azure devops 管道中创建一个 WebbApp 插槽,这是任务:
根据文档示例:
- task: AzureCLI@2
displayName: Azure CLI
inputs:
azureSubscription: <Name of the Azure Resource Manager service connection>
scriptType: ps
scriptLocation: inlineScript
inlineScript: |
az --version
az account show
Run Code Online (Sandbox Code Playgroud)
对于内联脚本,我使用了“az webapp deployment slot create” Azure CLI 命令:
az webapp deployment slot create --name
--resource-group
--slot
[--configuration-source]
[--subscription]
Run Code Online (Sandbox Code Playgroud)
这有帮助吗?