花30分钟,用Jenkins部署码云上的SpringBoot项目

来源:juejin.im/post/5be1a485f265da612859974c

持续交付的概念,相信你们都听过,jenkins鼎鼎大名,这个工具真是太方便了,特别是配置了自动化构建和部署之后,不管是对测试,还是对运维都帮助特别大。你懂得怎么自动化部署一个springboot项目吗,来跟着走一遍吧!

本文介绍 jenkins 如何从 gitee 上 clone 项目,然后使用 maven 打包并后台启动。

1.Jenkins 介绍

花30分钟,用Jenkins部署码云上的SpringBoot项目

Jenkins 是一个开源软件项目,是基于 Java 开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。 (以上介绍来源于百度百科)

其实通俗来说,Jenkins 就是一个自动化部署项目的工具,帮我省去重复的运维工作。

2. 环境准备

本文需要如下几个工具:

  • JDK

花30分钟,用Jenkins部署码云上的SpringBoot项目

  • Git

花30分钟,用Jenkins部署码云上的SpringBoot项目

  • Maven

花30分钟,用Jenkins部署码云上的SpringBoot项目

以上三种就不在这里介绍安装了,这里我贴出我的环境变量配置仅供参考:

花30分钟,用Jenkins部署码云上的SpringBoot项目

  • Jenkins

我的 Jenkins 是使用如下方式安装:

  1. sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo

  2. sudo rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key

  3. sudo yum install jenkins

启动

  1. service jenkins start

然后访问 http://${ip}/8080,可以看到 jenkins 那个小老头,根据自行配置安装插件,其中密码在这里

  1. vi /var/lib/jenkins/secrets/initialAdminPassword

以上都在网上有很多,我在博客中也写过,就不在这里废话太多了。

3.Jenkins 工具插件配置

3.1 插件配置

个人建议,Jenkins 第一次进入推荐安装的插件就默认安装就行,省的还需要后续自己安装,当然,如果自己安装的话需要 Maven 和 Git 插件。

3.2 工具配置

  • JDK

花30分钟,用Jenkins部署码云上的SpringBoot项目

  • Git

花30分钟,用Jenkins部署码云上的SpringBoot项目

  • Maven

花30分钟,用Jenkins部署码云上的SpringBoot项目

这里就可以用到上面环境准备时需要的截图,这里我也摸索了很久才配置完成。

4. 配置项目

4.1 构建自由风格的项目

新建项目,选择构建自由风格的项目,给项目起个名字,然后点击 Ok。

4.2 配置参数化构建过程

这里我用到了几个参数,因为可能有时需要提前准备好参数在进行构建,如下图:

花30分钟,用Jenkins部署码云上的SpringBoot项目花30分钟,用Jenkins部署码云上的SpringBoot项目

  • jar_path : 本意是准备项目打包后的 jar 位置,其实这里是 Jenkins 工作空间

  • spring_profile:这个是读取配置文件前缀,比如 dev,test,prod

  • jar_name:jar 包名称

  • project_name:项目名称

4.3 Git 配置

用 Git 进行将项目 Clone 下来,配置自己的用户密码,Repository URL 配置 git 地址(这里提供的地址是私密项目,项目没什么特别的,就是简单 SpringBoot 项目,不用尝试了,用自己项目就可以)

花30分钟,用Jenkins部署码云上的SpringBoot项目

4.4 配置 Build

这里选择执行 Shell,内容如下:

  1. mvn clean install -Dmaven.test.skip=true

  2. echo $spring_profile $jar_path $jar_name

  3. cd /usr/local/shell/

  4. ./stop.sh $jar_name

  5. echo "Execute shell Finish"

  6. ./startup.sh $spring_profile $jar_path $jar_name $project_name

如图:

花30分钟,用Jenkins部署码云上的SpringBoot项目

在上面执行的 Shell 里面还用到了两个 Shell,分别是 stop.sh,实质就是找到 jar 执行的 pid,然后 kill,具体内容如下:

  1. jar_name=${1}

  2. echo "Stopping" ${jar_name}

  3. pid=`ps -ef | grep ${jar_name} | grep -v grep | awk '{print $2}'`

  4. if[ -n "$pid"]

  5. then

  6. echo "kill -9 的pid:" $pid

  7. kill -9 $pid

  8. fi

startup.sh 内容如下,具体可以根据情况修改:

  1. spring_profile=${1}

  2. jar_path=${2}

  3. jar_name=${3}

  4. project_name=${4}

  5. cd ${jar_path}/${project_name}/target/

  6. echo ${jar_path}/${project_name}/target/

  7. echo nohup java -jar ${jar_name} &

  8. BUILD_ID=dontKillMe nohup java -jar ${jar_name} --spring.profiles.active=${spring_profile} &

5 测试运行

5.1 运行

点击运行后,如图所示,刚刚预配置的参数都可以看到并可以修改,这里我们用默认配置好的就可以。

花30分钟,用Jenkins部署码云上的SpringBoot项目

然后点击运行就可以,当时遇到了一个插曲,我的 Maven 是安装成功的,但是 Jenkins 内无法使用,报错 mvn:command not found,这里我解决的方式是将 mvn 命令也指向 / usr/bin/mvn,如下:

  1. ln -s /usr/local/apache-maven-3.5.4/bin/mvn /usr/bin/mvn

访问效果其实就是我的博客,如图所示:

花30分钟,用Jenkins部署码云上的SpringBoot项目

6 总结

总体过程坑其实还是很多的,毕竟没有使用过,但是没有什么特别棘手的问题,总是出现不同的问题,有需要可以与我一起交流学习。


PS:欢迎在留言区留下你的观点,一起讨论提高。如果今天的文章让你有新的启发,欢迎转发分享给更多人。

Java后端编程交流群已成立

公众号运营至今,离不开小伙伴们的支持。为了给小伙伴们提供一个互相交流的平台,特地开通了官方交流群。扫描下方二维码备注 进群 或者关注公众号 Java后端编程 后获取进群通道。

花30分钟,用Jenkins部署码云上的SpringBoot项目

—————END—————

推荐阅读:


花30分钟,用Jenkins部署码云上的SpringBoot项目
最近面试BAT,整理一份面试资料Java面试BAT通关手册,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。
获取方式:关注公众号并回复 java 领取,更多内容陆续奉上。
明天见(。・ω・。)ノ♡

原创文章,作者:栈长,如若转载,请注明出处:https://www.cxyquan.com/10334.html

发表评论

登录后才能评论

联系我们

400-800-8888

在线咨询:点击这里给我发消息

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息