jenkins 自动化部署

209 阅读2分钟

1.常用插件

  • ThinBackup (备份所有配置信息)
  • Role-based Authorization Strategy (对应菜单Manage and Assign Roles)
  • Publish Over SSH 远程部署发布

2.服务迁移

  1. 整个tomcat含jenkins 一起复制到新服务器
  2. 启动tomcat服务,确保环境正常,然后关闭服务。(这里要初始化一下密码)
  3. 通过管理员登录->系统配置 -> 第一行主目录 : /root/.jenkins
  4. 复制的备份关键信息 config.xml , jobs , users , plugins到 的到新服务器上
  5. 在系统配置 -> 工具和动作 -> 读取设置(会自动读取最新配置信息)
  6. 启动tomcat服务。
  7. 配置 -》 全局工具配置: (node 环境,maven配置 + maven环境,JDK,Git)
  8. 服务器信息重新配置(系统配置 -> Publish over SSH ),
  9. git账号配置(在任意 "任务" -> 源码管理 -> 点击添加)
  10. 权限配置(全局安全配置 -> 授权策略 -> Role-Based Strategy 打开, 系统管理 -> Manage and Assign Roles 重新配置)
  11. 视图重新配置 (首页视图tab上点击 + 新增)

3.部署命令

java项目

#!/bin/bash
echo '####################自动部署 开始####################'

echo '>>>>>>删除原有项目>>>>>>'
rm -rf eeka-appenter

echo '>>>>设置tomcat 环境变量>>>>'
#启动tomcat服务
export JAVA_HOME=/usr/local/jdk1.8.0_181
path=`pwd` #当前路径
tomcatPath=/opt/app-test/apache-tomcat-8.5.45/ #指定tomcat文件目录名称
cd $tomcatPath/bin #进入tomcat的bin目录

echo '>>>>杀死原有进程 开始>>>>'
#sh shutdown.sh
pid=`ps -ef | grep opt/app-test | grep -v grep | awk '{print $2}'`
echo “旧应用进程id$pidif [ -n "$pid" ]
then
kill -9 $pid
fi
echo '>>>>杀死原有进程 结束>>>>'

sleep 2s
sh startup.sh #

echo '>>>>启动tomcat服务完毕>>>>'

vue项目


#构建命令1  tomcat
npm -v
rm -rf package-lock.json  projectName projectName.tar.gz
npm install  
unzip -o src/node_modules_update/jenkins_sync_folder/element-ui/lib.zip -d ./node_modules/element-ui/
npm run build-dev
tar -zcvf projectName.tar.gz ./dist


#构建命令2 tomcat 覆盖源码
npm -v
rm -rf package-lock.json  projectName projectName.tar.gz
npm install  
#新增 修改开源项目源码覆盖 
unzip -o src/node_modules_update/jenkins_sync_folder/element-ui/lib.zip -d ./node_modules/element-ui/
npm run build-dev
tar -zcvf projectName.tar.gz ./dist

#构建命令3 添加类型 nginx
#在配置 :参数化构建过程-> 字符串参数 ->名称 buildType,默认值dev
npm -v
rm -rf package-lock.json dev.tar.gz
cnpm install
cnpm run build-$buildType
tar -zcvf dev.tar.gz ./dist


构建后命令1 tomcat
cd /apache-tomcat/webapps/
rm -rf projectName
tar -zxvf projectName.tar.gz
# 备份压缩包
mv projectName.tar.gz ../backup/prod`date "+%Y-%m-%d-%H:%M:%S"`.tar.gz
mv dist projectName
# 删除最近30天以外的数据
find  /apache-tomcat-8.5.45/backup -mtime +30 -name "*.tar.gz"  -exec rm -rf {} \;


构建后命令2 nginx 
cd /usr/local/nginx/html/projectName/index/
rm -rf dev
tar -zxvf dev.tar.gz
mv dist dev
chmod -R  777 dev


构建后命令2 nginx  带参数
folderName=$buildType
echo '当前部署文件夹是:'$folderName

cd /usr/local/nginx/html/projectName/index/
rm -rf $folderName
tar -zxvf dev.tar.gz
mv dist $folderName
chmod -R  777 $folderName

node项目

cd /usr/local/nginx/html/xxx/
cd projectName
npm run stop
cd ..
rm -rf projectName
tar -zxvf projectName.tar.gz 
mv dev_projectName projectName
chmod -R  777 projectName
cd projectName
npm run start
#npm run pm2-start
#ps ax | grep node