LoginSignup
11
11

More than 5 years have passed since last update.

Groovy Postbuild PluginでJenkinsのビルド履歴をちょっと良くする

Posted at

歴史も長いので、おそらく利用している方も多いJenkinsのプラグインである「Groovy Postbuild Plugin

このプラグインは「ビルド後の処理」として利用することが出来るわけですが、これを利用することにより色々と捗ります。

その中でも、今回はビルド履歴を見やすくするということについて書こうかと思います。

デフォルトの状態

殺風景なビルド履歴が広がっています。
スクリーンショット 2016-12-29 16.12.41.png

上記の場合だと、何をどのようにビルドしたのかはビルド履歴の先を見ないとわかりません。
簡易的な情報レベルだけでも表示されていると色々と捗ります。

slackには通知させているかとは思いますが、slackのように流れていってしまうところだけに頼るのは心もとないです。

蛇足

右側にアイコンが出ている箇所がありますが、これは設定が変更されたことを教えてくれるJobConfigHistory Pluginが出しているものです。

今回おこなったこと(の一例)

そこで、Groovy Postbuild Pluginを使って以下の様なことをおこなうことにしました。

  • ビルド履歴を見たときに、ある程度の情報が載っている
  • 特別なビルド結果であれば、それがわかるようになっている
  • 取っておくべきビルド結果であれば、ビルドを保存しておく

事前に行っておくべきこと

Jenkinsを利用しているという前提のもと

  • Groovy Postbuildをインストール
  • 「ビルド後の処理」に「Groovy Postbuild」を追加

例1 descriptionに利用したビルドパラメータを表示する

スクリーンショット 2016-12-29 17.09.57.png

ビルド時に利用するビルドパラメータを表示しています。
「env」がビルドパラメータとして存在する前提の場合は以下のように「Groovy Script」の箇所に書けばOKです。
仮にビルドパラメータがもっとある場合は、paramsの箇所に追加すればOKです。

def params = [
  "env"
]
def description = StringBuilder.newInstance()
for (param in params) {
  description.append(param)
  description.append(": ")
  description.append(manager.build.buildVariables.get(param)+"\n")
}
manager.build.setDescription(description.toString())

ビルドパラメータの取得の仕方は上記以外にもあって、以下のような書き方でも取得できます。

def vars = manager.build.getEnvironment(manager.listener)

ちなみに、並列化を考えるとenv単位(向き先など)であれば別々にjobを作ったほうが良いケースも多いです。

例2 titleにbranch名(など)を表示する

スクリーンショット 2016-12-29 17.18.11.png

上記はbranch名をtitleに表示するようにしています。
ビルドパラメータにbranchが存在する前提ですと以下の1行で書くことが可能です。

manager.build.setDisplayName("#" + manager.build.number + " " + envVars["branch"])

これにより、どのbranchで作ったかがすぐにわかります。
これをdescriptionに書く手も当然ありますが、以下の理由からtitleにつけるケースもあります。

他プロジェクトから成果物をコピーへの利用

ビルドパラメータにある「ビルド」を使うと他のプロジェクトのbuildNumber付きのURLがパラメータとして取得することができます。

スクリーンショット 2016-12-29 17.23.58.png

ここにはtitleしか表示されないので、ここにbranch名などを表示させるようにしておくと選択するときのミスが減ります。
この値は「ビルド」にある「他プロジェクトから成果物をコピー」で「特定のビルド」で利用しています。

例3 バージョン情報があればShortTextに表示する

スクリーンショット 2016-12-29 18.13.51.png

branch名にバージョン情報があり、ビルドに成功すれば上記のようにShortText(右側に黄色枠で表示されている)で表示します。

if (manager.getResult() == "SUCCESS") {
  def branch = manager.build.buildVariables.get("branch")
  if (branch ==~/^v[0-9]+.*/ ) { 
    manager.addShortText(branch)
  }
}

今回の場合だと、ビルドが成功時のみおこなっています。

上記以外に、以下の1行があればそのビルドを保存すると行ったことも出来ます。

manager.build.keepLog(true)

Jenkinsはアプリの保存場所ではないのですが、必要なもののみをあえてとっておくこともあるかと思うので上記も有効かと思います。

最後に

Groovy Postbuild Pluginを使えば、上記以外にも色々とやれることはあります。
あくまでも今回はビルド履歴をちょっと良い感じにするといったtipsです。

それ以外にも色々と出来るので、参考資料先にあるサンプルなどを見ながら、自身のプロジェクトにあった形で利用してみると良いかと思います。

参考資料

11
11
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
11
11