Запустите системный скрипт в 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 и тем, как я вызываю этот метод.

0 ответов

Другие вопросы по тегам