ズンドコキヨシまとめ - Qiita
どうやってやったのか?ですが、ジョブでズンドコキヨシを表現してみました。
まずは結果をご覧ください。(小さいのでクリックしてみてください)
www.oyama-dansen.co.jp
構成
ジョブは以下の4つ。最初の起点となる「きよしのズンドコ節」ジョブと、「ズン」、「ドコ」、「キヨシ」ジョブの4つのジョブが以下のようにつながっています。
ランダムに下流ジョブを実行
「ズン」と「ドコ」をランダムに実行させるために、Groovy Postbuild Plugin と Flexible Publish Plugin を使用しました。
Groovy Postbuild でランダムにビルドステータスを「不安定」か「失敗」に変更しています。
(コードは後述。 Gist にも公開してます。)
Flexible Publish で「不安定」の場合は、「ズン」。「失敗」の場合は、「ドコ」を実行するように設定しています。
ズンドコキヨシ
メインのズンドコ関数ですが、まず判定は Groovy Postbuild で行っています。判定コード:
import hudson.model.Cause.UpstreamCause static setNext(manager) { def r = Math.floor( Math.random() * 2 ) as int manager.listener.logger.println r if( r ) { manager.buildUnstable() } else { manager.buildFailure() } } static checkZUN(manager, cause, count) { def causes = cause.getUpstreamCauses() def name = cause.getUpstreamProject() manager.listener.logger.println name if( name == "ZUN" ) { count += 1 if( count == 4 ) { return true } } else { return false } cause = null causes.each { if( it instanceof UpstreamCause ) { cause = it return } } return checkZUN(manager, cause, count) } static check(manager) { def name = manager.build.getProject().getName() manager.listener.logger.println name if( name == "DOKO" ) { def cause = manager.build.getCause(UpstreamCause.class) if( checkZUN(manager, cause, 0) ) { return true } } setNext(manager) return false }
ズンドコの判定は「ドコ」ジョブで行います。
check(checkZUN) 関数では、UpstreamCause を辿って上流ジョブのジョブ名を取得していきます。
取得したジョブ名を使って、「ズン」、「ズン」「ズン」、「ズン」「ドコ」となったらビルドを「成功」にします。
ならなかった場合は、次のジョブにつなげるためにまたランダムでステータス変更をします。
ズンドコが成立すると「成功」ステータスになるので、あとは「成功」ステータスのときのトリガーを追加すれば完成です。
画像
最後にお遊びで付けた画像ですが、これは createSummary, appendText で img タグを挿入しています。画像ファイルはワークスペースに配置すれば、ビルドページからワークスペースへの相対パスで参照できます。
具体的にはこんな感じに設定しています。
manager.createSummary("clipboard.gif").appendText("<img src=\"../ws/KIYOSHI.jpg\"> キ・ヨ・シ!!", false, false, false, "red")
来週はこれをもう少しカスタマイズして、成果物の画像ファイルを貼り付ける方法を紹介します。
最後に
今回は Pipeline Plugin (旧Workflow Plugin) を使いませんでした。(自分がほとんど使ってないので)Jenkinsでビルドのパイプラインを作るぞー!(2016年2月版) - Mitsuyuki.Shiiba
あとはもう少し見た目をよくしたいなと思いましたが、時間がないのでここまでにしました。
誰かこの辺もチャレンジしてくれたらな~(私が大変喜びます)と言って締めたいと思います。では~
0 件のコメント:
コメントを投稿