当前位置:网站首页>Jenkins自动化部署项目
Jenkins自动化部署项目
2022-07-30 13:25:00 【软件测试呀】
最近在实习中接触了jenkins这个东西,所以花点时间了解了下。它可以在代码上传仓库(如github,gitee,gitlab)后,在jenkins(一个网站界面)中通过获取代码仓库中最新代码,进行自动化部署,而省去手动打包、上传服务器、部署这一系列步骤,非常方便。
下面教程分为以下几个部分:
一、在你的本地电脑或者linux服务器上下载安装jenkins:
jenkins下载地址:https://jenkins.io/ 下载网站的war包版本就好了
下载完后把它部署到你的tomcat上运行:放到tomcat的webapps目录下,启动tomcat(windows下双击startup.bat或者linux下运行sh startup.sh),然后通过浏览器访问,如我的电脑上访问:localhost:8080/jenkins 。启动后的界面如下:
然后到提示的文件中把里面的文本复制出来填到管理员密码中。
接着如果是在本地电脑跑,可能会出现:该jenkins实例似乎已离线 提示,如果出现,是因为本地https访问不了的原因。在浏览器中另打开一个界面http://localhost:8080/pluginManager/advanced,把升级站点中的url中的https改为http,保存更新。然后关掉tomcat服务器重启,就可以联网了。
接下来选择安装推荐的插件,这个需要一定的时间。最后额外推荐安装两个插件,在系统管理中可以安装插件:
1、 Rebuilder
2、 Safe Restart
二、在linux服务器中安装git, maven,创建一个jenkens目录,配置git的公钥到你的github上,这些步骤是使用jenkins的前提。
安装git的目的是在自动化部署前实时从git远程仓库中拉取最新的代码。在linux(我用的是centos系统)安装git:
yum install git
生成密钥:
ssh-keygen -t rsa -C "[email protected]"
可以不设置密钥密码直接按三次回车。 把家目录中生成的公钥内容复制到github或其他仓库上。
安装maven的目的是通过项目中的pom.xml文件自动解决项目依赖问题,构建项目。linux中通过wget+下载链接下载maven的zip包然后解压即可。配置maven环境变量:
vim /etc/profile
//在这个文件末尾加上
export MAVEN_HOME=/root/maven3.4.5
export PATH=$MAVEN_HOME/bin:$PATH
//保存后在命令行输入,启动配置
. /etc/profile
创建jenkins目录,用来存储拉取下来的项目代码等。
三、将Linux服务器注册到Jenkins上
1、开启服务器上的ssh服务,可通过 netstat -anp | grep :22命令查看是否开启
2、先来测试一下怎么在jenkins中操作远程服务器
在jenkins中选择系统管理——》新建节点
其中远程工作目录即你在Linux上创建的jenkins目录。在Credentials添加一个远程用户,输入你的远程机器用户名和密码保存。
点击TestEnv,启动代理。
在全局工具配置中配置git命令:
3、自动化部署过程原理:
所以需要编写一个shell脚本来执行这个过程。
具体的创建Jenkins任务的过程为
1.创建jenkins任务
2.填写Server信息
3.配置git参数
4.填写构建语句(shell脚本),实现自动部署。
四、创建自动化部署任务
1、编写shell部署脚本deploy.sh,并放到linux服务器中的jenkins目录下,在该目录下通过touch deploy.sh创建一个脚本,把下面的脚本复制到里面即可(到时每次自动部署都会执行它),脚本中的my-scrum为我要自动构建的项目名:
#!/usr/bin/env bash
#编译+部署项目站点
#需要配置如下参数
# 项目路径, 在Execute Shell中配置项目路径,
pwd 就可以获得该项目路径
# export PROJ_PATH=这个jenkins任务在部署机器上的路径
# 输入你的环境上tomcat的全路径
# export TOMCAT_APP_PATH=tomcat在部署机器上的路径
### base 函数
killTomcat()
{
#pid=`ps -ef|grep tomcat|grep java|awk '{print $2}'`
#echo "tomcat Id list :$pid"
#if [ "$pid" = "" ]
#then
# echo "no tomcat pid alive"
#else
# kill -9 $pid
#fi
#上面注释的或者下面的
cd $TOMCAT_APP_PATH/bin
sh shutdown.sh
}
cd $PROJ_PATH/my-scrum
mvn clean install
# 停tomcat
killTomcat
# 删除原有工程
rm -rf $TOMCAT_APP_PATH/webapps/ROOT
rm -f $TOMCAT_APP_PATH/webapps/ROOT.war
rm -f $TOMCAT_APP_PATH/webapps/my-scrum.war
# 复制新的工程到tomcat上
cp $PROJ_PATH/scrum/target/order.war
$TOMCAT_APP_PATH/webapps/
cd $TOMCAT_APP_PATH/webapps/
mv my-scrum.war ROOT.war
# 启动Tomcat
cd $TOMCAT_APP_PATH/
sh bin/startup.sh
2、在jenkins上点击新建一个任务,填好任务名,填写运行的节点(上文中新建节点时创建的):
3、点击源码管理,填写github(或gitlab等)地址:
4、点击add,选择check out to a sub-directory ,添加源码下载到jenkins目录下的指定目录(可以命名为你的项目名):
5、填写构建任务时的shell脚本,然后保存,点击立即构建完成自动构建。(这里有一个坑,一定要给tomcat下所有sh文件加上x权限才能启动tomcat成功,具体为在tomcat目录上层执行chmod a+x -R tomcat目录或者在tomcat的bin目录下执行chmod +x *.sh)
#当jenkins进程结束后新开的tomcat进程不被杀死
BUILD_ID=DONTKILLME
#加载变量
. /etc/profile
#配置运行参数
#PROJ_PATH为设置的jenkins目录的执行任务目录
export PROJ_PATH=`pwd`
#配置tomcat所在目录
export TOMCAT_APP_PATH=/root/tomcats/tomcat-my-scrum
#执行写好的自动化部署脚本
sh /root/jenkins/deploy.sh

6、自动化构建成功:
7、后续代码如果有改动,只要push到github或者gitlab等上,在jenkins界面中再次执行构建任务就可以了,非常方便,自动化部署,再也不用手动上传项目到服务器了。
五、解决一个tomcat关闭,所有tomcat都被关闭了的问题(如果你的jenkins也是安装的服务器上的其中一个tomcat中,就可能被莫名杀掉)
这是因为所有的tomcat的关闭脚本(shutdown.sh或者说catalina.sh)都默认监听的是8005端口。只要进去tomcat目录下的conf目录下的server.xml文件中,将
<Server port="8005" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
<!-- Security listener. Documentation at /docs/config/listeners.html
<Listener className="org.apache.catalina.security.SecurityListener" />
-->
中的8005端口改为不同的端口,就不会一个tomcat关闭,所有的tomcat都被关闭了
六、以后可以在linux服务器中安装多个tomcat,来部署不同的项目,分别使用不同的端口,如我喜欢用8081,8082,8083等端口来解决多个tomcat端口冲突问题(在tomcat的conf目录下的server.xml中修改即可,默认为8080)。然后可以用jenkins来管理这些tomcat的自动化部署啦。
最后感谢每一个认真阅读我文章的人,下面这个网盘链接也是我费了几天时间整理的非常全面的,希望也能帮助到有需要的你!

这些资料,对于想转行做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助……
如果你不想一个人野蛮生长,找不到系统的资料,问题得不到帮助,坚持几天便放弃的感受的话,可以点击下方小卡片加入我们群,大家可以一起讨论交流,里面会有各种软件测试资料和技术交流。
敲字不易,如果此文章对你有帮助的话,点个赞收个藏来个关注,给作者一个鼓励。也方便你下次能够快速查找。
自学推荐B站视频:
零基础转行软件测试:自学完软件测试,拿到了字节的测试岗offer,堪称B站最好的视频!
自动化测试进阶:已上岸华为,涨薪20K,2022最适合自学的python自动化测试教程,自己花16800买的,无偿分享

边栏推荐
- R语言ggpubr包的ggboxplot函数可视化分组箱图、自定义移除可视化图像的特定对象(移除可视化图像轴坐标轴的刻度线标签文本、both x and y axis ticks labels)
- jsArray数组复制方法性能测试2207300040
- 666666
- DeFi 巨头进军 NFT 领域 用户怎么看?
- 创意loadingjs特效小点跳跃动画
- 【自校正控制】自校正PID
- R语言向前或者向后移动时间序列数据(自定义滞后或者超前的期数):使用dplyr包中的lag函数将时间序列数据向后移动一天(设置参数n为负值)
- Parallelized Quick Sort Ideas
- strlen跟sizeof区别
- IDEA 重复代码快速重构(抽取重复代码快捷键)
猜你喜欢
随机推荐
人社部公布“数据库运行管理员”成新职业,OceanBase参与制定职业标准
Tutorial on using the one-key upgrade function of the RTSP/Onvif video platform EasyNVR service
外包干了七年,废了。。。
树形dp小总结(换根,基环树,杂七杂八的dp)
libudev 使用说明书
高性能数据访问中间件 OBProxy(三):问题排查和服务运维
RTSP/Onvif协议视频平台EasyNVR服务一键升级功能的使用教程
Lake storehouse which electricity (2) of the project: project using technology and version and the environment
Self-tuning PID self-tuning control 】 【
Decoding Redis' most overlooked high CPU and memory usage issues
SQL 26 calculation under 25 years of age or older and the number of users
libudev manual
matlab画图,仅显示部分图例
“12306” 的架构到底有多牛逼
学习笔记——七周成为数据分析师《第二周:业务》:业务分析指标
Why is Prometheus a monitoring artifact sufficient to replace Zabbix?
dolphinscheduler adds hana support
434. 字符串中的单词数
shell script flow control statement
[ARC092B] Two Sequences









