CI/CDを実践するため、JenkinsでArtifactsを生成してアプリケーションサーバーにデプロイする所まで設定してみました。
ソースコードとサーバー構築はこちらの準備編に書いてあります。
Tomacatサーバーへの自動デプロイしたい場合はTomcatアプリ編を参照
Jenkinsのジョブの流れ1
- ソースコードをチェックアウトする
- Mavenでビルドを実行しjarファイルを出力する
- jarファイルをJVMサーバーに転送する
- jarファイルを実行する
ソースコードをチェックアウトする
ソースコードも管理からGitを選び、準備編で用意したGithubのリポジトリをチェックアウトします。2
branchは、*/master を指定します。
Mavenでビルドを実行しjarファイルを出力する
シェルの実行を選び、./mvnw
コマンドで実行します。
ビルドはmavenを使いますが、Maveタスクではなくリポジトリに含まれるMavenWrapperで実行します。
尚、リポジトリにはプロジェクトが2つあるため、カレントディレクトリをWebSpringBootに移動してから実行しています。
cd WebSpringBoot
./mvnw clean package
Mavenを実行すると、/WebSpringBoot/targetに、web-spring-boot.jar が生成されます。
jarファイルをJVMサーバーに転送する
シェルの実行を選び、JVMサーバーにSSHで接続し、生成したArtifacts:web-spring-boot.jarを置きます。
また転送したjarファイルは以下の理由により、フルアクセス(rwx)にします。
- 継続的デプロイを行うため、ファイルの上書きを許可します。
- JVMサーバーのサービスから自己起動する3ので、ファイルの実行を許可します。
# SCPコマンドでJankinsからJVMサーバーにjarファイルを転送する
scp -i ~/.ssh/id_rsa WebSpringBoot/target/web-spring-boot.jar jvm@192.168.33.20:/var/jvm
# 実行権限を付与する
ssh -i ~/.ssh/id_rsa jvm@192.168.33.20 sudo chmod 700 /var/jvm/web-spring-boot.jar
jarファイルを実行する
シェルの実行を選び、JVMサーバーにSSHで接続してアプリケーションサービスを再起動します。
ssh -i ~/.ssh/id_rsa jvm@192.168.33.20 sudo systemctl restart app
Jenkinsのジョブ実行が成功すると、以下のURLからアプリケーションの実行が確認できます。
http://192.168.33.20:8080/
ビルドの設定画面
参考
Installing Spring Boot Applications(from Spring Boot Reference)
Spring Boot Reference Guide