gpt4 book ai didi

jenkins - 如何在 Jenkins 并行管道中聚合测试结果?

转载 作者:行者123 更新时间:2023-12-02 04:06:46 25 4
gpt4 key购买 nike

我有一个Jenkinsfile具有并行测试执行的定义,任务是从两者中获取测试结果,以便在 post 中处理它们。走到某个地方。

问题是:如何做到这一点?搜索任何充当示例代码的内容都不会显示任何内容 - 这些示例都涉及解释 parallel ,或者他们解释postjunit .

pipeline {
agent { node { label 'swarm' } }

stages {
stage('Testing') {
parallel {
stage('Unittest') {
agent { node { label 'swarm' } }

steps {
sh 'unittest.sh'
}
}

stage ('Integrationtest') {
agent { node { label 'swarm' } }

steps {
sh 'integrationtest.sh'
}
}
}
}
}
}

定义post {always{junit(...)}}两个并行阶段的步骤都从 BlueOcean GUI 中产生了积极的 react ,但测试报告记录的测试量几乎增加了一倍 - 非常奇怪,某些文件必须被扫描两次。添加此post步骤到周围的“测试”阶段出现错误。

我缺少一个详细说明如何后处理在 parallel 中创建的测试结果的示例。 block 。

最佳答案

只是为了记录我的解决方案以供互联网使用:

我想出了在两个并行步骤中存储测试结果,并添加取消存储文件的最后一步,然后post处理它们:

pipeline {
agent { node { label 'swarm' } }

stages {
stage('Testing') {
parallel {
stage('Unittest') {
agent { node { label 'swarm' } }

steps {
sh 'rm build/*'
sh 'unittest.sh'
}
post {
always {
stash includes: 'build/**', name: 'testresult-unittest'
}
}

}

stage ('Integrationtest') {
agent { node { label 'swarm' } }

steps {
sh 'rm build/*'
sh 'integrationtest.sh'
}

post {
always {
stash includes: 'build/**', name: 'testresult-integrationtest'
}
}
}
}
}

stage('Reporting') {
steps {
unstash 'testresult-unittest'
unstash 'testresult-integrationtest'
}

post {
always {
junit 'build/*.xml'
}
}
}
}
}

但我的观察是,您必须注意清理工作区:两个测试阶段都会创建一个文件,但在第二次运行时,两个工作区都是从前一次运行继承的,并且先前创建的测试结果都存在于build 目录。

因此,在开始新的运行之前,您必须删除测试结果的所有剩余部分,否则您会从“其他”阶段存储测试结果的旧版本。不知道有没有更好的办法。

关于jenkins - 如何在 Jenkins 并行管道中聚合测试结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47268418/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com