当尝试在拉取请求上使用构建验证时,我添加了一个存储在不同分支上的管道(已测试并手动工作)。
然后拉取请求开始,我在管道上看不到任何进展,并且“队列”按钮变灰了几分钟并返回到相同的状态。看图:
按“队列”没有帮助,因为管道未启动。 使用 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 **
当尝试在拉取请求上使用构建验证时,我添加了一个存储在不同分支上的管道。
问题的原因是管道的YAML文件存储在不同的分支上。当我做同样的事情时,我可以重现同样的问题。
如果我将管道更改为 YAML 文件存储在拉取请求的源或目标分支上的管道,管道将正常运行。然后我们就可以查看运行成功了,发现在checkout这一步,是
Checkout reponame@refs/pull/{pullrequestID}/merge to s
。
因此,构建验证中触发的运行将使用拉取请求的源代码(
@refs/pull/{pullrequestID}/merge
)。这是有道理的,因为构建验证的目的是检查拉取请求中的代码是否足以合并。
回到您的情况,当管道的 YAML 文件存储在不同分支上时,该 YAML 文件不在拉取请求的文件列表中。因此,由于 YAML 文件不存在,管道将不会运行。