Jenkins JobDSL错误:找到了多个扩展,它们为方法branchDiscoveryTrait提供了参数[]:

bqujaahr  于 2023-05-28  发布在  Jenkins
关注(0)|答案(2)|浏览(129)

我正在使用jenkins jobDSL插件从groovy脚本生成管道作业,我正在尝试创建一个multibranchPipelineJob,如下所示

17 multibranchPipelineJob("projects/${project_name}/${component_name}") {
 18   branchSources {
 19     branchSource {
 20       source {
 21         git {
 22           remote(component.repository)
 23           credentialsId(component.credentials)
 24           traits {
 25             branchDiscoveryTrait()
 26             cleanBeforeCheckoutTrait()
 27           }
 28         }
 29       }
 30       strategy {
 31         defaultBranchPropertyStrategy {
 32           props {
 33           }
 34         }
 35       }
 36     }
 37   }
 38   triggers {
 39     periodic(5)
 40   }
 41   orphanedItemStrategy {
 42     discardOldItems {
 43       // numToKeep(20)
 44     }
 45   }
 46   if (component.jenkinsfile) {
 47     factory {
 48       workflowBranchProjectFactory {
 49         scriptPath(component.jenkinsfile)
 50       }
 51     }
 52   }
 53 }

当执行此代码的主管道作业运行时,它会引发此(显然知道)错误:
错误:发现多个扩展提供了带参数[]的方法branchDiscoveryTrait:com.cloudbees.jenkins.plugins.bitbucket.BranchDiscoveryTrait,jenkins.plugins.git.traits.BranchDiscoveryTrait,org.jenkinsci.plugins.github_branch_source.BranchDiscoveryTrait

我搜索了很多结果,看到人们说我们应该向traits实现或相关描述符添加@Symbol注解。
但是我不知道该怎么做,在哪里放置@Symbol,人们似乎说它解决了这个问题,但没有一个很好的解释和指导来应用修复。
修改应该在插件代码中还是其他地方完成?

gupuwyp2

gupuwyp21#

我通过使用特定的git scm类解决了这个问题,正确的语法是:

17 multibranchPipelineJob("projects/${project_name}/${component_name}") {
 18   branchSources {
 19     branchSource {
 20       source {
 21         git {
 22           remote(component.repository)
 23           credentialsId(component.credentials)
 24           traits {
 25             gitBranchDiscovery()
 26             cleanBeforeCheckoutTrait {
 27               extension {
 28                 deleteUntrackedNestedRepositories(false)
 29               }
 30             }
 31           }
 32         }
 33       }
 34       strategy {
 35         defaultBranchPropertyStrategy {
 36           props {
 37           }
 38         }
 39       }
 40     }
 41   }
 42   triggers {
 43     periodic(5)
 44   }
 45   orphanedItemStrategy {
 46     discardOldItems {
 47       // numToKeep(20)
 48     }
 49   }
 50   if (component.jenkinsfile) {
 51     factory {
 52       workflowBranchProjectFactory {
 53         scriptPath(component.jenkinsfile)
 54       }
 55     }
 56   }
 57 }
osh3o9ms

osh3o9ms2#

您需要使用bitbucketBranchDiscovery()而不是branchDiscoveryTrait()

相关问题