40

Perforce プラグインを使用するパラメーター化されたジョブがあり、ビルド パラメーター/プロパティと、Perforce プラグインによって設定された p4.change プロパティを取得したいと考えています。

Jenkins Groovy API を使用してこれらのプロパティを取得するにはどうすればよいですか?

4

11 に答える 11

31

更新: Jenkins 2.x ソリューション:

paramsJenkins 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.buildVariableResolverJenkins 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()
}
于 2013-10-24T11:24:37.520 に答える
27

単一のパラメーターを解決する場合 (最も一般的に必要なものだと思います)、これは私が見つけた最も簡単なものです:

build.buildVariableResolver.resolve("myparameter")

Groovy System スクリプトのビルドステップで。

于 2014-05-14T21:29:01.993 に答える
19

パラメータについて:

最初にこの回答を参照してください。プロジェクトのすべてのビルドのリストを取得するには (その回答に従って取得):

project.builds

特定のビルドが見つかったら、タイプParametersActionのすべてのアクションを で取得する必要がありますbuild.getActions(hudson.model.ParametersAction)。次に、返されたオブジェクトに対して特定のパラメーターをクエリします。

p4.changeについて:アクションとしても保存されているのではないかと思います。Jenkins Groovy コンソールで、p4.change を含むビルドのすべてのアクションを取得して調べます。これにより、コードで何を探すべきかがわかります。

于 2012-06-04T14:50:37.120 に答える
10

具体的には、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")
}
于 2012-11-28T11:32:55.530 に答える