くんすとの備忘録

IT系技術メモ

移転しました。

15秒後に自動的にリダイレクトします。

Play Framework2 on JavaをJenkins.warとGitでCIする その④(CI環境準備編)

※もくじはこちら

概要

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

登場人物

  • Play Framework 2.2
  • Jenkins(Jenkins.war)
  • Git
  • CentOS 6.4 i386

手順その④:CI環境の準備

Jenkinsのダウンロードと起動確認

ciuser$ wget http://mirrors.jenkins-ci.org/war/latest/jenkins.war
ciuser$ java -jar jenkins.war

初期化終わったらCtrl+C

Jenkins.warをサービスとして起動・終了するスクリプトの作成

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 &
ciuser$ vim stop-jenkins.sh
#!/bin/bash
kill `ps ax | grep '[j]enkins.war' | awk '{ print $1 }'`
ciuser$ mkdir logs
ciuser$ chmod +x start-jenkins.sh stop-jenkins.sh

ciuserから各WEBアプリケーション起動ユーザへの接続設定

デプロイにsshとscpを使用するため、ciuserのssh鍵を各アプリケーション起動ユーザへ転送する

ciuserの公開鍵を /home/playapp/.ssh へコピーし、権限設定

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アプリケーション起動ユーザごとに作成

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
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