Запустите системный скрипт в jenkins из плагина задания DSL
Получение ошибки без подписи для метода readFileFromWorkspace() в начальном задании Jenkins (при попытке запуска main.groovy из плагина задания dsl. 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() не найден? Если я использую ту же конфигурацию блоков шагов непосредственно в плагине Process Job DSL s Process Job, то он работает - так что это должно быть что-то, связанное с groovy и тем, как я вызываю этот метод.