LoginSignup
5
6

More than 5 years have passed since last update.

JenkinsでSpringBoot自動デプロイ

Last updated at Posted at 2018-02-18

ゴール

いままで何となくJenkinsを使っていたが、JenkinsがほぼCronだということがわかった。
いろいろプラグイン入れると便利みたいだけど、とりあえずCronのまとめ役として使ってみる。
GithubからプッシュされたタイミングでJarを作成するシェルをJenkinsで動かす。

Jenkinsダウンロード&起動

下の参考リンクからJenkinsをダウンロード
https://qiita.com/inakadegaebal/items/b526ffbdbe7ff2b443f1

Javaの文字コード設定

javaコマンドを実行すると???という文字化けするため以下設定しておく

UTF8を指定
export JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF8

Jenkinsユーザでsudoでシェルを実行するときパスワードなしにする

JenkinsでSudoで実行してもうまく動作しないため以下の設定を行う

visudoを付与
sudo /usr/sbin/visudo


#追記箇所(最終行等に加える)------------------
Defaults:jenkins !requiretty
jenkins ALL=(ALL) NOPASSWD:ALL

GitHubからソースを取得する

Githubからソース取得
cd /opt/
git clone https://github.com/xxxx/xxxxx.git

シェル作成

Jenkinsで実行するシェル。Gitから最新のソースを取得してMavenを実行。

build.sh
#!/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ポーリングで起動するよう設定。
jenkins2.png

Jenkinsでシェル実行を設定

上記のシェルを叩く
jenkins.png

困っていること・今後解決していきたい課題

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 &
5
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6