LoginSignup
4
8

More than 5 years have passed since last update.

Javaで開発したWebアプリケーションをJenkinsを使って自動デプロイする[SpringBootアプリ編]

Posted at

CI/CDを実践するため、JenkinsでArtifactsを生成してアプリケーションサーバーにデプロイする所まで設定してみました。

ソースコードとサーバー構築はこちらの準備編に書いてあります。
Tomacatサーバーへの自動デプロイしたい場合はTomcatアプリ編を参照

Jenkinsのジョブの流れ1

  1. ソースコードをチェックアウトする
  2. Mavenでビルドを実行しjarファイルを出力する
  3. jarファイルをJVMサーバーに転送する
  4. 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/

ビルドの設定画面

image.png

参考

Installing Spring Boot Applications(from Spring Boot Reference)
Spring Boot Reference Guide


  1. 今回は敢えてコマンド実行でビルドとデプロイを行いたかったのでシェルの実行タスクを利用しました。 

  2. このリポジトリにはwar用のWebSpringMvcとjar用のWebSpringBootの2つのMavenプロジェクトが含まれています。今回は/WebSpringBootを利用します。 

  3. jarを実行可能にするには、spring-boot-maven-pluginのexecutable設定をtrueにしておきます 

4
8
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
4
8