10

4 つの groovy スクリプトがあります (2 つは dsl.groovy スクリプトです)。

JobConfig.groovy :

class JobConfig {
    final name

    JobConfig(map) {
        name = map['name']
    }
}

topLevel.groovy :

import JobConfig.*

def doSmthWithJobConfig(final JobConfig config) {
    println(config.name);
}

sublevel1.dsl.groovy :

GroovyShell shell = new GroovyShell()
def topLevelScript = shell.parse(new File("topLevel.groovy"))

def jobConfigs = [
    new JobConfig(name: 'JenkinsTestDSLs'),
    new JobConfig(name: 'JenkinsTestDSLs2')
]

jobConfigs.each {
    topLevelScript.doSmthWithJobConfig(it);
}

sublevel2.dsl.groovy :

GroovyShell shell = new GroovyShell()
def topLevelScript = shell.parse(new File("topLevel.groovy"))

def jobConfigs = [
    new JobConfig(name: 'JenkinsTestDSLs3'),
    new JobConfig(name: 'JenkinsTestDSLs4')
]

jobConfigs.each {
    topLevelScript.doSmthWithJobConfig(it);
}

ローカルで私が行う場合:

groovyc JobConfig.groovy

スクリプトをローカルで実行しても問題はありません。

しかし、ジェンキンスでは、これらのスクリプトと同じ場所に JobConfig.class を提供しても、実行できません。ここで、JobConfig.groovy が CLASSPATH にある限り、コンパイルを行う必要がないことを読みました。ジェンキンスでそれを行うにはどうすればよいですか? それとも別の解決策がありますか?

4

2 に答える 2

0

すべてを手動で機能させるのではなく、maven プロジェクトまたは gradle プロジェクトを作成し、結果のプロジェクト内で Groovy ファイルを整理します。それを実行するようにmavenまたはgradleを構成するとき。maven または gradle が問題なく実行したら、jenkins に渡すことができます。

Jenkinsは確かにmavenプロジェクトを採用しています.gradleの場合は確認する必要がありますが、確かなことは、mavenがgroovyプロジェクトをローカルで実行し、Jenkinsの下でも問題なく実行されることです.

試してください、教えてください。

于 2014-03-20T01:47:45.177 に答える