jenkins - jenkins job dsl - 没有方法签名:java.lang.String.call()
问题描述
我无法运行这段代码:
buildPath = 'applications'
buildJob(['java', 'nodejs'])
def buildJob(def jobList){
for(job in jobList){
def jobName = "${job}_seed"
def jobDescription = "Jenkins DSL seed for ${job}"
def jobScriptPath = "resources/dsl/${jobName}.groovy"
job("${buildPath}/${jobName}")
}
}
所以,我收到了这个错误:
Processing provided DSL script
ERROR: (script, line 12) No signature of method: java.lang.String.call() is applicable for argument types: (org.codehaus.groovy.runtime.GStringImpl) values: [applications/java_seed]
Possible solutions: wait(), any(), wait(long), take(int), each(groovy.lang.Closure), any(groovy.lang.Closure)
Finished: FAILURE
我看不到导致此错误的位置或原因。我在函数之外创建了一个作业buildJob(def jobList)
并且它正在工作,但我需要执行循环以自动化作业创建。
有任何想法吗?
解决方案
发布我遇到的类似问题。关于这个问题,网络上并没有太多。
No signature of method: java.lang.String.call() is applicable for argument types: (java.lang.String) values: [some-value]
假设我们正在实现一个工作 dsl 插件(https://github.com/jenkinsci/multibranch-build-strategy-extension-plugin),例如:
includeRegionBranchBuildStrategy {
includedRegions(String value)
}
我们有如下代码:
def includedRegions = r ? String.join("\n", r) : null
branchSources {
branchSource {
buildStrategies {
if(includedRegions){
includeRegionBranchBuildStrategy {
includedRegions(includedRegions)
}
}
}
}
}
需要重命名变量才能使其工作!例如,该方法不能与上面定义的 var 具有相同的名称。
def regions = r ? String.join("\n", r) : null
branchSources {
branchSource {
buildStrategies {
if(regions){
includeRegionBranchBuildStrategy {
includedRegions(regions)
}
}
}
}
}
推荐阅读
- scala - scala:如何在 sbt 中交叉构建库依赖项
- java - 如何连接两个正则表达式以获得实际表达式
- reactjs - 使用 axios 发帖不断返回 Request failed with status code 422
- c# - 如何使用 C# 和 MongoDb 获得自动增量可预测 ID
- php - 使用 PHP CURL 发布 JSON 和文件
- laravel - 为什么我的数据库不更新?(拉拉维尔)
- java - Apache POI自定义数据格式修改
- websocket - 无法使用 rosbridge 建立与 Web 服务器的连接
- r - 在 rmarkdown 中渲染 fusionchartsR htmlwidgets
- r - 使用 position = fill 将百分比添加到条形图