管道条件阶段执行不起作用

时间:2019-10-22 14:01:11

标签: azure-devops azure-pipelines

我需要为执行yml文件(构建管道)中的阶段设置条件。

条件是,回购名称必须包含“ application”关键字,否则,该阶段需要忽略;

我的代码就是这样

- stage: deploy
  condition: contains(variables['Build.Repository.Name'],'application')
  dependsOn: build
  jobs:
   - template: deploy-snapshot-jobs.yml@pipelines-templates

它不是这样,我认为解释器不会用存储库名称替换变量['Build.Repository.Name'],因为当我使用回购名称的文字值时,它可以正常工作

有什么帮助可以让这个工作的人吗?

1 个答案:

答案 0 :(得分:1)

您可以更改配置以使您的任务不在舞台上。例如,首先我将YAML文件设置如下。 enter image description here

部署阶段不会排队,您可以在日志中看到一些差异。 enter image description here

部署阶段没有任务执行前的准备阶段。如果该阶段未签出git源,则Build.Repository.Name值将为null。这就是为什么您的部署阶段不会排队的原因。 由于不同的阶段意味着不同的环境和代理,因此需要在不同的阶段再次获取代理范围的变量值。 Build.Repository.Name是代理范围的变量,您可以参考https://docs.microsoft.com/en-us/azure/devops/pipelines/build/variables?view=azure-devops&tabs=yaml#build-variables

当我如下编辑YAML文件时。 enter image description here

Deploy阶段将按预期运行。 enter image description here

如果存储库名称与条件不匹配,则错误日志如下。 enter image description here