Perforce プラグインを使用するパラメーター化されたジョブがあり、ビルド パラメーター/プロパティと、Perforce プラグインによって設定された p4.change プロパティを取得したいと考えています。
Jenkins Groovy API を使用してこれらのプロパティを取得するにはどうすればよいですか?
更新: Jenkins 2.x ソリューション:
params
Jenkins 2 パイプライン DSL を使用すると、 (Map) ビルトインに基づく簡単な構文で任意のパラメーターに直接アクセスできます。
echo " FOOBAR value: ${params.'FOOBAR'}"
戻り値は、パラメータ タイプ自体に応じて、文字列またはブール値になります。構文は、スクリプトまたは宣言構文と同じです。詳細: https://jenkins.io/doc/book/pipeline/jenkinsfile/#handling-parameters
パラメータ名自体が変数内にある場合:
def paramName = "FOOBAR"
def paramValue = params.get(paramName) // or: params."${paramName}"
echo """ FOOBAR value: ${paramValue}"
Jenkins 1.xの元の回答:
build.buildVariableResolver
Jenkins 1.x の場合、構文は組み込みに基づいています。
// ... or if you want the parameter by name ...
def hardcoded_param = "FOOBAR"
def resolver = build.buildVariableResolver
def hardcoded_param_value = resolver.resolve(hardcoded_param)
公式の Jenkins Wiki ページでは、これについても詳細に説明されていることに注意してください。特に、ビルド パラメーターを反復処理する方法については、 https ://wiki.jenkins-ci.org/display/JENKINS/Parameterized+System+Groovy+script を参照してください。
顕著な部分を以下に再掲します。
// get parameters
def parameters = build?.actions.find{ it instanceof ParametersAction }?.parameters
parameters.each {
println "parameter ${it.name}:"
println it.dump()
}
単一のパラメーターを解決する場合 (最も一般的に必要なものだと思います)、これは私が見つけた最も簡単なものです:
build.buildVariableResolver.resolve("myparameter")
Groovy System スクリプトのビルドステップで。
パラメータについて:
最初にこの回答を参照してください。プロジェクトのすべてのビルドのリストを取得するには (その回答に従って取得):
project.builds
特定のビルドが見つかったら、タイプParametersActionのすべてのアクションを で取得する必要がありますbuild.getActions(hudson.model.ParametersAction)
。次に、返されたオブジェクトに対して特定のパラメーターをクエリします。
p4.changeについて:アクションとしても保存されているのではないかと思います。Jenkins Groovy コンソールで、p4.change を含むビルドのすべてのアクションを取得して調べます。これにより、コードで何を探すべきかがわかります。
具体的には、Groovy Postbuild プラグインを使用して、次のことができます。
def paramText
def actionList = manager.build.getActions(hudson.model.ParametersAction)
if (actionList.size() != 0)
{
def pA = actionList.get(0)
paramText = pA.createVariableResolver(manager.build).resolve("MY_PARAM_NAME")
}