在Jenkins种子作业中获取 readFileFromWorkspace()方法的无签名错误(尝试从dsl作业运行 main.groovy 时)插件。 main.groovy 从 PrepareBuildPublish.groovy 类调用静态方法来创建作业:
错误:(PrepareBuildPublish.groovy,第43行)没有方法签名:javaposse.jobdsl.dsl.helpers.step.StepContext.readFileFromWorkspace()适用于参数类型:(java.lang.String)值:[WorkspaceLocker.groovy]
以下是 main.groovy
的源代码import models.*
import templates.*
import hudson.FilePath
import org.yaml.snakeyaml.Yaml
createJobs()
void createJobs() {
def yaml = new Yaml()
// Build a list of all config files ending in .yml
def cwd = hudson.model.Executor.currentExecutor().getCurrentWorkspace().absolutize()
def configFiles = new FilePath(cwd, 'ci-repos').list('*.yml')
// create jobs for each config file
configFiles.each { file ->
def projectConfig = yaml.loadAs(file.readToString(), ProjectConfig.class)
def project = projectConfig.project.replaceAll(' ', '-')
PrepareBuildPublish.create(job("${project}-Prepare-Build-Publish"), projectConfig)
}
}
以下是 PrepareBuildPublish.groovy
的源代码 package templates
class PrepareBuildPublish {
static void create(job, config) {
job.with {
logRotator {
daysToKeep(7)
numToKeep(15)
}
steps {
systemGroovyCommand(readFileFromWorkspace('WorkspaceLocker.groovy')){
binding('repo','${config.repo}')
classpath()
}
}
}
}
}
为什么找不到readFileFromWorkspace()方法?如果我在DSL种子作业的 Process Job DSLs 插件中直接使用相同的步骤阻止配置,那么它可以工作 - 所以它必须是与groovy相关的东西以及我如何调用这个方法。