Hudson内でGroovyを呼び出し(groovyプラグインを使用)、ビルドのプロパティを取得しようとしています。しかし、私はこの例外を取得しています:
groovy.lang.MissingPropertyException:そのようなプロパティはありません:クラスのマネージャー:Script1
これは次の行で取得します。
_def buildNUmber = manager.build.number
_
これは、スクリプトを使用するだけでなく、Jenkins内でインラインコマンドとして実行すると発生します。
以下の解決策を試しましたが、宣言自体の間に失敗します(2行目):
_Binding binding = new Binding();
binding.setVariable("manager", manager);
GroovyShell Shell = new GroovyShell(binding);
Shell.evaluate(new File("d:/dev/others/hudson/userContent/ScriptStuff.groovy").text);
_
上記は、Groovyコマンドを使用して実行されます。そして、ビルドを実行するとエラーが発生し、行について文句を言います-binding.setVariable("manager", manager);
Groovyスクリプトファイルを使用すると、次のエラーが表示されます。
_ def buildNumber = manager.build.number
_
両方のエラーは次のとおりです。groovy.lang.MissingPropertyException:No such property:manager for class:Script1
これで言及されているすべてを試してみました thread :
Hudson 2.2.1とGroovy 2.1.3を使用しています。何が間違っているのでしょうか?
コードの一部が欠けているのかもしれませんが、マネージャーはどこで定義していますか?これが完全なGroovyスクリプトである場合、何も宣言されていない変数をバインドしようとしているので、失敗するのは奇妙なことではありませんか?
次のように、マネージャーを定義するだけです。
def manager = "my manager" // probably not what you want
また、現在のエラーを取り除く必要があります。
manager
は特定のGroovyスクリプトプラグインによって提供されますが、すべてではありません。スクリプトを汎用的にするには、代わりにJenkins/Hudson APIを使用します。
import hudson.model.*
def build = Thread.currentThread().executable
def buildNumber = build.number
...
それが役立つ場合に備えて、「システムGroovyスクリプトの実行」を使用している場合は、「manager」変数を使用する必要はありません。これは私のために働いた-
def workspace = build.getEnvVars()["WORKSPACE"]
理由の1つgroovy.lang.MissingPropertyException:は、スコープ外の変数を使用している場合、またはその変数を定義していない場合にスローされます。