提问人:nrofis 提问时间:11/16/2023 最后编辑:nrofis 更新时间:11/16/2023 访问量:61
在Azure DevOps中创建“基于差异”的拉取请求入口
Create "diff-based" pull request gate in Azure DevOps
问:
我有一个门(构建验证/状态检查),可以运行我编写的一些基准测试。基准测试运行新代码并返回新代码的总运行时间。
我想让这个门成为基于差异的指标,而不是像“如果时间小于 10 秒”这样的硬编码阈值,以查看新建议的代码与来自该分支的分支提交结果之间的运行时间差异百分比(通常在代码覆盖率门中完成)main
是否有内置方法可以在Azure DevOps上制作“基于差异”的门?
答:
1赞
Kevin Lu-MSFT
11/16/2023
#1
恐怕没有内置方法可以在Azure DevOps中制作“基于差异”的门。
解决方法是,您可以通过 Branch 策略中的 Build Validation 运行 Pipeline,以获取 Pull Ruqeust 预合并代码的运行时间和 main 分支的运行时间。最后,通过自定义脚本获取百分比。
步骤如下:
Step1:创建 Build Pipeline(YAML 类型),并使用 repo 资源检出当前 repo 的 main 分支。
例如:
resources:
repositories:
- repository: mainbranchrepo
type: git
name: sqlite-dotnet-core.git
ref: main
pool:
vmImage: ubuntu-latest
steps:
- checkout: self
path: s/PullRequest
- checkout: mainbranchrepo
path: s/MainBranch
在这种情况下,一旦 Pull Request 触发了流水线,它将同时检出预合并的分支和主分支。
Step2:添加步骤以在 Pull Request Branch 和 Main Branch 上运行基准测试。然后,您可以收集基准测试的两个运行时
Step3:添加自定义脚本以获取运行时的百分比差异。
例如:
resources:
repositories:
- repository: mainbranchrepo
type: git
name: sqlite-dotnet-core.git
ref: main
pool:
vmImage: ubuntu-latest
steps:
- checkout: self
path: s/PullRequest
- checkout: mainbranchrepo
path: s/MainBranch
- run benchmark tests on Pull Request Branch
- run benchmark tests on Main Branch
- script: custom script to get the % result
步骤 4:添加生成验证分支策略以使用上面的 YAML 管道。
当 Pull Request 触发 Pipeline 时,它将显示以下分支:
注意:如果需要在自定义脚本中使 Pipeline 失败或将运行时值传递给下一个任务。您可以使用 logging 命令
评论
0赞
nrofis
11/16/2023
谢谢你的回答。但我并不完全理解。如何一个接一个地使用两个,如何在正确的分支中运行基准测试?checkout
1赞
Kevin Lu-MSFT
11/16/2023
在结帐步骤中,我们可以设置每个分支的路径。然后,分支将签出到单独的文件夹。运行基准测试时,可以使用特定文件夹中的代码。例如:转到目标文件夹并运行基准测试。
1赞
Kevin Lu-MSFT
11/16/2023
由于它来自同一个存储库,如果我们不设置结帐分支的路径,则后面的签出分支将覆盖上一个签出的分支。所以这是必需的。答案 abobee 中的路径值:s/PullRequest = $(build.sourcesdirectory)/PullRequest
1赞
nrofis
11/16/2023
啊,现在我明白了。谢谢!
评论