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



尝试使用DSL脚本在Jenkins中创建多个作业。

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

我正在使用复制工件将下游作业的结果复制到多作业的目标目录

然而,我得到了一个错误,说提供方法和测试的多个扩展失败了。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)
}
}
}

运行等级测试后出现以下错误

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]]

我不确定是否有一种方法可以指示使用特定工件的方法。

在这个问题上已经坚持了很长一段时间。任何帮助都将不胜感激。提前谢谢!

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

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

2-使用configure块来修改xml文件,这将避免这种冲突&您可以保留多个支持相同扩展的插件。(推荐解决方案(

谢谢,

延迟更新:我所要做的是转而使用脚本管道作业。并不是所有想要使用的方法都允许配置块,而且它们受到设计的限制。我相信有些插件出于安全原因也不允许使用它。

最好使用管道。

相关内容

  • 没有找到相关文章

最新更新