HubotとJenkins、GitBucketを連携してCIをチャット上で効率化するにはチャットボットでチーム開発効率化入門(3)(1/3 ページ)

GitHub社が開発しているbotフレームワークHubotを使ってチャットアプリ上でチーム開発をいかに効率化していくかを解説していきます。今回は、JenkinsとGitBucketをインストールしHubotと連携してチャットからJenkinsのジョブを実行する方法などを紹介します。

» 2014年12月12日 18時00分 公開
[天沼健仁TIS株式会社]

チャット上からCIを行って開発を迅速化しよう

「チャットボットでチーム開発効率化入門」のインデックス

連載目次

 連載第1回の「GitHub製フレームワークHubotの概要とインストール、チャットアプリと連携する基本的な使い方」では、GitHub社が開発しているBotフレームワーク「Hubot」の概要、Hubotとチャットとの連携方法、Hubotの基本的な使い方を紹介しました。

 前回の「Redmine連携でチケットをチャットに通知&開発を楽しくするHubotスクリプト6選」と同じく、今回も、サンプルアプリケーションに対して修正を行うシーンを例に、Hubotと各ツールがどう連携するかを解説します。

 ソースコードはGitHubそっくりなUIと機能を提供している「GitBucket」(Scala製)で管理し、ビルドやデプロイはCI(継続的インテグレーション)ツール「Jenkins」で行います。

 利用したソフトウェアとバージョンは以下の通りです。

 全てUbuntu Server 14.04上に構築しました。環境構築手順は「連載第1回記事」にHubotとKandan、今回記事にそれ以外の手順を載せていますので、ご参照ください。

 以下では、JenkinsとGitBucketについて、Ubuntu Server 14.04上での環境構築手順を紹介します。簡易的な手順となっていますので、各自必要に応じてnginxなどを入れてください。

Jenkinsの環境構築

 以下のコマンドでJava 7をインストールします。

Javaのインストール

$ sudo add-apt-repository ppa:webupd8team/java
$ sudo apt-get update
$ sudo apt-get install oracle-java7-installer
$ sudo update-alternatives --config java

Jenkinsのインストール

 以下のコマンドでJenkinsをインストールします。

$ wget -q -O - http://pkg.jenkins-ci.org/debian/jenkins-ci.org.key | sudo apt-key add -
$ sudo sh -c 'echo deb http://pkg.jenkins-ci.org/debian binary/ > /etc/apt/sources.list.d/jenkins.list'
$ sudo apt-get update
$ sudo apt-get install jenkins
$ sudo service jenkins start

 デフォルトでは8080ポートで起動しているので、「http://{hostname}:8080/」にアクセスすると、Jenkinsが表示されます。

GitBucketの環境構築

Jettyのインストール

 以下のコマンドでJettyをインストールします。

$ wget http://eclipse.org/downloads/download.php\?file\=/jetty/stable-9/dist/jetty-distribution-9.2.1.v20140609.tar.gz\&r\=1
$ mv download.php\?file=%2Fjetty%2Fstable-9%2Fdist%2Fjetty-distribution-9.2.1.v20140609.tar.gz\&r=1 jetty.tar.gz
$ tar zxvf jetty.tar.gz
$ sudo mv jetty-distribution-9.2.1.v20140609 /opt/jetty

GitBucketをJettyにデプロイ

 以下のコマンドでGitBucketをJettyにデプロイします。

$ wget https://github.com/takezoe/gitbucket/releases/download/2.4.1/gitbucket.war
$ sudo cp ~/gitbucket.war /opt/jetty/webapps/
$ sudo ln -s /opt/jetty/bin/jetty.sh /etc/init.d/jetty

 「/etc/default/jetty」に下記のように環境変数を追加してください。JenkinsとGitBucketを同一サーバーで起動する場合は、JettyのポートにはJenkinsと異なるポート番号を設定してください。

JAVA_HOME=/usr/lib/jvm/java-7-oracle
NO_START=0 # Start on boot
JETTY_HOST=127.0.0.1
JETTY_ARGS=jetty.port=8080
JETTY_HOME=/opt/jetty

Jettyを起動してGitBucketを表示

 下記コマンドでJettyを起動します。

$ sudo service jetty start

 デフォルトでは8080ポートで起動しているので、「http://{hostname}:8080/」にアクセスすると、GitBucketが表示されます。

サンプルとなるJava+Sparkアプリケーションの概要

 サンプルアプリケーションは「Spark」という、Rubyの軽量WebフレームワークであるSinatraを参考にして作られたJavaベースのフレームワークを使い、「Hello World!」と表示するだけの簡単なWebアプリケーションを作成しました。

 init()で「/hello」にアクセスすると「Hello World!」と表示するルーティングを記述しているだけです。

package sample;
 
import spark.servlet.SparkApplication;
import static spark.Spark.get;
 
public class HelloWorld implements SparkApplication {
 
    public static void main(String[] args) {
        HelloWorld helloWorld = new HelloWorld();
        helloWorld.init();
    }
 
    public void init() {
        get("/hello", (request, response) -> "Hello World!");
    }
}
HelloWorld.java

 HelloWorld.javaのmainメソッドを実行すると、スタンドアロンでJettyが立ち上がります。「http://localhost:4567/hello」にアクセスすると、以下のように「Hello World!」と表示されます。

 なおサンプルアプリは、こちらからダウンロードできます。記事中には記載がありませんが、テストコードも含んでいます。

       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。