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 ...
随机推荐
- 最简单的ArcGIS Engine应用程序(上)
名词: IWorkspaceFactory 工作空间工厂 ShapeFileWorksapceFactory 矢量文件工作空间工厂 IWorkspce 工作空间 IFeatrueWorkspace 要 ...
- idea 添加 注释 配置
为类添加自动注释模版 File-->Settings-->Editor-->File and Code Templates 启用该模板才有效一定要勾上 /** * @author : ...
- django模型中有外键关系的表删除相关设置
0904自我总结 django模型中有外键关系的表删除相关设置 一.一对一 例如有Author.AuthorDetail两表 author = models.OneToOneField(to='Aut ...
- drf源码save以及response
drf源码save以及response 一.save 其中蛮重要的一段 if self.instance is not None: self.instance = self.update(self.i ...
- php中代码执行&&命令执行函数
转自i春秋 1.eval()函数 #传入的参数必须为PHP代码,既需要以分号结尾. #命令執行:cmd=system(whoami); #菜刀连接密码:cmd <?php @eval($_POS ...
- windows离线安装sublime插件:ctags
网络上一堆安装ctags教程,可都是在线安装. 花了点时间摸索出了离线安装教程. 1. 准备好sublime 和 package control sublime我用的版本是text 2. text 3 ...
- Ubuntu16.04 安装apache+mysql+php(LAMP)
记录下ubuntu环境下安装apache+mysql+php(LAMP)环境. 0x01安装apache sudo apt-get update sudo apt-get install apache ...
- luogu P4035 [JSOI2008]球形空间产生器
[返回模拟退火略解] 题目描述 今有 n+1n+1n+1 个 nnn 维的点,它们都在一个球上.求它们所在球的球心. Solution 4035\text{Solution 4035}Solution ...
- [牛客网NOIP赛前集训营-普及组(第二场)]D-合法括号序列
链接:https://www.nowcoder.com/acm/contest/165/D来源:牛客网 合法括号序列 键盘上有左括号(,右括号),和退格键-,共三个键. 牛牛希望按键n次,使得输入的字 ...
- 富文本编辑器(wangEditor)
近期在产品的开发工作中遇到要使用富文本编辑器的地方.于是对比了几款编辑器, 最后选择了wangEditor. 优点:轻量.简洁.界面美观.文档齐全. 缺点: 相较于百度ueditor等编辑器功能较 ...