正如你们中的一些人所知,在 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-pipeline.yml)实现,则可以直接使用。
在更复杂的实现中,使用模块化模板(让管道调用不同的模板化管道),模板表达式可以帮助构建动态、可重用且灵活的模板。