Jenkins从svn下载项目构建项目打war包发布到远程Linux服务器
需求
公司做了个单体项目,打war包的形式发布到服务器上,项目初始阶段需要不断的迭代开发,那么发布流程是比较麻烦的,所以弄了一个jenkins CIDI持续继承部署,来简化后边的流程,弄好以后,开发好的代码提交svn主干,点点jenkins的按钮,即可自动从svn down最新的代码,maven构建项目打war包,上传到服务器,配合shell脚本自动实现旧项目的打包备份,新项目的部署,重启tomcat。
因为远程服务器只有一个端口,同时公司的svn服务器是内网的,所以只能将jenkin安装到我本地,在本地构建好war包,在部署到远程服务器。
Jenkins的安装和插件的安装
jenkin的安装不说了,插件的话主要安装以下:
1.Deploy to container Plugin 发布到tomcat容器的插件
2. Locale plugin 汉化插件-可以不安装
3. Maven Integration plugin Maven插件构建项目用的
4. SSH plugin 链接远程服务器要用到的SSH插件
5. Publish Over SSH 将war包发布到服务器上的插件
6. Subversion SVN插件
配置
1.Global Tool Configuration 全局工具配置中设置好JDK和Maven路径
2.Configure System 系统设置中,配置好远程登录服务器的登录信息等
需要注意的点:
SSH Server Name: 起个名字
Hostname:远程就写服务器IP,本地就写本地ip或者localhost
Username: 服务器用户名
Remote Directory: 发布war到远程服务器的目录,我这里并没有直接发布到tomcat的wabapp目录
Passphrase / Password: 服务器的密码,如果用了秘钥登录,这里填写秘钥的密码
Path to key: 如果用了秘钥登录,这里填写秘钥的地址
Key: 填写秘钥的内容,这里需要把-----BEGIN RSA PRIVATE KEY----------END RSA PRIVATE KEY-----都copy上,一开始这里遇到个坑。
Port:端口号
配置好后,点击测试连接
new 任务
1.新建一个任务,选择构建maven项目
2.如图,进行配置,
3. 构建项目
红色代表报错
蓝色代表成功
黑色强制中断
黄色是流程大部分成功,但是最后执行脚本的时候无权限导致的
输出信息
jenkin安装,会在你本地c盘创建其需要的配置文件等,打包构建项目都会放在这里,安装的插件也会放在这里,所以你就算吧war包删除了,只要c盘的这个配置没删,下次重新安装jenkins的war包,这些插件还都存在。
总结
弄的时候遇到了一些小坑,这里提一下,
1.一个是连接ssh服务的时候一直连不上,后来发现是秘钥的内容copy的不全
2.maven执行命令构建项目的时候报错了,同时加上你想要打包成的名字,因为本地和发布到服务器上的包名是不一样的。
3.执行shell脚本的时候,遇到了权限问题,请教公司运维同事后解决。
附带shell脚本,自己改吧改吧就能用
#!/bin/bash
DATE=`date +%F-%H-%M`
PROJECT_ADMIN='ROOT'
PWD='你的服务器密码'
ROOTDIR='/data/tomcat/jenkins_workspace/temp'
TOMCAT_HOME='/data/tomcat/apache-tomcat-8.5.50-test'
#停止tomcat服务
#echo '停止test-tomcat-01'
echo ${PWD}|sudo -S sh ${TOMCAT_HOME}/bin/shutdown.sh
echo ${PWD}|sudo -S ps -ef | grep ${TOMCAT_HOME}/ | grep -v grep| awk '{print $2}' | xargs sudo kill -9
#备份
cp ${TOMCAT_HOME}/webapps/${PROJECT_ADMIN}.war /data/tomcat/jenkins_workspace/bak/${PROJECT_ADMIN}_${DATE}.war
#删除旧项目
echo ${PWD}|sudo -S rm -rf ${TOMCAT_HOME}/webapps/${PROJECT_ADMIN}*
#rm -rf ${TOMCAT_HOME}/webapps/${PROJECT_ADMIN}.war
#将新的war包放入tomcat中
echo ${PWD}|sudo -S mv ${ROOTDIR}/${PROJECT_ADMIN}.war ${TOMCAT_HOME}/webapps/${PROJECT_ADMIN}.war
#移除文件
#rm -rf ${ROOTDIR}/*.war
#启动tomcat服务
#echo '启动test-tomcat-01'
echo ${PWD}|sudo -S sh ${TOMCAT_HOME}/bin/startup.sh