Jenkins本地部署和远程部署
Jenkins本地部署和远程部署
简介:在Jenkins自动化部署中,可以搭建一个Jenkins服务器,然后把所有的项目都部署到这个Jenkins服务器中,当然前提是网络是互通的,下面就针对Jenkins远程部署的一些经验制作的部署文档
Jenkins环境搭建在这里不做讲解,这里只讲环境搭建完成后的配置。
1、 本地部署
本地部署相对来说比较简单
- 建立一个新项目:
建立一个风格自由的新项目,这里可以copy别的项目配置只需要在最下面选中存在的项目名即可。
2、 项目建立好以后对项目进行配置:
这里填写git服务器中项目的下载地址,在git服务器上粘贴即可,注意切换分支为develop。
在git pull下来后,需要对代码进行编译,于是我们就执行了build和build clean.
最后在工作目录下放置一个名称为AuditV5.sh的批处理脚本,此脚本中实现了log的删除,Tomcat服务的停止,各种log和内存的删除,服务的启动操作,具体脚本点开参考。
至此就完成了Jenkins本地的代码拉取编译,还有环境的停止和启动操作。
2、 远程部署
远程部署对环境的操作步骤其实是一样的,只是增加了远程操作。
1、 同理新增一个风格自由的项目,也可copy别的项目然后进行配置修改。
下面就是远程部署的重点。
2、 安装插件,安装Publish Over SSH和SSH plugin两个插件,Publish Over SSH插件是用来传输文件的,可以Jenkins服务器上编译后的文件到应用服务器上,SSH plugin插件为远程执行shell命令的插件,可在远程服务器上执行停服务,删日志等操作。
3、 插件安装完成后进行配置。首先针对Publish Over SSH进行配置,进入系统配置菜单,找到Publish over SSH,进行配置。
点击Test Configuration后,测试下连接是否成功。
4、 配置SSH plugin。
首先配置秘钥:
域名和描述随意输入,点击ok后,添加一个凭据.
5、 做项目中的配置,配置的思路就会仍然会把代码下载到服务器的工作空间下,然后编译后再拷贝到远程服务器中,在拷贝之前先停掉服务,删除远程服务器的日志,和刷新redis缓存,然后拷贝编译后的工程文件,最后启动服务。
同样做git配置。
编译
加上停服务,删文件,删缓存,如果需要还可以加上备份操作。
export TOMCAT_HOME=/home/hd/grcv5/tomcat-app-node01
sudo /etc/init.d/tomcat-app-node01 stop
sleep 10
/usr/local/bin/redis-cli -h 127.0.0.1 -p 6379 flushall
rm -rf $TOMCAT_HOME/grcv5/*
echo ’ ******** 开始删除/logs’
rm -rf $TOMCAT_HOME/logs/*
echo ’ ******** /logs删除完成’
echo ’ ******** 开始删除/grcv5’
rm -rf $TOMCAT_HOME/grcv5/*
echo ’ ******** /grcv5删除完成’
echo ’ ******** 开始删除hd.log’
rm -rf $TOMCAT_HOME/hd.log
echo ’ ******** /hd.log删除完成’
echo ’ ***************’
echo ’ ******** 开始删除缓存’
rm -rf $TOMCAT_HOME/temp/
rm -rf $TOMCAT_HOME/work/
rm -rf $TOMCAT_HOME/logs/
6、在构建环境中添加上传文件的配置或者选择构建后操作→Add post-build action也可以。
SSH Server Name:远程服务器的名字
Transfer Set
Source files:需要上传的文件(相对于工作区的路径。看后面的配置可以填写多个,默认用,分隔)
注意:这里用的是相对工作区的路径,比如你这个jenkins的工作目录为…/Jenkins/workspace/TEST,那这的目录只能是相对于这个目录下的,TEST为工程名字
需要上传…Jenkins/workspace/TEST/build/webapp下的文件,只需要写build/webapp/**
为目录下的文件,要包括文件夹和文件的是*
Remove prefix:移除目录(只能指定Transfer Set Source files中的目录,比如我的Transfer Set Source files为build/webapp/test.jsp,那这里Remove prefix则填build/webapp/,不然的话远程服务器上会新建build/webapp/目录)
Remote directory:远程目录(和系统配置Remote Directory结合使用,一定是绝对路径)
如果上传路径为/root/build/webapp,系统配置全局变量配置"/",这里的Remote directory为/root/build/webapp
系统配置全局变量配置"/root/",这里的Remote directory为/build/webapp即可。
Exec command:把你要执行的命令写在里面,可以把部署的脚本放在这里执行
3、 常见问题
使用sudo命令遇到报错:sudo: no tty present and no askpass program specified
表示远程访问环境sudo操作的时候需要输入密码,这时在远程环境中修改一个配置即可。
1 打开sudoers
vi /etc/sudoers
2 添加免密码
abc ALL = NOPASSWD: ALL