我有一个包含多项服务的mono-repo。理想情况下,我想并行测试每个服务。每个分支有两个阶段:
给出类似的东西:
clone
/ \
/ \
/ \
/ \
svc1-test svc2-test
| |
svc1-bench svc2-bench
\ /
\ /
\ /
\ /
notify
只有在所有分支都成功的情况下,构建才会通过。此外,如果任何给定分支的测试失败,我们可能会提前失败并且不执行基准测试。
通过阅读文档,我看到如何使用group
运行并行阶段,而不是如何将多个阶段放在一个分支中。
我想我的后备解决方案是将组合测试+基准测试放在一个阶段,但我认为隔离它们会很好,特别是因为每个依赖项可能会有所不同。
答案 0 :(得分:0)
我在寻找类似的东西,发现它由用户here回答了cdieck。
This is how it looks in Blue Ocean.
复制相同内容以供快速参考:
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'
}
}
}
}
}
}
}
}