※もくじはこちら

### 概要 CentOS上に、Play Framework2 on JavaのCI環境を構築していきます。
長くなるので分割で。

#### 登場人物
  • Play Framework 2.2
  • Jenkins(Jenkins.war)
  • Git
  • CentOS 6.4 i386
### 手順その④:CI環境の準備
#### Jenkinsのダウンロードと起動確認 ```sh ciuser$ wget http://mirrors.jenkins-ci.org/war/latest/jenkins.war ciuser$ java -jar jenkins.war ```初期化終わったらCtrl+C
#### Jenkins.warをサービスとして起動・終了するスクリプトの作成 ```sh ciuser$ vim start-jenkins.sh #!/bin/bash JENKINS_WAR=~/jenkins.war JENKINS_LOG=~/logs/jenkins.log nohup java -jar $JENKINS_WAR > $JENKINS_LOG 2>&1 & ``````sh ciuser$ vim stop-jenkins.sh #!/bin/bash kill `ps ax | grep '[j]enkins.war' | awk '{ print $1 }'` ``````sh ciuser$ mkdir logs ciuser$ chmod +x start-jenkins.sh stop-jenkins.sh ```
#### ciuserから各WEBアプリケーション起動ユーザへの接続設定 デプロイにsshとscpを使用するため、ciuserのssh鍵を各アプリケーション起動ユーザへ転送するciuserの公開鍵を /home/playapp/.ssh へコピーし、権限設定 ```sh root$ mkdir /home/playapp/.ssh/ root$ cp /home/ciuser/.ssh/id_rsa.pub /home/playapp/.ssh/authorized_keys root$ chown -R playapp:playapp /home/playapp/.ssh/ root$ chmod 600 /home/playapp/.ssh/authorized_keys root$ chmod 700 /home/playapp/.ssh ```同様の方法で、 playapp.develop と playapp.master にもSSH鍵を転送する

#### Playアプリケーションをサービスとして起動・終了するスクリプトの作成 各WEBアプリケーション起動ユーザごとに作成 ```sh playapp$ vim start-play.sh #!/bin/bash LOGDIR=$HOME/logs LOGFILE=$LOGDIR/play.log PLAY_CONF=production.conf PLAY_PORT=9001 mkdir -p $LOGDIR nohup $HOME/deploy/bin/playapp -Dconfig.resource=$PLAY_CONF -Dhttp.port=$PLAY_PORT > $LOGFILE 2>&1 & RESULT=9 for i in {0..10}; do if [ $RESULT -eq 9 ] ; then sleep 2 fi grep 'Listening for HTTP' $LOGFILE > /dev/null if [ $? -eq 0 ] ; then RESULT=0 fi grep 'Exception' $LOGFILE > /dev/null if [ $? -eq 0 ] ; then RESULT=1 fi done if [ $RESULT -ne 0 ] ; then bash -v $HOME/stop-play.sh fi cat $LOGFILE exit $RESULT ``````sh playapp$ vim stop-play.sh #!/bin/bash PIDFILE=$HOME/deploy/RUNNING_PID if [ -r $PIDFILE ] ; then kill `cat $PIDFILE` fi ```start-play.shの、ユーザごとの変数設定について
  • playapp
    • PLAY_CONF=production.conf
    • PLAY_PORT=9001
  • playapp.master
    • PLAY_CONF=production.conf
    • PLAY_PORT=9011
  • playapp.develop
    • PLAY_CONF=develop.conf
    • PLAY_PORT=9012
Play起動スクリプトがあまりスマートでない。 
次回へ続く

### 参考URL