使用Jenkins自动部署基于Java开发的Web应用程序[SpringBoot应用程序编程]
为了实践持续集成/持续交付(CI/CD),我在Jenkins中设置了生成Artifacts并将其部署到应用服务器的步骤。
对于源代码和服务器的搭建,请参考这里的准备部分。
如果您想要实现自动部署到Tomcat服务器,请查阅Tomcat应用程序部分。
Jenkins的工作流程1
-
- 检出源代码
-
- 通过Maven构建并输出jar文件
-
- 将jar文件传输到JVM服务器
- 执行jar文件
检出源代码
在代码管理中,选择Git作为源代码,并将在准备步骤中准备的Github仓库进行检出。分支选择*/master。
使用Maven运行构建并输出jar文件。
选择执行Shell,并使用./mvnw命令来执行。
构建使用Maven,但是使用的是包含在仓库中的MavenWrapper进行执行,而不是Maven任务。
由于仓库中有两个项目,所以在执行之前会先切换到当前目录WebSpringBoot。
cd WebSpringBoot
./mvnw clean package
运行Maven会在/WebSpringBoot/target目录下生成web-spring-boot.jar文件。
将jar文件传输到JVM服务器上
选择执行Shell,并通过SSH连接到JVM服务器,将生成的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文件
选择运行Shell并使用SSH连接到JVM服务器,以重新启动应用程序服务。
ssh -i ~/.ssh/id_rsa jvm@192.168.33.20 sudo systemctl restart app
当 Jenkins 作业执行成功后,您可以通过以下 URL 确认应用程序的运行情况。
http://192.168.33.20:8080/
配置页面设置
请提供更多上下文,以便我可以为您提供一个完整的翻译。
安装Spring Boot应用程序(来自Spring Boot参考指南)
这次我们故意选择了使用命令行执行来进行构建和部署,所以使用了shell的执行任务。 ↩
这个仓库中包含了两个Maven项目,一个是用于war的WebSpringMvc,另一个是用于jar的WebSpringBoot。这次我们将使用/WebSpringBoot。 ↩
要让jar可执行,需要将spring-boot-maven-plugin的executable设置为true。 ↩