Azure Pipelines - 模板表达式 x“dependsOn”或“condition”

问题描述 投票:0回答:1

正如你们中的一些人所知,在 Azure Pipelines 中,我们可以在作业和阶段上包含“dependsOn”子句以及“condition”,以便我们可以根据运行中的某些值或变量动态运行阶段和作业管道。

但是我们也可以设置模板表达式来完成几乎相同的事情。

这是一个使用模板表达式设置舞台的示例。

stages:
- ${{ if eq(variables['Build.SourceBranchName'], 'development') }}:
      - stage: Deploy
        dependsOn: Build
        displayName: "Deploying to development environment."
        jobs:
          - deployment:
            environment: MyEnvironment
            strategy:
              runOnce:
                deploy:
                  steps:
                    - task: AzureRmWebAppDeployment@4
                      inputs:
                        ConnectionType: "AzureRM"
                        azureSubscription: "MySubscription"
                        appType: webAppContainer
                        WebAppName: $(environmentName)
                        DockerNamespace: $(ContainerRegistry)
                        DockerRepository: appRepo
                        DockerImageTag: development-$(Build.BuildId)

这是在某种条件下运行的阶段的示例:

- stage: DeployHomolog
    dependsOn: Build
    condition: and(succeeded(), eq(variables['Build.SourceBranchName'], 'dev'))
    displayName: "Deploying to Homolog Environment"
    jobs:
      - deployment:
        environment: MyEnvironment
        strategy:
          runOnce:
            deploy:
              steps:
                - task: AzureRmWebAppDeployment@4
                  inputs:
                    ConnectionType: "AzureRM"
                    azureSubscription: "MySubscription"
                    appType: webAppContainer
                    WebAppName: WebApp
                    DockerNamespace: $(acr)
                    DockerRepository: appRepo
                    DockerImageTag: dev-$(Build.BuildId)

问题是:

它们各自的优点和缺点是什么?您更喜欢在管道上使用其中哪一个?

azure-devops yaml azure-pipelines
1个回答
0
投票

@加布里埃尔·安东尼奥

这取决于使用案例和复杂性,如果上面是单个管道文件(azure-pipeline.yml)实现,则可以直接使用。

在更复杂的实现中,使用模块化模板(让管道调用不同的模板化管道),模板表达式可以帮助构建动态、可重用且灵活的模板。

查看 TheYAMLPipelineOne

© www.soinside.com 2019 - 2024. All rights reserved.