从DSL作业插件

时间:2017-04-10 10:02:21

标签: jenkins groovy jenkins-job-dsl

在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相关的东西以及我如何调用这个方法。

0 个答案:

没有答案