HubotとJenkins、GitBucketを連携してCIをチャット上で効率化するには:チャットボットでチーム開発効率化入門(3)(1/3 ページ)
GitHub社が開発しているbotフレームワークHubotを使ってチャットアプリ上でチーム開発をいかに効率化していくかを解説していきます。今回は、JenkinsとGitBucketをインストールしHubotと連携してチャットからJenkinsのジョブを実行する方法などを紹介します。
チャット上から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のmainメソッドを実行すると、スタンドアロンでJettyが立ち上がります。「http://localhost:4567/hello」にアクセスすると、以下のように「Hello World!」と表示されます。
なおサンプルアプリは、こちらからダウンロードできます。記事中には記載がありませんが、テストコードも含んでいます。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- Jenkins+HipChat+Hubotをチーム開発に導入してお手軽CI
現代の開発現場において欠かせないCI/継続的デリバリを、iOSアプリ開発に適用するためのツールやノウハウを解説する連載。最終回は、Jenkinsと連携させやすいチャットツールHipChatやBotフレームワークHubotを組み合わせてCIをより効率的に回す方法について解説します。 - 実録! チーム開発が捗り過ぎるSlack+GitHub+Trelloの使い方
スタートアップではいかにお金を使わずにプロダクトを開発するかは成功につながる大きなポイントとなる。コストを掛けずにプロダクトを作っていく上で、導入すべきツールをどのように使うかを数回に分けて紹介。今回は、開発プロジェクト向けチャットツール「Slack」の特徴を解説しプロジェクト管理ツール「Trello」や「GitHub」と組み合わせた活用事例を紹介する。 - GitHub(ギットハブ)の使い方:連携サービス
ソフトウェア開発プロジェクトの共有Webサービス「GitHub(ギットハブ)」を「日本語で」分かりやすく説明するシリーズ、今回は「asana」や「Travis」などの連携サービスを紹介します。 - 安藤幸央のランダウン[60]:GitHubをもっとソーシャルに使いこなすための7つ道具
ソースコードホスティングのGitHub周辺で便利な新サービスが続々登場しているので、まとめて紹介しよう。Gist、GitHub Pages、Binpress、fluxflex、 Janky、Hubot、Travis CI、GitHub Watchersなどが注目だ