花30分钟,用Jenkins部署码云上的SpringBoot项目
点击上方 好好学java ,选择 星标 公众号
重磅资讯、干货,第一时间送达
今日推荐:硬刚一周,3W字总结,一年的经验告诉你如何准备校招! 个人原创100W+访问量博客:点击前往,查看更多来源:juejin.im/post/5be1a485f265da612859974c
持续交付的概念,相信你们都听过,jenkins鼎鼎大名,这个工具真是太方便了,特别是配置了自动化构建和部署之后,不管是对测试,还是对运维都帮助特别大。你懂得怎么自动化部署一个springboot项目吗,来跟着走一遍吧!
本文介绍 jenkins 如何从 gitee 上 clone 项目,然后使用 maven 打包并后台启动。
1.Jenkins 介绍
Jenkins 是一个开源软件项目,是基于 Java 开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。 (以上介绍来源于百度百科)
其实通俗来说,Jenkins 就是一个自动化部署项目的工具,帮我省去重复的运维工作。
2. 环境准备
本文需要如下几个工具:
JDK
Git
Maven
以上三种就不在这里介绍安装了,这里我贴出我的环境变量配置仅供参考:
Jenkins
我的 Jenkins 是使用如下方式安装:
sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
sudo rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key
sudo yum install jenkins
启动
service jenkins start
然后访问 http://${ip}/8080,可以看到 jenkins 那个小老头,根据自行配置安装插件,其中密码在这里
vi /var/lib/jenkins/secrets/initialAdminPassword
以上都在网上有很多,我在博客中也写过,就不在这里废话太多了。
3.Jenkins 工具插件配置
3.1 插件配置
个人建议,Jenkins 第一次进入推荐安装的插件就默认安装就行,省的还需要后续自己安装,当然,如果自己安装的话需要 Maven 和 Git 插件。
3.2 工具配置
JDK
Git
Maven
这里就可以用到上面环境准备时需要的截图,这里我也摸索了很久才配置完成。
4. 配置项目
4.1 构建自由风格的项目
新建项目,选择构建自由风格的项目,给项目起个名字,然后点击 Ok。
4.2 配置参数化构建过程
这里我用到了几个参数,因为可能有时需要提前准备好参数在进行构建,如下图:
jar_path : 本意是准备项目打包后的 jar 位置,其实这里是 Jenkins 工作空间
spring_profile:这个是读取配置文件前缀,比如 dev,test,prod
jar_name:jar 包名称
project_name:项目名称
4.3 Git 配置
用 Git 进行将项目 Clone 下来,配置自己的用户密码,Repository URL 配置 git 地址(这里提供的地址是私密项目,项目没什么特别的,就是简单 SpringBoot 项目,不用尝试了,用自己项目就可以)
4.4 配置 Build
这里选择执行 Shell,内容如下:
mvn clean install -Dmaven.test.skip=true
echo $spring_profile $jar_path $jar_name
cd /usr/local/shell/
./stop.sh $jar_name
echo "Execute shell Finish"
./startup.sh $spring_profile $jar_path $jar_name $project_name
如图:
在上面执行的 Shell 里面还用到了两个 Shell,分别是 stop.sh,实质就是找到 jar 执行的 pid,然后 kill,具体内容如下:
jar_name=${1}
echo "Stopping" ${jar_name}
pid=`ps -ef | grep ${jar_name} | grep -v grep | awk '{print $2}'`
if[ -n "$pid"]
thenecho "kill -9 的pid:" $pidkill -9 $pid
fi
startup.sh 内容如下,具体可以根据情况修改:
spring_profile=${1}
jar_path=${2}
jar_name=${3}
project_name=${4}
cd ${jar_path}/${project_name}/target/
echo ${jar_path}/${project_name}/target/
echo nohup java -jar ${jar_name} &
BUILD_ID=dontKillMe nohup java -jar ${jar_name} --spring.profiles.active=${spring_profile} &
5 测试运行
5.1 运行
点击运行后,如图所示,刚刚预配置的参数都可以看到并可以修改,这里我们用默认配置好的就可以。
然后点击运行就可以,当时遇到了一个插曲,我的 Maven 是安装成功的,但是 Jenkins 内无法使用,报错 mvn:command not found,这里我解决的方式是将 mvn 命令也指向 / usr/bin/mvn,如下:
ln -s /usr/local/apache-maven-3.5.4/bin/mvn /usr/bin/mvn
访问效果其实就是我的博客,如图所示:
6 总结
总体过程坑其实还是很多的,毕竟没有使用过,但是没有什么特别棘手的问题,总是出现不同的问题,有需要可以与我一起交流学习。
推荐文章
硬刚一周,3W字总结,一年的经验告诉你如何准备校招!
今年的校招,Java 好拿 offer 吗?
10月了,该聊聊今年秋招了!
聊聊在腾讯实习快一个月的感受
原创电子书历时整整一年总结的 Java 面试 + Java 后端技术学习指南,这是本人这几年及校招的总结,各种高频面试题已经全部进行总结,按照章节复习即可,已经拿到了大厂offer。
原创思维导图扫码或者微信搜 程序员的技术圈子 回复 面试 领取原创电子书和思维导图。
花30分钟,用Jenkins部署码云上的SpringBoot项目相关推荐
- 使用 Jenkins 部署码云上的 Spring Boot 项目
欢迎关注方志朋的博客,回复"666"获面试宝典 本文介绍 jenkins 何从 gitee 上 clone 项目,然后使用 maven 打包并后台启动. 1.Jenkins 介绍 ...
- Eclipse项目上传码云、从码云上检出项目、修改检出项目后在提交到码云、看此篇即可
Eclipse中项目上传到码云平台 文章的目的是自己记录学习使用,只记录使用eclipse相应的上次下载修改方法,具体细节没做很大把控.希望对自己学习有所帮助,同时也希望能帮助到没有接触到这块的人一起 ...
- 码云上开源JAVA项目收藏
一. 个人学习项目 1. BootDo面向学习型的开源框架 (可以当做 管理台脚手架) BootDo是高效率,低封装,面向学习型,面向微服的开源Java EE开发框架. BootDo是在SpringB ...
- 码云上传本地文件夹,码云只能上传20个文件的突破方法
码云官方地址:https://gitee.com/ 很多人不知道码云上传本地文件夹怎么操作,或者如何突破码云只能上传20个文件限制的问题,今天就来说说这事的方法吧. 简介: 码云是媲美GitHub的代 ...
- 码云上传文件夹_码云上传本地文件夹,码云只能上传20个文件的突破方法
码云官方地址:https://gitee.com/ 很多人不知道码云上传本地文件夹怎么操作,或者如何突破码云只能上传20个文件限制的问题,今天就来说说这事的方法吧. 简介: 码云是媲美GitHub的代 ...
- 把项目放到码云上,通过git 进行项目管理
1.在码云上新建一个项目 把使用 Readme文件初始化这个项目这个勾选去掉 项目生成后会看到 码云的git 简易的命令行入门教程: Git 全局设置: git config --global us ...
- 【IDEA】IDEA中使用git将项目上传到码云上
前言 该篇文章记录了使用IDEA上传项目到码云上. 前提是你在 IDEA中集成了git ,并且会 git的简单使用 . 一.IDEA上传项目到码云上 1.将项目变成Git能管理的仓库 选中菜单栏 VC ...
- Jenkins 流水线 获取git 分支列表_jenkins的安装和配置 自动化部署 码云 gitee
目前项目使用的jenkins 自动化部署的还是比较多的 ,所以趁着脑瓜子还清醒,来写一下如何使用 jenkins 使用码云更新代码后,重新构建就是最新的代码,费话不多少了 直接上货, 首先要做一下准备 ...
- html 打开页面光标自动选中输入框_Python自动部署码云:
Python自动部署码云: 1:大概思路: 其实还是打开浏览器登录,只不过不用你自己再一步一步登录部署干啥.python代替你完成了这个过程.我用的谷歌浏览器,谷歌真香,用的人都说爽. 2:下载chr ...
最新文章
- noj数据结构稀疏矩阵的加法十字链表_数据结构学习(C )稀疏矩阵(十字链表1)
- 你写的代码好像一条虫啊!
- Google发布App Engine第二代运行时,提供Python 3.7和PHP 7.2支持
- HNOI2012永无乡
- linux查看内存、CPU占用资源最多的进程
- Shell获取时间,日期,上月,当月,下月
- 排序算法——归并排序
- webpack4.x多页面零配置项目模板
- hdu 1754/zstu 3121 I Hate It(线段树)
- 布局—column(属性)
- tensorflows十五 再探Momentum和Nesterov's accelerated gradient descent 利用自动控制PID概念引入误差微分控制超参数改进NAGD,速度快波动小
- java 40期_【40期】说一下线程池内部工作原理
- 《电子商务安全》考试重点/学习重点
- USB协议分析方法,工具推荐
- ODAC的tnsnames.ora文件
- 用Actix写的一个类似于Facemash的小项目总结
- QA:filter-自适应均衡器
- Linux - Assuming drive cache:write througu /dev/sda1 contains a file system with errors,check forced
- 关于定点数、原码、反码、补码的理解
- 【Python】创蓝253云通讯平台国际短信API接口DEMO