LoginSignup
44
40

More than 3 years have passed since last update.

SlackからJenkinsのジョブの実行(Windows)

Last updated at Posted at 2016-01-17

ChatOpsの開発現場への導入が進んできています。ChatOpsとは、HipChatやSlackなどのチャットツールを通じてオペレーションを行うものです。ChatOpsのメリットはあらゆるオペレーションを共有できることにあります。誰がどのような操作を行ったのか、その結果がどうなったのか。これまで個人のPCで行われてきたブラックボックス的な作業が誰からも確認できるようになり、問題が発生した場合もチャットの履歴からどの操作が問題になったか特定しやすくなります。また、自動化の仕組みを全員で共有できる点も大きいでしょう。このChatOpsの仕組みを実現する方法としては、Hubotの利用があります。

Hubotは、GitHub社が開発しているbotフレームワークです。CoffeeScriptやJavaScriptで処理を書くことで,簡単に機能を拡張できます。また,TypetalkやTwitterなど,複数のサービスに対応させることができます。Hubotを導入することで、例えばチャット上からHubotにデプロイをさせたり、自分が担当しているissueの一覧を表示してもらったり、JenkinsなどによるCI(継続的インテグレーション)の実行やその結果を受け取ることができるようになります。今回はSlackとJenkinsを利用する方法について紹介を行います。
※ 執筆は2016/1/17時点の情報です。

SlackにHubotを追加

Slack側の準備として、まずHubotのインテグレーションを追加します。このインテーグレーションは下記のサイトから入手することができます。
https://slack.com/apps

Hubotは下図のように検索すればすぐに見つかります。
SnapCrab_NoName_2016-1-17_14-4-17_No-00.png

node.jsのインストール

Hubotを動かすためには、Jenkinsを入れているPCにnode.jsをインストールする必要があります。node.jsはJavaScriptで出来たWeb Serverで、下記サイトから入手できるmsiを使ってインストールすることができます。ここでは現時点での最新版であるv0.12.9を使用します。
http://nodejs.org/download/

node.jsのバージョンは、次のコマンドで確認することができます。バージョンが表示されれば、問題なくインストールが完了していることになります。

node -v

Hubotのインストール

Hubotのインストールにはnpmと呼ばれるパッケージ管理ソフトを使用します。このnpmはnode.jsのインストール時に一緒にインストールされています。npmも次のコマンドでバージョンを確認することができます。

npm -v

セットアップ手順は下記リンクのマニュアルに記載されています。
https://github.com/github/hubot/blob/master/docs/index.md

ただ、今回は次のコマンドを実行することでインストールを行います。

npm install -g yo generator-hubot hubot coffee-script

インストールが完了したら、下記の2つのフォルダが作成されます。

  • yo : 雛形作成コマンド
  • generator-hubot : yo を利用したHubotの雛形生成
  • hubot : Hubot本体
  • coffee-script : CoffeeScript本体(bot動作記述用)

Hubotの生成

Hubotを作成したいフォルダを作り、そのフォルダの中で次のコマンドを実行します。

yo hubot

最初に使用状況統計の報告の協力を聞かれますので、"Y"か"n"で回答します。
SnapCrab_NoName_2016-1-17_14-30-50_No-00.png

その後は、以下の設定を求められるので、順次設定を行っていきます。

  • Owner : 制作者のメールアドレス
  • Bot name : 生成するHubotの名前
  • Description : 生成するHubotの説明
  • Bot adapter : slack

ここまで入力すれば、無事にHubotが生成されます。
SnapCrab_NoName_2016-1-17_14-43-56_No-00.png

試しにHubotを動かしてみます。まず、次のコマンドを入力します。

bin\hubot.cmd

その次に、{Hubotの名前} ping とコマンドを指定します。Hubotがうまく動作していれば、PONGと返してくれます。
SnapCrab_NoName_2016-1-17_15-33-8_No-00.png

HubotとSlackの連携

まず、環境変数として「HUBOT_SLACK_TOKEN」を設定します。トークンはSlackのインテグレーション登録時に入手できます。

次に、下記のコマンドでHubotを起動します。これでSlack上でもHubotと会話することができるようになります。

bin\hubot.cmd --adapter slack

Hubotを常駐させるためのforeverのインストール

Hubotをslackのチャットルームに常駐させるためには、foreverでデーモン起動できるようにする必要があります。foreverは次のコマンドでインストールすることができます。

npm install -g forever

インストール後は、次のコマンドを実行します。

forever --minUptime 3000 --spinSleepTime 3000 start -c coffee bin\hubot.cmd --adapter slack --name {hubotの名前}

次のコマンドを実行して再起動を行います。

forever restartall

Hubotからjenkinsの呼び出し

Hubotを作成したフォルダ内の「scripts」内にjenkins.coffeeを作成します。
作成したファイルに下記リンクの内容をコピーします。
https://github.com/github/hubot-scripts/blob/master/src/scripts/jenkins.coffee

次に、Hubotを作成したフォルダ内のhubot-scripts.jsonの中身を、下記の記述に変更します。

[
    "jenkins.coffee"
]

あとは環境変数にJenkinsのURLと認証情報をを追加します。

SlackからJenkinsのジョブを実行

最後にSlackからのジョブの実行について紹介します。

# ジョブを実行
@{hubotの名前} jenkins build ジョブ名

# 登録されているジョブのリストを表示
@{hubotの名前} jenkins list

参考

Software Design 2016/1
slack・hubot・jenkinsを連携してslackからjenkinsのジョブを実行する

44
40
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
44
40