AzureDevOps YAML管道存储库资源`ref`后备

时间:2020-04-03 17:08:40

标签: git azure-devops continuous-integration

我们正在试验AzureDevOps。我们使用git multirepo,不幸的是,不同的仓库之间存在直接的依赖关系。使用以前的工具,我们曾经使用名称匹配来自不同存储库的分支,并将其名称回退到master-如果某个回购中不存在分支XXX,而使用master的话。

我想使用AzureDevOps YAML语法实现相同的行为。这是我的尝试。

resources:         
  repositories:
  - repository: repo      
    type: GitHub
    connection: myGitHubConnection
    source: primaryRepo
    ref: $(Build.SourceBranchName)
  - repository: repo      
    type: GitHub
    connection: myGitHubConnection
    source: secondaryRepo
    ref: $(Build.SourceBranchName)

它有一个问题-如果$(Build.SourceBranchName)上不存在secondaryRepo,则管道失败并显示以下消息:

管道无效。无法获取使用ref refs / heads / $(Build.SourceBranchName)在GitHub上托管的存储库公司/ secondaryRepo的最新源版本...

替换特定分支名称的地方(可变作品)。

ref无效(分支不存在)的情况下是否可以指定回退?我尝试执行重复的ref并在YAML中使用列表,但没有成功。

1 个答案:

答案 0 :(得分:1)

首先,我们不支持在ref中使用动态变量。截至今天,用户必须在此处提供一个fixed value

这就是为什么您收到诸如using ref refs/heads/$(Build.SourceBranchName)之类的消息的原因。您可以直接看到在解析期间未成功编译实际的分支名称。

此外,我们的系统只能一次解析存储库。

这意味着一旦系统解析了作业之后,系统发现一个分支不存在(通常,该作业在initial步骤中完成,而该步骤在运行时之前完成了),我们的系统将无法一个自动重新编译的过程,即退回到master分支。

enter image description here


我们已将此suggestion考虑​​在内,一旦它实际扩展,它可能有助于实现您想要的目标,因为我们可以在此处创建表达式条件和变量。您可以在此处投票和评论,以提高其优先级。

如果ref无效,是否有一种方法可以指定回退(分支确实 不存在)?

条件表达式和变量不允许在此处应用,也许它们可以以API或脚本的形式实现?

恐怕但必须说,不,直到现在都不可能实现。

根据您的经验,一旦我们的系统发现分支不存在,整个管道将失败。如果管道未运行,则API /脚本将没有任何机会执行操作(后退)。

相关问题