0

パラメータ化されたビルドがあり、DSL ファイルで次のように定義されています。

Thread thr = Thread.currentThread()
def build = thr?.executable
def resolver = build.buildVariableResolver

Map<String, JobParam> paramMap = JobConstants.PARAM_MAP
for (String key : paramMap.keySet()) {
    paramMap.put(key, new JobParam(paramMap.get(key),  (String)resolver.resolve(key)))
}

……

今、私はこのDSLファイルをテストしようとしており、次のテストコードを書いています

public void testJob() {
    JobManagement jm = new MemoryJobManagement()
    File f = new File("jobs/PipelinesCreator.groovy")
    DslScriptLoader.runDslEngine f.text, jm
}

しかし、これは私に次のエラーを与えています: javaposse.jobdsl.dsl.DslScriptException: (script, line 13) No such property: executable for class: java.lang.Thread

job-dsl-core の既存のテストに従ってみました ( https://github.com/jenkinsci/job-dsl-plugin/blob/785de7f877fdbe8fc56b8b2423ae76ec9c59fa66/job-dsl-core/src/test/groovy/javaposse/jobdsl/ dsl/DslScriptLoaderSpec.groovy#L238 ) を使用して、groovy スクリプトを実行します。

この問題を修正して、テストを正常に実行するにはどうすればよいですか。

4

1 に答える 1

0

まず、あなたの質問に答えます。 http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.htmlに記載されている単純な「java.lang.Thread」にはプロパティがありません「def build = thr?.executable」行で参照しようとしている「executable」。

Jenkins ジョブのステップとして使用するように実際に設計されている場合、Groovy から Jenkins ジョブ Dsl プラグインを直接呼び出そうとしているようです。Jenkins UI では、「ジョブ DSL の処理」ステップを追加することにより、「ビルド」セクションでこれを見つけることができます。 ここに画像の説明を入力

次に、groovy ファイル「jobs/PipelinesCreator.groovy」を指定します。

ただし、明確にするために、上記のコードの最初のスニペットが「jobs/PipelinesCreator.groovy」のコンテンツである場合、同じ理由で失敗します-アクセスしようとしているプロパティが存在しません。

于 2015-11-24T00:04:49.767 に答える