我有4个jenkins作业,都是pytest,每个作业的shell命令如下
pytest -v --junitxml=result.xml || exit 0我添加|| exit 0的原因是希望每个作业一个接一个地运行,甚至任何一个作业都会失败。
我创建一个管道作业,管道脚本如下所示
node {
stage('win10_chrome90_admin') {
build job: 'UI_automation_win10_chrome90_admin', propagate: false
}
stage('win10_chrome90_salesman') {
build job: 'UI_automation_win10_chrome90_salesman', propagate: false
}
stage('win10_firefox88_admin') {
build job: 'UI_automation_win10_firefox88_admin', propagate: false
}
stage('win10_firefox88_salesman') {
build job: 'UI_automation_win10_firefox88_salesman', propagate: false
}
}因此,每次我运行管道时,舞台视图总是绿色的,我无法判断是否有作业测试失败,实际上,在单击其作业视图后,图像中的第二个作业显示为不稳定的。
当作业测试失败时,是否可以将作业网格显示为黄色(不稳定)?(与单击作业后看到的相同)

发布于 2021-06-09 08:07:28
在pytest中使用pytest插件pytest-custom-exit-code,所以我的测试作业中的shell命令如下所示
pytest -v --junitxml=result.xml --suppress-tests-failed-exit-code
在我的管道作业中,管道脚本类似于
pipeline {
agent any
stages {
stage('win10_chrome90_admin') {
steps {
catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE'){
build job: 'UI_automation_win10_chrome90_admin'
}
}
}
stage('win10_chrome90_salesman') {
steps {
catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE'){
build job: 'UI_automation_win10_chrome90_salesman'
}
}
}
stage('win10_firefox88_admin') {
steps {
catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE'){
build job: 'UI_automation_win10_firefox88_admin'
}
}
}
}
}最后,我的管道(依次运行4个测试作业)如下所示,如果任何测试作业测试失败,则阶段网格将显示不稳定(黄色),下一个作业将继续启动。

发布于 2021-06-08 11:29:07
在这种情况下,您可以使用catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE'),这样管道就成功了,但是阶段显示为失败。您可以选择buildResult和stageResult的状态,以防它不稳定或失败。
示例管道:在下面的示例中,即使阶段“测试”失败,其他阶段仍将被执行,并且在视图中阶段“测试”将被标记为失败。
stage("Testing") {
steps {
catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE'){
script {
// You can execute your commands without || exit 0
}
}
}编辑:还可以通过以下方式添加不稳定行为:
pipeline {
agent any
stages {
stage('win10_chrome90_admin') {
steps {
script{
try {
build job: 'UI_automation_win10_chrome90_admin'
}
catch (e){
unstable('win10_chrome90_admin failed!')
}
}
}
}
stage('win10_chrome90_salesman') {
steps {
script{
try {
build job: 'UI_automation_win10_chrome90_salesman'
}
catch (e){
unstable('win10_chrome90_salesmanfailed!')
}
}
}
}
stage('win10_firefox88_admin') {
steps {
script{
try {
build job: 'UI_automation_win10_firefox88_admin'
}
catch (e){
unstable('UI_automation_win10_firefox88_adminfailed!')
}
}
}
}
}
}
}https://stackoverflow.com/questions/67884645
复制相似问题