PR触发,无需在monorepo中重建、测试、重新部署管道中的所有服务
PR触发器与Azure Repos Git中的CI触发器不同。这是因为:
在Azure Repos Git中,此功能是使用分支实现的
政策。为了在Azure Git Repos中启用拉取请求验证,
导航到所需分支的分支策略,并配置
这个
Build validation policy
对于这个分支。有关更多信息,请参见
Configure branch policies
.
所以,
PR triggers in YAML still not be supported on Azure DevOps
,我们不能直接使用该条件进行构建、测试、部署,如下所示:
condition: contains(variables['Build.SourceBranch'], 'refs/heads/staging')
我们必须在构建、测试、部署中添加powershell任务,以确定哪些“微服务”受到了与PR相关的提交的影响,例如:
$editedFiles = git diff HEAD HEAD~ --name-only
echo "$($editedFiles.Length) files modified:"
$editedFiles | ForEach-Object {
echo $_
Switch -Wildcard ($_ ) {
'app/admin-v2/*' {
# If the admin-v2 is updated, we need to generate the variable Enable_Admin-v2
Write-Output "##vso[task.setvariable variable=Enable_Admin-v2]True"
}
'app/api-v2/*' { Write-Output "##vso[task.setvariable variable=api-v2]True" }
# The rest of your path filters
}
}
此脚本设置变量,然后在构建、测试、部署管道的下一步中在自定义条件中引用这些变量:
and(succeeded(), eq(variables['Enable_Admin-v2'], 'True'))