drone.io でHipchat通知時の文面をカスタマイズする
この記事は drone.io Advent Calendar 2017 - Adventar の12日目の記事です。
drone.io は Goで作られたオープンソースのCD (Continuous Delivery)環境です。
Hipchat Plugin ではビルドが終わったときにHipchatへ通知することができます。
基本的な使い方は以下のようになります。
hipchat: image: jmccann/drone-hipchat url: https://hipchat.example.com room: 'test-room' secrets: [ hipchat_auth_token ]
template を使うことで通知時の文面をカスタマイズすることができます。 しかし公式のドキュメントが間違っているので細かいカスタマイズを解説しておきます。
まず基本形はいかのようになります。公式のドキュメントでは{{
と#success
の間にスペースが入っていますが、これがあると動きません。
hipchat: template: | {{#success build.status}} build {{ build.number }} succeeded. Good job. {{else}} build {{ build.number }} failed. Fix me please. {{/success}}
テンプレートエンジンにはaymerick/raymondが利用されています。デフォルトの文面は以下のテンプレートが利用されていますので、これを元にカスタマイズするのがおすすめです。
template: | <strong>{{ uppercasefirst build.status }}</strong> <a href=\"{{ build.link }}\">{{ repo.owner }}/{{ repo.name }}#{{ truncate build.commit 8 }}</a> ({{ build.branch }}) by {{ build.author }} in {{ duration build.created build.finished }} </br> - {{ build.message }}
ビルドイン関数
以下の関数が利用できます。
関数名 | 機能 |
---|---|
uppercasefirst(string) | 1文字目を大文字にする |
uppercase(string) | 大文字にする |
lowercase(string) | 小文字にする |
duration(started, finished) | ビルドにかかった時間 |
datetime(timestamp, layout, zone) | 日時をlayout文字列に従って文字列に変換する |
truncate(string, length) | 文字列を指定した文字数を切り詰める |
success(condition) | ブロックで囲んだ場所をビルド成功時に評価する |
failure(condition) | ブロックで囲んだ場所をビルド失敗時に評価する |
urlencode | ブロックで囲んだ場所をurlencodeする |
ビルトイン変数
以下の変数が表示に利用できます。
変数 | 説明 |
---|---|
build.number | ビルド番号 |
build.event | ビルド発生イベント |
build.commit | コミットID |
build.branch | ブランチ名 |
build.remote | リモートURL |
build.message | コミットメッセージ |
build.author | コミットした人 |
build.avatar | コミットした人のavatar画像のURL |
build.email | コミットした人のメールアドレス |
build.link | ビルド画面へのリンク |
repo.owner | リポジトリオーナー |
repo.name | リポジトリ名 |
repo.link | リポジトリのURL |
repo.branch | 対象のブランチ |