All*_* Xu 2 azure azure-devops azure-pipelines-tasks azure-pipelines-yaml
我有一个 Azure DevOps 部署 YAML 管道,用于创建 Azure 应用服务并向其部署代码。实际的管道更复杂,但我针对这个问题将其简化。
目前,我的管道可以使用变量中定义的资源名称成功部署到特定的 Azure 订阅(服务连接器)。
我需要对管道进行参数化,以便它可以使用多个服务连接器部署到多个不同的环境(指 Azure 订阅)。每个环境都有不同的 Azure 资源命名约定。
有没有办法从 XML 或 JSON 文件读取管道变量的值?这样,我可以为每个环境拥有多个配置文件,并将它们存储为我的存储库的一部分。
这是多环境部署管道配置的正确方法吗?
您可以使用变量模板。还有另一个有趣的链接:了解有关模板变量重用的更多信息。
这里我有这个平面文件夹结构(为了示例的清晰度):
.
| deploy-app.job.yaml
| deploy-app.pipeline.yaml
| variables.dev.yaml
| variables.prod.yaml
Run Code Online (Sandbox Code Playgroud)
所以在这里我们尝试reusable使用不同的变量集运行作业deploy-app.job.yaml。
我在每个variable.{env}.yaml文件中定义了一些变量
.
| deploy-app.job.yaml
| deploy-app.pipeline.yaml
| variables.dev.yaml
| variables.prod.yaml
Run Code Online (Sandbox Code Playgroud)
该deploy-app.job.yaml文件接受一个允许注入变量模板的参数:
# variables.dev.yaml
variables:
vmImage: ubuntu-20.04
serviceConnection: dev-service-connection
# variables.prod.yaml
variables:
vmImage: ubuntu-20.04
serviceConnection: prod-service-connection
Run Code Online (Sandbox Code Playgroud)
在主管道中,我可以创建不同的阶段并注入所需的变量:
# deploy-app.job.yaml
parameters:
- name: envVariablesTemplate
type: string
jobs:
- deployment: deploy
variables:
# Inject the verianle template here
- template: ${{ parameters.envVariablesTemplate }}
pool:
# Use the variable from the template
vmImage: ${{ variables.vmImage }}
strategy:
runOnce:
deploy:
steps:
- task: AzureCLI@2
displayName: Hello from azure cli
inputs:
# Use the variable from the template
azureSubscription: ${{ variables.serviceConnection }}
scriptType: pscore
scriptLocation: inlineScript
inlineScript: echo 'Hello from azure cli'
Run Code Online (Sandbox Code Playgroud)
根据您的需要,您可以添加多个变量模板,具有命名约定等。这完全取决于您并取决于管道的复杂性。
| 归档时间: |
|
| 查看次数: |
2330 次 |
| 最近记录: |