Play Framework2 on JavaをJenkins.warとGitでCIする その⑤(Jenkins設定編・開発系)
※もくじはこちら
概要
手順その⑤:Jenkinsの設定・開発系
Jenkinsを起動しておきましょう。
ciuser$ ./start-jenkins.sh
Jenkinsの設定
Jenkinsの設定方法はいろんな人が書いているので、ここでは要点だけ。
- 「Jenkinsの管理」→「グローバルセキュリティの設定」→「セキュリティを有効化」
- お好みの設定で。
- 「Jenkinsの管理」→「プラグインの管理」→「利用可能」
- Git Plugin をインストール
ジョブの作成
①ビルドジョブ(develop用)を作成
- ジョブ名
- playapp-develop-build
- フリースタイル・プロジェクトのビルド
- ソースコード管理
- ビルド・トリガ
- リモートからビルド
- 認証トークン
- build
- 認証トークン
- リモートからビルド
- ビルド
- シェルの実行
play clean play test play compile play stage play dist javadoc -classpath "target/universal/stage/lib/*" -d "target/javadoc" -sourcepath app controllers models
②ビルドジョブ(master用)を作成
- ジョブ名
- playapp-master-build
- 既存ジョブのコピー
- コピー元
- playapp-develop-build
- コピー元
※変更点は、ビルド時のブランチ名のみ
- ソースコード管理
- Git
- Branches to build
- */master
- Branches to build
- Git
③デプロイジョブ(develop用)を作成
- ジョブ名
- playapp-develop-deploy
- フリースタイル・プロジェクトのビルド
- ソースコード管理
- なし
- ビルド・トリガ
- 他プロジェクトのビルド後にビルド
- playapp-develop-build
- 他プロジェクトのビルド後にビルド
- ビルド
- シェルの実行
DIST=playapp.develop@localhost PACKAGE=playapp-1.0-SNAPSHOT PACKAGEZIP=${PACKAGE}.zip cd ../playapp-develop-build cd target/universal/ scp ${PACKAGEZIP} ${DIST}: ssh ${DIST} unzip -o ${PACKAGEZIP} ssh ${DIST} bash -v stop-play.sh ssh ${DIST} rm -fR deploy ssh ${DIST} mv ${PACKAGE} deploy ssh ${DIST} bash -v start-play.sh
④デプロイジョブ(master用)を作成
- ジョブ名
- playapp-master-deploy
- 既存ジョブのコピー
- コピー元
- playapp-develop-deploy
- コピー元
※変更点は、ビルド・トリガとビルドシェル
- ビルド・トリガ
- 他プロジェクトのビルド後にビルド
- playapp-master-build
- 他プロジェクトのビルド後にビルド
- ビルド
- シェルの実行
DIST=playapp.master@localhost PACKAGE=playapp-1.0-SNAPSHOT PACKAGEZIP=${PACKAGE}.zip cd ../playapp-master-build cd target/universal/ scp ${PACKAGEZIP} ${DIST}: ssh ${DIST} unzip -o ${PACKAGEZIP} ssh ${DIST} bash -v stop-play.sh ssh ${DIST} rm -fR deploy ssh ${DIST} mv ${PACKAGE} deploy ssh ${DIST} bash -v start-play.sh
Gitサーバに、Jenkinsジョブ起動のためのhookスクリプトを作成
master・developそれぞれのブランチへのpushでそれぞれ別のジョブを起動するので、『post-update』スクリプトを作成する。
gituser$ cd ~/playapp/hooks/ gituser$ vim post-update #!/bin/sh # # An example hook script to prepare a packed repository for use over # dumb transports. # # To enable this hook, rename this file to "post-update". echo "Hook post-update start" BRANCH=`echo $1 | awk -F'/' '{print $3}'` echo ARG1=$1 echo ARG2=$2 echo ARG3=$3 echo BRANCH=$BRANCH BASIC_USER=hogehoge BASIC_PASSWD=fugafuga TOKEN=build JOB_URL=http://localhost:50080/job/playapp-$BRANCH-build/build?token=$TOKEN case "$BRANCH" in "develop" | "master") wget -O /dev/null --auth-no-challenge --http-user=$BASIC_USER --http-password=$BASIC_PASSWD $JOB_URL || echo "wget failed" ;; esac echo "Hook post-update end" exec git update-server-info
gituser$ chmod +x post-update