Jenkins DSL脚本 - 测试失败 - 找到多个扩展,提供lastCompleted方法

问题描述 投票:0回答:2

尝试使用DSL脚本在Jenkins中创建多工具。

一个阶段有多个作业,我想为下游作业的多工作创建一个综合报告。

我正在使用复制工件将下游作业的结果复制到multijob的目标目录。使用selector - lastCompleted()

但是我得到一个错误,说多个扩展提供方法和测试失败。 lastCompleted()显然出现在copyArtifact和multijob插件中,在这种情况下我需要两者。

这是我的脚本:

multiJob('dailyMultiJob') {
concurrentBuild(true)
logRotator(-1, 10, -1, 10)
triggers {
    cron('H H(0-4) * * 0-6')
}
steps {
        phase('Smoke Tests'){
            phaseJob('JobA')
            phaseJob('JobB')
            phaseJob('JobC')                
        }
        copyArtifacts{
            selector{
                lastCompleted()    
            }
            projectName('JobA')
            filter('target/allure-results/*.*')
            target('/path/to/this/multijob/workspace')
            flatten(false)
        }           
        copyArtifacts{
            selector{
                lastCompleted()    
            }
            projectName('JobB')
            filter('target/allure-results/*.*')
            target('/path/to/this/multijob/workspace')
            flatten(false)
        }           
        copyArtifacts{
            selector{
                lastCompleted()    
            }
            projectName('JobC')
            filter('target/allure-results/*.*')
            target('/path/to/this/multijob/workspace')
            flatten(false)
        }           

}
publishers {
            allure {
                results {
                    resultsConfig {
                        path('target/allure-results')
                    }
                }
            }
            archiveArtifacts {
                pattern('target/reports/**/*.*')
                pattern('target/allure-results/**/*.*')
                allowEmpty(true)
            }
   }
}

运行gradle测试后得到以下错误

Caused by: javaposse.jobdsl.dsl.DslException: Found multiple extensions which provide method lastCompleted with arguments []: [[hudson.plugins.copyartifact.LastCompletedBuildSelector, com.tikal.jenkins.plugins.multijob.MultiJobBuildSelector]]

我不确定是否有办法表明使用特定工件的方法。

已经坚持了很长一段时间。任何帮助都非常感谢。先感谢您!

jenkins groovy dsl jenkins-job-dsl jenkins-groovy
2个回答
1
投票

几个月前我遇到过同样的问题。这个问题有两种可能的解决方案。

1 - 只保留一个可以避免冲突的插件。 (不推荐,因为它可能会打破其他工作)

2-使用configure block修改xml文件以避免此冲突,并且可以保留多个支持相同扩展名的插件。 (推荐解决方案)

谢谢,


0
投票

更新后期:我要做的就是切换到脚本管道作业。在您想要使用的所有方法上实际上不允许配置块,它们受设计限制。我相信一些插件也出于安全考虑而不允许这样做。

最好使用管道。

© www.soinside.com 2019 - 2024. All rights reserved.