【问题标题】:Condition on pipeline Stage execution not working管道阶段执行不工作的条件
【发布时间】:2019-10-22 14:01:11
【问题描述】:

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

条件是repo名称中必须包含“application”关键字,如果不是则需要忽略stage;

我的代码是这样的

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

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

任何帮助如何才能让这些工作人员?

【问题讨论】:

  • 我无法重现您的问题,我尝试了条件并跳过了阶段。 (我没用模板,可能有关系吧?)
  • 如果repo名称包含'application'阶段也将被跳过,您可以通过repo名称包含的任何内容更改'application',将被跳过,你能确认吗?
  • 这是工作变量['Build.DefinitionName']
  • 我的错!即使我的回购包含我在条件中输入的单词,也跳过了这个阶段。
  • @AnouarBAKRI,嗨,最近怎么样?我的回答能帮你解决问题吗?如果是,您可以接受答案,因此其他 SO 用户将能够看到该解决方案是否有效。如果您仍然遇到一些问题,请随时在此处发表评论:-)

标签: azure-devops azure-pipelines


【解决方案1】:

您可以更改条件以影响您的任务而不是阶段。例如,首先我将 YAML 文件设置如下。

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

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

当我如下编辑 YAML 文件时。

部署阶段将按预期运行。

如果存储库名称不符合条件,错误日志如下。

【讨论】:

    猜你喜欢
    • 2018-01-28
    • 2016-08-20
    • 2021-12-07
    • 2020-05-03
    • 1970-01-01
    • 2021-01-31
    • 2017-02-20
    • 1970-01-01
    • 2016-10-08
    相关资源
    最近更新 更多