GitHub社が開発しているbotフレームワークHubotを使ってチャットアプリ上でチーム開発をいかに効率化していくかを解説していきます。今回は、JenkinsとGitBucketをインストールしHubotと連携してチャットからJenkinsのジョブを実行する方法などを紹介します。
連載第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などを入れてください。
以下のコマンドでJava 7をインストールします。
$ sudo add-apt-repository ppa:webupd8team/java $ sudo apt-get update $ sudo apt-get install oracle-java7-installer $ sudo update-alternatives --config java
以下のコマンドで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が表示されます。
以下のコマンドで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にデプロイします。
$ 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を起動します。
$ sudo service jetty start
デフォルトでは8080ポートで起動しているので、「http://{hostname}:8080/」にアクセスすると、GitBucketが表示されます。
サンプルアプリケーションは「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のmainメソッドを実行すると、スタンドアロンでJettyが立ち上がります。「http://localhost:4567/hello」にアクセスすると、以下のように「Hello World!」と表示されます。
なおサンプルアプリは、こちらからダウンロードできます。記事中には記載がありませんが、テストコードも含んでいます。
Copyright © ITmedia, Inc. All Rights Reserved.