jenkins - Jenkins DSL 脚本 - 测试失败 - 发现多个提供方法 lastCompleted 的扩展
问题描述
尝试使用 DSL 脚本在 Jenkins 中创建多作业。
一个阶段有多个作业,我想为下游作业的多作业创建一个合并报告。
我正在使用复制工件将下游作业的结果复制到多作业的目标目录。使用选择器 - 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]]
我不确定是否有办法指示使用特定工件的方法。
被困在这个问题上已经有一段时间了。任何帮助都将受到高度赞赏。先感谢您!
解决方案
几个月前我遇到了同样的问题。这个问题有两种可能的解决方案。
1 - 只保留一个可以避免冲突的插件。(不推荐,因为它可能会破坏其他工作)
2-使用配置块来修改xml文件,这将避免这种冲突并且您可以保留多个支持相同扩展的插件。(推荐解决方案)
谢谢,
推荐阅读
- python - 以下逻辑在 Python 中做了什么?
- git - 设置 Git 全局变量
- android - 如何配置以便我可以从 GluonHQ 安装两个以上的应用程序 - JavaFX
- selenium-webdriver - 附加在范围报告中的屏幕截图未显示在 Bamboo 工件中,尽管它在本地工作正常
- arangodb - 是否可以在 arangodb 中事先不知道确切结构的情况下对所有属性进行索引?
- r - 当 annotate() 层的标签有下标时,ggsave() 不起作用
- typescript - 在 Typescript 中推断深度嵌套对象的类型
- reactjs - 在用户界面上更新更改的值
- python - 根据更改的输入值创建输出文件
- whitelist - modsecurity:在实施白名单规则时,是否真的需要关闭规则引擎?