ゴール
いままで何となくJenkinsを使っていたが、JenkinsがほぼCronだということがわかった。
いろいろプラグイン入れると便利みたいだけど、とりあえずCronのまとめ役として使ってみる。
GithubからプッシュされたタイミングでJarを作成するシェルをJenkinsで動かす。
Jenkinsダウンロード&起動
下の参考リンクからJenkinsをダウンロード
https://qiita.com/inakadegaebal/items/b526ffbdbe7ff2b443f1
Javaの文字コード設定
javaコマンドを実行すると???という文字化けするため以下設定しておく
export JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF8
Jenkinsユーザでsudoでシェルを実行するときパスワードなしにする
JenkinsでSudoで実行してもうまく動作しないため以下の設定を行う
sudo /usr/sbin/visudo
# 追記箇所(最終行等に加える)------------------
Defaults:jenkins !requiretty
jenkins ALL=(ALL) NOPASSWD:ALL
GitHubからソースを取得する
cd /opt/
git clone https://github.com/xxxx/xxxxx.git
シェル作成
Jenkinsで実行するシェル。Gitから最新のソースを取得してMavenを実行。
# !/bin/sh
filepath="/opt/gitsource-filename"
## 実行するディレクトリ移動(適時修正)
echo '***Change Directory'
cd $filepath
## 最新のソースアップデート
echo '***Git Update'
git pull
## Mavenクリーンアップ
echo '***Maven Clean'
mvn clean
## DomaのためSQLファイルをコピー
echo '***Directry Copy'
mkdir -m 777 -p ./target/classes/
cp -r ./src/main/java/META-INF ./target/classes/
## Jarに固める(テスト実行はスキップ)
echo '***Maven Download'
mvn package -Dmaven.test.skip
## 実行するJar変更
chmod 666 ./target/xxxxxxx-0.0.1-SNAPSHOT.jar
## Jar実行&ProcessIdをテキストファイルに書き込み
java -jar ./target/xxxxxxx-0.0.1-SNAPSHOT.jar & echo $! > ./pid.file &
JenkinsでGitHubのポーリング設定
GitHubのログイン情報を設定。SCMポーリングで起動するよう設定。
Jenkinsでシェル実行を設定
困っていること・今後解決していきたい課題
1.DomaのSQLがパッケージングされない
今回自身が作成したアプリにDomaを利用したが、
Domaで使用しているMETA-INF配下のSQLファイルがビルドフォルダにコピーされない
無理矢理コピーしているのが現状。Eclipseならビルドパス指定してたけど、CentOSではどうすれば?検索中。。。
SQLファイル[META-INF/../select.sql]がクラスパスから見つかりませんでした
http://doma.seasar.org/faq.html#development-environment-5
2.SprigBootのjar実行するとJenkinsの結果が帰ってこない
jar実行したらあたりまえだけど。実行したら帰ってこない。起動した時、一旦OKを返してくれると嬉しい。
→ 以下のようにJarをテキスト出力に変えたら結果が表示された
java -jar ./target/xxxxxxx-0.0.1-SNAPSHOT.jar
java -jar ./target/xxxxxxx-0.0.1-SNAPSHOT.jar & echo $! > ./pid.file &