4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Workflow plugin で Parameterized Trigger Build っぽいこと

Last updated at Posted at 2015-01-14

結論

できることはできるけど、Parameterized Trigger Plugin のようにお手軽ではない。

環境

  • Mac OS X Yosemite
  • Jenkins v1.596

ただのパラメータ付きビルド

パラメータ付きビルドは、↓のような感じでできました。

build job: 'job_name', parameters: [StringParameterValue('param_name', 'value')]

ドキュメントにはぱっと情報が見当たらず、テストコードでようやく使い方が分かりました...
https://github.com/jenkinsci/workflow-plugin/blob/master/aggregator/src/test/java/org/jenkinsci/plugins/workflow/steps/build/BuildTriggerStepTest.java#L146

Workflowジョブに設定したパラメータを引き継いで子ジョブをビルドする

できなくはない...

current_env = this.getProperty("env"). getEnvironment()
current_build = Jenkins.instance.getItemByFullName(current_env['JOB_NAME']).getBuildByNumber(current_env['BUILD_NUMBER'].toInteger())
current_params = current_build.getActions(ParametersAction.class). parameters[0]

params = []

current_params.each {
  params.push(it.class.newInstance(it.name, it.value))
}

current_build = null
current_params = null

build job: 'job', parameters: params

ビルド中な自分自身のインスタンスを取得して、List<ParameterValue> を取ってくる。

  • 01/20 修正
    • 変数をそのままにしておくと、java.io.NotSerializableException が発生するのでnull代入しました。

悩みの種

さっくり実行時のParameterValueインスタンスを取得できない

this.getProperty("env").getEnvironment() で取得できる値に、ジョブのパラメータは含まれない。

例えば↓のようなものが入っている。

{BUILD_DISPLAY_NAME=#35, BUILD_ID=2015-01-15_01-00-35, BUILD_NUMBER=35, BUILD_TAG=jenkins-workflow-sample-35, CLASSPATH=, HUDSON_HOME=/Users/yasuhiroki/.jenkins, HUDSON_SERVER_COOKIE=6030517cc6d72944, JENKINS_HOME=/Users/yasuhiroki/.jenkins, JENKINS_SERVER_COOKIE=6030517cc6d72944, JOB_NAME=workflow-sample}

this は、WorkflowScriptクラスを指していて、使えるメソッドは↓の通り。

[__$swapInit, equals, evaluate, getBinding, getClass, getMetaClass, getProperty, hashCode, invokeMethod, main, notify, notifyAll, print, printf, println, run, setBinding, setMetaClass, setProperty, toString, wait]

パラメータの値だけなら、パラメータ名がそのまま変数になっているのだけれど、String型では子ジョブに渡せない。

とはいえ

一度、仕組みを作ってしまえば、Parameterized Trigger よりも自由にパラメータ付きビルドできそうですね。

補足

Parameterized Build Trigger Plugin そのものを、Workflow Pluginに対応させる予定があるようです。
急ぎでなければ待つか、置き換えできるように作っておくと良さそうです。

補足2 2015/10/04

どうやら 2015/09 に、Parameterized Build Trigger Plugin が、Workflow Pluginに対応していたようです。

https://issues.jenkins-ci.org/browse/JENKINS-26050
https://github.com/jenkinsci/workflow-plugin/commit/ad0ae293d06a22284930bf6bb4f7096b2f357771

どのように利用できるようになったのか試せていませんが...。

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?