2016-08-29 13 views
5

Jenkinsfile内でGroovyクラスをインポートするにはどうすればよいですか?私はいくつかのアプローチを試しましたが、誰も働いていません。GroovyクラスをJenkinfileにインポートするにはどうすればよいですか?

これは私がインポートするクラスです:

Thing.groovy

class Thing { 
    void doStuff() { ... } 
} 

これらは動作しないものです:

Jenkinsfile-1

node { 
    load "./Thing.groovy" 

    def thing = new Thing() 
} 

Jenkinsfile-2

import Thing 

node { 
    def thing = new Thing() 
} 

Jenkinsfile-3

node { 
    evaluate(new File("./Thing.groovy")) 

    def thing = new Thing() 
} 
+0

これは私のために働いた:http://stackoverflow.com/questions/37800195/how-do-you-load-a-groovy-file-and-execute-it –

答えて

2

あなたは

ロード・コマンドを使用してクラスの新しいインスタンスを返すと "doStuff" を呼び出すためにオブジェクトを使用することができます

これは "Thing.groovy"にあります

class Thing { 
    def doStuff() { return "HI" } 
} 

return new Thing(); 

そして、あなたはあなたのDSLスクリプトでこれを持っているでしょう:

node { 
    def thing = load 'Thing.groovy' 
    echo thing.doStuff() 
} 

コンソール出力に「HI」を印刷する必要がありますどの。

これは要件を満たしますか?

+1

これは動作しますか?私はFileNotFoundExceptionを取得します。なぜなら、Jenkinsサーバー上のディレクトリには、Jenkinsfileだけが含まれていて、クラスファイルは含まれていないからです。 –

+0

私は同意します。正解はここにあります:https://stackoverflow.com/questions/43881014/can-i-import-a-groovy-script-from-a-relative-directory-from-a-jenkinsfile – Nauraushaun

+0

groovyファイルあなたのJenkinsfileに住んでいます。 Jenkinsfileでは、リポジトリを手動でチェックアウトし、そこから.groovyファイルを読み込むことができます。この場合、_is_ファイルが見つかりましたが、次のようにスローされます。 java.io.NotSerializableException:Thing – Nauraushaun

関連する問題