コミットしたらGitBucketとJenkinsとHipChatに任せて他の事やってましょう(1)

少人数開発でソースコード管理は面倒だし、継続的インテグレーション(continuous integration）？
管理する人員なんていません。
という現場ほど導入して欲しい方法です

* 使用ツールの概要
> GitBucket：プライベートGitホスティングサーバ(ソースコード管理）
> Jenkins：自動ビルドツール
> HipChat：ホスティング型プライベートチャットツール
何より全部FREE

* 連携の概要

1.)自分のリポジトリにコミット
2.)GitBucketのリモートリポジトリにPush
3.)GitBucketがWebHookを使ってJenkinsにビルド要求
4.)Jenkinsがビルド終了したらHipChatへ結果を通知
5.）おぉそうだったそうだったビルド結果は。。。Σ(ﾟ皿ﾟ)　ｶﾞﾋﾞｰﾝ
![jenkins_redimage.png](https://qiita-image-store.s3.amazonaws.com/0/10605/18592f6e-acf1-2d3c-55e2-7d098a2a4ddd.png)




さらにJavaの知識はないしサーブレットって何？という人が
GitBucketとJenkins使ってみるための導入記事です
使用サーバ：Linux Ubuntu14.04 amd64
RedHat/CentOS系はインストール等手順が異なるので参考程度に

#1. GitBucketの整備
複数人開発でGitホスティングサーバは不可欠です。
GitHub/bitbucketなどがありますが
内容的にClosed環境での開発がほとんどという現場には
導入が楽なGitBucketがおすすめなのです
ほんとはGitLabとGitoliteに挫折しただけです

## 1.1.GitBucket download
URL:https://github.com/takezoe/gitbucket/releases
最新版を入手します「gitbucket.war」
Javaに心得があったりカスタマイズできるスキルがある場合はSource Codeを選択してください

ApacheやNginxを使う場合の設定
LDAPサーバを準備して行う場合などなどは
Wiki を参照してください
URL：https://github.com/takezoe/gitbucket/wiki

とりあえず何がともあれJAVA をつかうんで確認しておく
## 1.2. OpenJDKの整備
* Ubuntu/Debian系
[こちらを参考にしました](http://qiita.com/minecraft/items/3ca7e9897fa8ec7099ae)
[こっちも](http://www.2daygeek.com/how-to-install-java-7-openjdk-on-ubuntu/)

　1.)`java -v`
　インストールされてないやんけ
　2.) `sudo apt-get install openjdk-7-jre-headless`
　とりあえず入った

```
~$ java -version
java version "1.7.0_65"
OpenJDK Runtime Environment (IcedTea 2.5.3) (7u71-2.5.3-0ubuntu0.14.04.1)
OpenJDK 64-Bit Server VM (build 24.65-b04, mixed mode)
```

* 番外qnap(NAS)をつかってみる
[こちらにアバウトな記事](http://qiita.com/ryuthky_github/items/4f7465ef75d31e4a0697) 

ぶっちゃけGitBucket単体で「`java -jar gitbucket.war`」しとけば動くんで
手っ取り早く動かしたい！とか個人で利用ならそれでいいとおもいます

今回はServletコンテナはTomcatを使用する場合を記載します。
TomcatをInstallして起動します。
## 1.3. Tomcatの整備
* Ubuntu/Debian系

[こちらを参考にしました](http://thisdotlife.com/2014/08/17/how-to-install-tomcat-8-on-ubuntu-14-04/)
`apt-get install`で入るTomcat7だと相性が悪いのかデプロイできませんでした
Tomcat8を入れて動かすと動きました

1.)Tomcatが[http://[HOSTNAME]:8080]で起動することを確認
![Apache Tomcat 8.0.15.png](https://qiita-image-store.s3.amazonaws.com/0/10605/c5616315-b7bb-c76f-4527-4e9a27692a69.png)


2.)ManageAppとHostManagerアクセスできるようにする
アクセスできないときにやり方を教えてくれるのでそのまま言われたとおり設定する
![401 Unauthorized.png](https://qiita-image-store.s3.amazonaws.com/0/10605/861ad8d9-68b5-2cff-5ca2-2ac4facb05e3.png)

```
$ cd /opt/tomcat/config
$ sudo vi tomcat-users.xml
```

以下を設定する

```xml
<tomcat-users>
 <role rolename="manager-gui"/>
 <role rolename="admin-gui"/>
 <user username="tomcat" password="s3cret" roles="manager-gui,admin-gui"/>
</tomcat-users>
```
tomcatを再起動
``$/opt/tomcat/conf$ $CATALINA_HOME/bin/catalina.sh  start ``

## 1.4.GitBucket配置
 1.)Tomcatにアクセス
「http://[HOSTNAME]:8080」
 2.)ManageAppを開く
![Apache Tomcat 8.0.15.png](https://qiita-image-store.s3.amazonaws.com/0/10605/c5616315-b7bb-c76f-4527-4e9a27692a69.png)

 3.)Gitbucketのwarを配備
![manager.png](https://qiita-image-store.s3.amazonaws.com/0/10605/ac6ca24e-cdef-50ad-c1ba-db872c353d9a.png)
ダウンロードした「gitbucket.war」を指定し配備ボタンをおすと
上の[アプリケーション]のパスに[/gitbucket]が出てくるここでコマンド「起動」
さー起動したか確認してみよー「http://[HOSTNAME]:8080/gitbucket」

![GitBucket.png](https://qiita-image-store.s3.amazonaws.com/0/10605/db47e95b-01eb-b9e2-b094-a2d6a582fe4f.png)

# 2.Jenkinsの準備
## 2.1.Jenkins download
* Ubuntu/Debian系

[本家のInstall手順を参考に](https://wiki.jenkins-ci.org/display/JENKINS/Installing+Jenkins+on+Ubuntu)

![Installing Jenkins on Ubuntu.png](https://qiita-image-store.s3.amazonaws.com/0/10605/4ee7656c-463b-05c3-56e8-acf89e220809.png)

## 2.2.Jenkinsの配備
 1.)Tomcatにアクセス
「http://[HOSTNAME]:8080」
 2.)ManageAppを開く
 3.)Jenkinsのwarを配備
GitBucketとは異なりサーバ上にinstallしてあるので本体[jenkins.war]の場所を探します

```
sudo find ../../ -name "jenkins"
/usr/share/jenkins
```
「コンテキストパス」には「/jenkins」
「WARファイル又はディレクトリのURL」に「/usr/share/jenkins/jenkins.war」を指定し
[配備]ボタンをおします
すると自動起動されます
![Jenkinsmanager2.png](https://qiita-image-store.s3.amazonaws.com/0/10605/5b967cd3-38c2-c853-fc2b-b0c68726beaa.png)

さー起動したか確認してみよー「http://[HOSTNAME]:8080/jenkins」
![ダッシュボード  Jenkins .png](https://qiita-image-store.s3.amazonaws.com/0/10605/23d6b810-baad-7085-ee20-03474f557d79.png)

ちなみにapt-get で入れたjenkinsはserviceで起動するので再起動してしまうとTomcatを介さず起動してしまうため
gitbucketも動かなくなってしまいます
サービス起動しないよう「`sudo update-rc.d -f jenkins remove`」で起動スクリプトをはずしておきます

# 3.HipChatの準備
HipChatじゃなくてもよかったんですが現場で使ってるメッセンジャーツールだったので
例としてこれを出しておきます。
昔からIRQやらIPMessager、今だとSkype, HoungOut, Slackなんかもメジャーどころですね
これらも後述しますがJenkinsおじさんが結果を通知してくれればいいだけなので
「その担当が気がつくツール」であれば何でもよく「メール」だけは欠かさず見るとか
ブラウザは必ず見てるのでそこで通知される。とかとか何でもいいのです
Jenkinsのプラグインさえあれば！

[HipChatの本家](https://www.hipchat.com/)
登録等の内容は割愛します

これでプラットフォームの設置は完了
[コミットしたらGitBucketとJenkinsとHipChatに任せて他の事やってましょう(2)](http://qiita.com/ryuthky_github/items/f3d5e641cfbe8d4f3cde)へ続く。