めんどくさいからJenkinsのジョブにSVNコミットさせた話
私は怠惰です。
doma-genを使ってDaoを自動生成しているのですが、開発サーバのDBに変更が入るたびに自動生成を実施するのは人間様のやることじゃないなと思ってJenkinsおじさんにやらせましたメモ。
よしなに読み替えて、Jenkinsでいろいろなことをやらせてもいいと思います。
環境
- 開発サーバOS:Linux
- 構成管理:SVN
- プロジェクト管理:maven
- Jenkinsバージョン:2.46
- doma-gen実行方法:antプラグイン
Jenkins設定
以下の設定をします。
1. ソースコード管理
コミット先のSVNリポジトリを指定します。
2. ビルド・トリガ
今回特にフックできるトリガがないので、日中1時間毎みたいな定義にしています。1時間毎に最新化されれば十分でした。
3. 前処理
(ローカル環境とサーバ環境でSVNバージョンが異なる場合)チェックアウトしてきた作業コピーのバージョンを合わせるために「svn upgrade」を実施します。
4. ビルド
mavenのantrunでdoma-genをキックします。
5. 後処理
本題。以下、画像につけている吹き出しの通りですが、Linuxの対話がやっかい。
こちらを参考にさせてもらいました→Linuxの対話がめんどくさい?そんな時こそ自動化だ!-expect編-
参考
コピペ用。
#!/bin/bash
# SVNのバージョンを合わせる。
cd $WORKSPACE/web
svn upgrade
#!/bin/bash
svn add ./web/src/* --force
svn status
expect -c "
set timeout 10
spawn env LANG=C /usr/bin/svn commit -m \"commit Comment\" --username \"jenkins\" --password \"password\"
expect \"(R)eject, accept (t)emporarily or accept (p)ermanently?\"
send \"p\n\"
expect \"Store password unencrypted (yes/no)?\"
send \"yes\n\"
expect \"$\"
exit 0
"
まとめ
たいしたことやってないし、シェルとかでがりがり書いたりしてもいいと思うんですけど、「SVNチェックアウトしてー、maven実行してー、コミットしてー、それをスケジューリングしてー」、とかいう細々した一連の作業を1画面でまとめてできたので、今回やりたいことをやるには一番楽でした。
ちょっとした「シェル実行フレームワーク」的なJenkinsの使い方でした。
Author And Source
この問題について(めんどくさいからJenkinsのジョブにSVNコミットさせた話), 我々は、より多くの情報をここで見つけました https://qiita.com/nisioka/items/aee3e53f9b86fa1ab5f7著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .