18
18

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.

Hubot に Jenkins のビルド通知を流す

Last updated at Posted at 2015-04-19

前提

  • Hubot の設定ができていること
  • Jenkins の設定ができていること
  • Jenkins と Hubot は同一ホストで動いてるものとする(別ホストにするのも大して手順は変わらないはず)

準備

Jenkins プラグイン

Web 管理画面から Jenkins の Notification Plugin をインストールしておく。

Hubot の hubot-jenkins-notifier

npm install --save hubot-jenkins-notifierhttps://www.npmjs.com/package/hubot-jenkins-notifier をインストールする。

external-scripts.json
[
  "hubot-jenkins-notifier"
]

設定

Hubot の設定

PORT 環境変数で 5080 ポートで HTTP の待ち受けをするようにしておく(Jenkins のデフォルトと競合するため)

Job の設定

Notification Plugin を入れると、ジョブ設定の最初の方に Notification の設定が追加される。
(最初はビルド後の処理かと思って見つからずにパニクってました)

Add Endpoint をクリックし、

なんか、Logに0を入れているとうまくいかないです。

room_id は例によってアダプタ依存なので適当に。notstrat は@ITの記事を参考に。

Log パラメータで Webhook に対してビルドログを送信できるっぽいのだが、Hubot の hubot-jenkins-notifier が対応していない様子。

hubot-jenkinsを入れると Hubot に命令して Jenkins のジョブ実行とかもできるみたいだけど、それは今回は見送りとしようかな・・・

追記:Let's Chat の絵文字を使って見やすくする

そのままだと「build #1 succeeded:」とか「#2 started failing:」とかしか言ってくれないのでぱっと見に分かりにくい。そこで、絵文字一覧の中から青丸と赤丸を使って一目瞭然となるように改造してみよう。

node_modules/hubot-jenkins-notifier/src/scripts/hubot-jenkins-notifier.coffee
    if data.build.phase in ['FINISHED', 'FINALIZED']
      if data.build.status == 'FAILURE'
        if data.name in @failing
          build = "is still"
        else
          build = "started"
        @robot.send envelope, ":red_circle: #{data.name} build ##{data.build.number} #{build} failing: #{fullurl}" if @shouldNotify(envelope.notstrat, data)
        @failing.push data.name unless data.name in @failing
      if data.build.status == 'SUCCESS'
        if data.name in @failing
          build = "was restored"
        else
          build = "succeeded"
        @robot.send envelope, ":large_blue_circle: #{data.name} build ##{data.build.number} #{build}: #{fullurl}"  if @shouldNotify(envelope.notstrat, data)
        index = @failing.indexOf data.name
        @failing.splice index, 1 if index isnt -1

必要なところに:red_circle::large_blue_circle:を足しただけ。これだけでずいぶん見やすくなる。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?