1、Jenkins全局工具配置
- 配置maven-系统管理-全局工具配置
- 在服务器mvn -v查看maven home
- 在jenkins配置maven,git(其实jenkins所在命令支持了git和maven命令,这些配置可有可无)
2、安装jenkins ext插件
- jenkins有好几种安装插件的方式,我这里是下载插件然后直接导入
- 需要的基本插件 Maven Integration\SSH\gitlab-hook\gitlab-plugin
- 可上:http://updates.jenkins-ci.org/download/plugins/找一下
- 然后上传文件安装
3、gitlab-hook,git钩子的配置
可达到检测代码的改变,自动构建的目的
- 在jenkins的maven工程找到Build Tiggers一栏
- 复制红框中的地址和密钥
- 上gitlab,你得是这个项目的master或者owner才有这个权限
- 然后选择 Settings -> Integrations,在 URL 一栏中输入前面保存的 GitLab Webhook URL
- 在 Secret Token 一栏中输入前面保存的 Secret token,然后选择需要 trigger Jenkins 工程执行构建的事件,一般都是选合并和推送
6.如下图,配置完成
4、配置Git拉取代码的路径和分支
- 同样是在jenkins的maven工程,找到如下图位置,进行配置
5、代码构建完成后,免密复制jar包到远程服务器
- 还是在jenkins的maven工程,找到如下图位置,进行配置
- 填入:/opt/./autodeploycopy.sh
- 配置jenkins服务器和scp服务器的ssh key,达到免密
1. 在jenkins机器上找:/root/.ssh/ id_rsa.pub里面的key
2. 在tomcat机器上:新建:/root/.ssh/authorized_keys文件,填入上第一步得到的key
6、远程tomcat服务器进行重启、配置文件修改
- 使用SSH remote hosts插件
- 添加凭据
- 然后到配置里配置并注册这台服务器
- 配置远程服务器完成
- 构建后,执行远程服务器的自动部署脚本
- 自动部署全流程完成
- 脚本参考如下(拙劣,勿喷)
复制到目标服务器
find /root/.jenkins/workspace/Autodeployfor_Paringk2x -name "parkingCommonCenterEntry*.war" |xargs -i scp {} root@172.18.2.18:/opt/tomcat/AutoDeploy
find /root/.jenkins/workspace/Autodeployfor_Paringk2x -name "parkingDeviceEntry*.war" |xargs -i scp {} root@172.18.2.18:/opt/tomcat/AutoDeploy
find /root/.jenkins/workspace/Autodeployfor_Paringk2x -name "parkingClientEntry*.war" |xargs -i scp {} root@172.18.2.18:/opt/tomcat/AutoDeploy
find /root/.jenkins/workspace/Autodeployfor_Paringk2x -name "parkingInspectionEntry*.war" |xargs -i scp {} root@172.18.2.18:/opt/tomcat/AutoDeploy
find /root/.jenkins/workspace/Autodeployfor_Paringk2x -name "parkingPushEntry*.war" |xargs -i scp {} root@172.18.2.18:/opt/tomcat/AutoDeploy
find /root/.jenkins/workspace/Autodeployfor_Paringk2x -name "parkingMaintainEntry*.war" |xargs -i scp {} root@172.18.2.18:/opt/tomcat/AutoDeploy
目标服务器进行自动发布
#!/bin/bash
Host='http:\/\/172.18.2.200:8092\/parking_business_entry\/'
Web_socket='ws:\/\/172.18.2.200:8092\/parking_ws_entry\/parkingws'
Img_Server='http:\/\/172.18.2.4:8880'
#Config_Url='http:\/\/116.62.158.143\/conf_test2_200.properties'
Config_Url='\/opt\/conf_test2_200.properties'
warlocation='/opt/tomcat7.0.75/AutoDeploy'
webappslocation='/opt/tomcat7.0.75/webapps'
function AutoDeploysingle(){
cd ${warlocation}
rm -rf ${packname}
unzip -oq ${packname}*.* -d ${packname}
sed -i "s/^config.url.*$/config.url=$Config_Url/g" ${warlocation}/${packname}/WEB-INF/classes/config.properties
rm -rf ${webappslocation}/${packname}
cp -R ${warlocation}/${packname} ${webappslocation}
rm -rf ${warlocation}/${packname}
echo "${packname}更新成功!........"
}
packname='parking_api_entry'
if [ -f "${warlocation}/${packname}.war" ];then
AutoDeploysingle
fi
packname='parking_business_entry'
if [ -f "${warlocation}/${packname}.war" ];then
AutoDeploysingle
fi
packname='parking_collect_entry'
if [ -f "${warlocation}/${packname}.war" ];then
AutoDeploysingle
fi
packname='parking_ws_entry'
if [ -f "${warlocation}/${packname}.war" ];then
AutoDeploysingle
fi
if [ -d "${warlocation}/前端/" ];then
sed -i "s/HOST.*$/HOST\='$Host',/g" ${warlocation}/前端/static/host.config.js
sed -i "s/WEB_SOCKET.*$/WEB_SOCKET\='$Web_socket',/g" ${warlocation}/前端/static/host.config.js
sed -i "s/IMG_SERVER.*$/IMG_SERVER\='$Img_Server',/g" ${warlocation}/前端/static/host.config.js
rm -rf ${webappslocation}/ROOT/*
cp -R ${warlocation}/前端/* ${webappslocation}/ROOT
echo "前端更新成功!...."
fi
echo "搞定,重启tomcat"
tomcat restart