在阶段运行条件下使用resources.pipeline.pipleine.sourceBranch

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

我有一个多级管道,它有来自另一个管道的触发器。如果触发管道不在“主”分支中,我想跳过所有生产阶段,例如:

  - ${{ if eq(variables.resources.pipeline.ACP_Server_Build.sourceBranch, 'refs/heads/main') }}:
    - stage:....

有没有办法在我描述的情况下使用资源sourceBranch?

如果我使用目标管道源分支,我可以使用以下命令来完成:

variables:
  - name: isMain
    value: ${{ eq(parameters.branch, 'main') }}

  - ${{ if eq(variables['isMain'], true) }}:
    - stage:....

但是文档显示变量:

resources.pipeline.resourceName.sourceBranch
不可用作模板变量。如果我尝试设置这样的变量:

  - name: resourceBranch
    value: $(resources.pipeline.resourceName.sourceBranch)

然后

$(resourceBranch)
在步骤内可用,但在模板条件下也不起作用。我真的不想在每个阶段添加
condition:
,因为与根级别条件不同,根级别条件只是将跳过的阶段排除在运行之外,在每个阶段单独添加条件会导致大量“阶段跳过”项目在部署中。

azure-devops conditional-statements yaml
1个回答
0
投票

我真的不想为每个阶段添加一个

condition:

如果你想使用类似的东西,恐怕你没有其他选择:

variables:
  - name: resourceBranch
    value: $(resources.pipeline.resourceName.sourceBranch)

根据管道资源元数据作为预定义变量

  • 在每次运行中,管道资源的元数据可作为以下预定义变量供所有作业使用。 这些变量在运行时可供您的管道使用,因此不能在模板表达式中使用,模板表达式是在管道编译时评估的。
resources.pipeline.<Alias>.projectName
resources.pipeline.<Alias>.projectID
resources.pipeline.<Alias>.pipelineName
resources.pipeline.<Alias>.pipelineID
resources.pipeline.<Alias>.runName
resources.pipeline.<Alias>.runID
resources.pipeline.<Alias>.runURI
resources.pipeline.<Alias>.sourceBranch
resources.pipeline.<Alias>.sourceCommit
resources.pipeline.<Alias>.sourceProvider
resources.pipeline.<Alias>.requestedFor
resources.pipeline.<Alias>.requestedForID
© www.soinside.com 2019 - 2024. All rights reserved.