我有一个包含多个服务的单存储库。理想情况下,我想并行测试每个服务。每个分支有 2 个阶段:
- 测试
- 基准
给出类似的东西:
clone
/
/
/
/
svc1-test svc2-test
| |
svc1-bench svc2-bench
/
/
/
/
notify
仅当所有分支都成功时,生成才会通过。此外,我们可能会提前使分支失败,并且如果任何给定分支的测试失败,则不执行基准测试。
通过阅读文档,我看到了如何使用group
运行并行阶段,但没有了解如何将多个阶段放在一个分支中。
我想我的后备解决方案是将组合测试+基准放在一个阶段中,但我认为隔离它们会很好,特别是因为每个依赖关系可能有所不同。
我正在寻找类似的东西,并发现用户 cdieck 在这里回答了它。
这就是它在蓝海中的样子。
复制相同的内容以供快速参考:
pipeline {
agent none
stages {
stage("Example") {
failFast true
parallel {
stage("win7-vs2012") {
agent {
label "win7-vs2012"
}
stages {
stage("checkout (win7-vs2012)") {
steps {
echo "win7-vs2012 checkout"
}
}
stage("build (win7-vs2012)") {
steps {
echo "win7-vs2012 build"
}
}
stage("test (win7-vs2012)") {
steps {
build 'test-win7-vs2012'
}
}
}
}
stage("win10-vs2015") {
agent {
label "win10-vs2015"
}
stages {
stage("checkout (win10-vs2015)") {
steps {
echo "win10-vs2015 checkout"
}
}
stage("build (win10-vs2015)") {
steps {
echo "win10-vs2015 build"
}
}
stage("test (win10-vs2015)") {
steps {
build 'test-win10-vs2015'
}
}
}
}
stage("linux-gcc5") {
agent {
label "linux-gcc5"
}
stages {
stage("checkout (linux-gcc5)") {
steps {
echo "linux-gcc5 checkout"
}
}
stage("build (linux-gcc5)") {
steps {
echo "linux-gcc5 build"
}
}
stage("test (linux-gcc5)") {
steps {
build 'test-linux-gcc5'
}
}
}
}
}
}
}
}