shell的运用 : jenkins 编译 打包前端发布 生产(tomcat)

生产隔离做得非常....。文件上传只能通过固定ip机器的sftp账户上传,账户密码每个月要写申请才能获得。
登陆生产服务只能通过浏览器登陆!!!
发布一次生产,很痛苦。
做了简单的shell来减轻痛苦。
思路:
Jenkins--->编译打包--->shell脚本上传到sftp时带上项目名称和时间戳--->浏览器上登陆到生产服务器--->执行shell脚本发布。
第一步,配置Jenkins


两个关键脚本:
sh /data/jenkins_home/sftp_mput.sh ${SFTP_NAME} dist.tar.gz


Jenkins编译打包后看控制台输出,根据提示进行发布:

登陆到服务器

按照Jenkins提示执行命令既可以发布生产了。
第二个脚本:saas_web.sh
#/bin/sh
SFTP_NAMR="$1"
FILE="dist.tar.gz"
TOMCAT_DIR="/apache-tomcat-8.5.34-saas"
BACKUP_DIR=/web-bak/${SFTP_NAMR}
#
${SFTP_NAMR##*Home-}获取项目名称,取Home-后面的字符串
WEB_DIR=${TOMCAT_DIR}/webapps/${SFTP_NAMR##*Home-}
if [ $# == ];then
echo "usage: sh saas_web.sh 项目名称"
exit
else
#停服务
source /etc/profile
sh ${TOMCAT_DIR}/bin/shutdown.sh
/usr/sbin/lsof -i: -t | xargs kill -
#备份
mkdir ${BACKUP_DIR}
mv ${WEB_DIR}/* ${BACKUP_DIR}
#进入工作目录
cd ${WEB_DIR}
#下载代码包
lftp -u 账户,密码 sftp://IP << EOF
cd ${SFTP_NAMR}/
mget ${FILE:-"*"}
bye
EOF
#解压包,前端代码打包,可能是包含目录,所以解压时需要进行判断
# awk 是获取解压后以/为分隔,第一列是否一样,若一样则n会等于1,1就判断其是有目录
n=`tar ztf dist.tar.gz |awk -F / '{a[$1]++} END{for(i in a){print i}} '|wc -l`
#若有目录,则解压后mv 目录/* ./;若没有目录则只需要直接解压
if [ "$n" -eq "1" ];then
filename=`tar ztf dist.tar.gz |awk -F / '{a[$1]++} END{for(i in a){print i}} '`
tar zxvf dist.tar.gz
mv $filename/* ./
else
tar zxvf dist.tar.gz
fi
#启动服务
sh ${TOMCAT_DIR}/bin/startup.sh
fi
shell的运用 : jenkins 编译 打包前端发布 生产(tomcat)的更多相关文章
- 使用Jenkins编译打包SpringCloud微服务中的个别目录
意义说明: 使用Jenkins从Gogs拉取SpringCloud微服务,拉取的是整个仓库的内容,分好多个模块文件夹,但是使用maven编译打包的话只编译打包指定的模块文件夹 Gogs Webhook ...
- iOS自动化探索(九)使用Jenkins自动化打包并发布iOS App
继前一篇: Mac环境下安装Jenkins Jenkins安装好后, 我们试着创建一个iOS自动打包并发布的任务 iOS App构建必须在MAC上面使用xcode进行,所以我们要安装下xcode集成插 ...
- Angular入门到精通系列教程(14)- Angular 编译打包 & Docker发布
目录 1. 概要 2. 编译打包 2.1. 基本打包命令 2.2. 打包部署到二级目录 3. Angular站点的发布 3.1. web服务器发布 3.2. 使用docker发布 4. 总结 环境: ...
- jenkins编译打包nodejs
第一步 安装nodejs插件 第二步 在全局配置管理里面添加 nodejs配置 第三步 新建任务,从git上面拉取代码 cd /opt/tomcat7/bin/workspace/confdev #进 ...
- 写了一个自动打包并发布到tomcat的脚本
#!/bin/sh #获取tomcat的PID tomcat_pid=` | awk '{print $1}'`#判断tomcat是否结束,未结束则kill掉 if [ -z $tomcat_pid ...
- iOS - 自动化编译打包(Jenkins)
从xcodebuild到shenzhen,再到Jenkins,完美演绎自动化操作. Features xcodebuild自动构建命令 简介 构建 生成ipa文件 利用 shenzhen 进行打包 J ...
- 使用jenkins一键打包发布vue项目
jenkins的安装 Jenkins是一款开源 CI&CD 软件,用于自动化各种任务,包括构建.测试和部署软件. Jenkins 支持各种运行方式,可通过系统包.Docker 或者通过一个独立 ...
- Ant自动编译打包&发布 android项目
Eclipse用起来虽然方便,但是编译打包android项目还是比较慢,尤其将应用打包发布到各个渠道时,用Eclipse手动打包各种渠道包就有点不切实际了,这时候我们用到Ant帮我们自动编译打包了. ...
- Andorid进阶7—— Ant自动编译打包&发布 android项目
http://www.cnblogs.com/tt_mc/p/3891546.html Eclipse用起来虽然方便,但是编译打包android项目还是比较慢,尤其将应用打包发布到各个渠道时,用Ecl ...
随机推荐
- thinkphp5框架之请求
又看到请求这一部分,个人认为这部分是算重要的一部分 单独记一篇笔记. 0x01 request请求对象 如果要获取当前的请求信息,可以使用\think\Request类,完全开发手册中也有提到,继承系 ...
- POST PUT 小解
POST 主要是用来提交数据让服务器进行处理的,PUT主要是请求数据的. POST 提交的数据放在HTTP正文里面,而PUTT提交的数据放在url里面.
- 算法问题实战策略 DICTIONARY
地址 https://algospot.com/judge/problem/read/DICTIONARY 解法 构造一个26字母的有向图 判断无回路后 就可以输出判断出来的字符序了 比较各个字母的先 ...
- Linux Centos7 基于Docker 搭建 Nexus私服搭建
创建Blob Stores[本地文件存储目录,统一管理] 1.设置名称和工作路径: ps[注意事项]: 1.storage name:自定义名称 2.storage path:存储路径,默认[/nex ...
- 百万年薪python之路 -- 小数据池和代码块
1.小数据池和代码块 # 小数据池 -- 缓存机制(驻留机制) # == 判断两边内容是否相等 # a = 10 # b = 10 # print(a == b) # is 是 # a = 10 # ...
- Spring使用AspectJ开发AOP:基于Annotation
基于 Annotation 的声明式 在 Spring 中,尽管使用 XML 配置文件可以实现 AOP 开发,但是如果所有的相关的配置都集中在配置文件中,势必会导致 XML 配置文件过于臃肿,从而给维 ...
- 从零开始把项目发布到NPM仓库中心
从零开始把项目发布到NPM仓库中心 前期准备 注册账号 https://www.npmjs.com/signup 网易邮箱注册失败,用QQ邮箱成功 使用npm 命令注册(建议使用网页): npm ad ...
- boostrap原理.html
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 让你的sql开启氮气加速
事情的过程是:公司有一个上百行的sql 运行在MySQL数据库,速度奇慢无比,逻辑乱七八糟,我就不贴出来了,经过这次修改想总结一下如何写一个不被人骂的sql. 说一些被人诟病的问题: 一.子查询 把你 ...
- 前后端对称加密(AES)
后端实现(JAVA) package com.vcgeek.hephaestus.demo; import org.apache.commons.codec.binary.Base64; import ...