执行存储在不同分支中的 Yaml 管道作为 PR 构建验证 - Azure Devops Services

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

当尝试在拉取请求上使用构建验证时,我添加了一个存储在不同分支上的管道(已测试并手动工作)。

然后拉取请求开始,我在管道上看不到任何进展,并且“队列”按钮变灰了几分钟并返回到相同的状态。看图:

enter image description here

按“队列”没有帮助,因为管道未启动。 使用 Azure Repos 上的 Git Repo 处理 Azure DevOps 服务。

我已经删除了 YAML 中的任何限制(无触发器或分支限制)。

请参阅下面的 YAML

resources:
  repositories:
    - repository: self
      type: git
      name: GIT/aGit
      ref: refs/heads/dev/prbase
jobs:
- job: Phase_1
  displayName: Agent job 1
  timeoutInMinutes: 90
  pool:
    name: W10VS2022
  steps:
  - checkout: none
    fetchDepth: 1
    lfs: true
    persistCredentials: True
  - task: PowerShell@2
    name: Task1
    displayName: Stop All
    inputs:
      targetType: inline
      script: >-
        Write-Host "Stop all C:\install"

        Get-Process | Where-Object {$_.Path -like "c:\install*"} | Stop-Process -Verbose

** 无法选择在不同分支中使用 YAML 进行 PR **

pull-request azure-pipelines-yaml azure-devops-services
1个回答
1
投票

当尝试在拉取请求上使用构建验证时,我添加了一个存储在不同分支上的管道。

问题的原因是管道的YAML文件存储在不同的分支上。当我做同样的事情时,我可以重现同样的问题。

如果我将管道更改为 YAML 文件存储在拉取请求的源或目标分支上的管道,管道将正常运行。然后我们就可以查看运行成功了,发现在checkout这一步,是

Checkout reponame@refs/pull/{pullrequestID}/merge to s

因此,构建验证中触发的运行将使用拉取请求的源代码(

@refs/pull/{pullrequestID}/merge
)。这是有道理的,因为构建验证的目的是检查拉取请求中的代码是否足以合并。

回到您的情况,当管道的 YAML 文件存储在不同分支上时,该 YAML 文件不在拉取请求的文件列表中。因此,由于 YAML 文件不存在,管道将不会运行。

© www.soinside.com 2019 - 2024. All rights reserved.