azure - 使用 ARM 模板创建 Azure Web 应用程序后,我们可以将 Web 应用程序名称作为参数传递给 YAML 管道吗?
问题描述
我是 devops 的新手,对此感到震惊。我正在开发基础设施作为项目的代码,该项目有多个 API、一个 Angular、一个数据库项目和一些其他组件。
我已创建 - ARM 模板,用于将资源部署到 Azure YAML 文件,以构建代码并将其部署到应用程序。
我不知道如何对这些任务进行分组。我需要在 ARM 模板部署完成后触发 yaml 管道并将 WebApp 名称传递给管道,以便可以部署工件。
提前感谢您的帮助。
解决方案
正常情况下,我们不会分别执行 ARM 模板部署任务和 Azure 应用服务部署任务。在第一阶段执行 ARM deploy,然后在第二阶段,从前一阶段的输出中获取WebsiteName
or which:ResourceGroupName
对于 YAML,您应该像这样配置它(这只是一个部分定义,用于显示有关YAMLARM
和APP
部署的关键代码):
variables:
WebAppName: {the webapp name you want to used}
stages:
- stage: ARMdeploy
jobs:
- job: ARM
steps:
- checkout: none
- task: AzureResourceGroupDeployment@2
inputs:
azureSubscription: '{Subscription name}'
action: 'Create Or Update Resource Group'
resourceGroupName: '{resource group name }'
location: 'Central US'
templateLocation: 'Linked artifact'
csmFile: '{json file}'
overrideParameters: '-webAppName $(WebAppName)'
deploymentMode: 'Incremental'
- stage: APPdeploy
dependsOn: ARMdeploy
condition: succeeded()
jobs:
- job: APP
steps:
- task: AzureRmWebAppDeployment@4
displayName: 'Azure App Service Deploy: MerlinAngular-webapp'
inputs:
ConnectionType: 'AzureRM'
azureSubscription: '{Subscription name}'
appType: 'webApp'
WebAppName: '$(WebAppName)'
packageForLinux: '$(System.DefaultWorkingDirectory)/**/*.zip'
在我的 ARM json 文件中,我定义了参数 name webAppName
,并使用来自任务的值而不是使用parameter.json
文件
并且在 YAML 配置中,使用overrideParameters: '-WebAppName $(WebAppName)'
来覆盖这个参数值。因为WebAppName
是一个预定义变量,可以在一个发布管道的所有阶段获取值。另外,我将 设置APP deploy stage
为取决于ARM deploy stage
's 成功。现在,在 ARM 部署完成后,WebApp 名称将传递给作业,以便可以使用此 WebApp 名称部署 APP 部署。
但是,由于您没有显示您的 ARM 模板结构,如果您在parameter.json
文件中定义了 WebApp 名称,则需要安装扩展ARM Outputs ,然后在 ARM 模板部署完成后使用任务ARM Outputs
获取此变量。WebApp name
此任务可以将 ARM deploy 的所有输出转换为变量,现在您仍然可以使用$(xxx)
将值传递给 APP deploy 任务。
希望这些方法可以帮到你。
推荐阅读
- c++ - CLANG 3.42 中的误报
- for-loop - 合并在terraform中失败
- loops - 插入时随机删除重复
- javascript - 如何更改点击操作以转到链接而不是输入文本
- r - 使用示例数据时 tmaptools 包读取 osm 中的参数错误
- c - 如何指定内核模块的编译优化级别
- docker - Docker 容器使用主机的特定网络接口
- c# - 跳过特定控制器 API 上的 [Authorize] 属性以进行可选授权是否安全?
- ng-zorro-antd - NG-Zorro 什么时候支持 Resizable column
- javascript - 有没有办法实现“单击”、“双击”和“单击并按住”来处理同一个元素?