CentOS7 2.新项目上线脚本

我司一个客户项目对应代码仓库的一个分支,每次新项目上线总是要从master复制一个分支,接着git clone到本地,在IDEA里面替换配置文件内容,上传到代码仓库,启动项目,配置nginx.conf,每次新项目上线耗时约30-60min。鉴于本人超级懒,不喜欢重复动作,只喜欢摸鱼,于是琢磨出了一套新项目上线脚本,每次脚本执行耗时约5-10min。

new_project_install.sh

echo "新建文件夹/opt/app/code"
mkdir -p /opt/app/codeecho "进入/opt/app/code"
cd /opt/app/code#将git用户名、密码、仓库地址替换成自己的
echo "git拉取代码"
git clone https://username:password@gitee.com/xxx/xxx.gitecho "进入项目文件夹"
cd xxx#必须是不存在的分支
echo "切换到新的分支"
git checkout -b $1echo "推送新的分支代码到远端仓库"
git push origin $1echo "拉取远端仓库新的分支代码"
git pull origin $1echo "将远端仓库分支与本地仓库分支关联"
git branch --set-upstream-to=origin/$1echo "再次拉取远端仓库新的分支代码,验证分支是否关联上"
git pull origin $1echo "pom.xml 替换"
find -name "pom.xml" | xargs perl -pi -e "s|demo|$1|g"echo "application.yml 替换"
find /opt/app/code/xxx/src/main/resources/ -name "application.yml" | xargs perl -pi -e "s|8081|$3|g"# find 路径 -name "文件名" | xargs perl -pi -e "s|被替换的字符串|替换后的字符串|g"
# ./ 相对位置
echo "application-druid.yml 替换"
find /opt/app/code/xxx/src/main/resources/ -name "application-druid.yml" | xargs perl -pi -e "s|localhost|$2|g"
find /opt/app/code/xxx/src/main/resources/ -name "application-druid.yml" | xargs perl -pi -e "s|demo|$1|g"echo "maven打包"
mvn clean install#cp前添加反斜线,可以直接覆盖同名文件,不会出现"cp: overwrite `xxx` ?"提示
echo "复制jar"
\cp /opt/app/code/xxx/target/$1.jar /opt/appecho "启动jar"
nohup java -jar /opt/app/$1.jar >/dev/null 2>&1 &echo "将所有项目文件放入缓存中"
git add .#将git电子邮箱、用户名替换成自己的
echo "提交代码到本地仓库"
git config user.email "xxx@qq.com"
git config user.name "username"
git commit -m "打包$4"echo "拉取远端仓库代码"
git pull origin $1echo "推送代码到远程仓库"
git push origin $1echo "删除clone的代码"
rm -rf /opt/app/code/xxx#xxx.cn 替换成自己的域名
#$指最后一行,i是指在读取文件此行前增加(include)记录,即倒数第二行添加内容
echo "添加nginx配置"
sed -i '$i server {'                                    /usr/local/nginx/conf/nginx.conf
sed -i '$i    listen       80;'                         /usr/local/nginx/conf/nginx.conf
sed -i '$i    server_name  '$1'.xxx.cn;'                /usr/local/nginx/conf/nginx.conf
sed -i '$i    location / {'                             /usr/local/nginx/conf/nginx.conf
sed -i '$i      proxy_pass http://127.0.0.1:'$3'/;'     /usr/local/nginx/conf/nginx.conf
sed -i '$i      proxy_connect_timeout 600;'             /usr/local/nginx/conf/nginx.conf
sed -i '$i      proxy_read_timeout 600;'                /usr/local/nginx/conf/nginx.conf
sed -i '$i    }'                                        /usr/local/nginx/conf/nginx.conf

给脚本赋予执行权限

chmod +x new_project_install.sh

$1-分支名、数据库名(如test)
$2-ip(如192.168.0.2)
$3-port(如某客户)
$4-git commit信息(如某客户)

./new_project_install.sh test 192.168.0.2 8088 某客户

查看 /usr/local/nginx/conf/nginx.conf 配置是否正常

/usr/local/nginx/sbin/nginx -s reload

原来苦逼的上线项目,变成两行脚本,小伙伴有没有觉得偷懒的感觉很爽。如有任何问题,欢迎留言,让我们一起愉快的摸鱼吧!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/413638.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

工作312:uni-时间戳处理

第一步 <u-form-item label"结束时间" prop"endDate" label-width"200"><u-input type"select" v-model"form.endDate" placeholder"请选择" click"end_time_show true"></u-input>…

informix如何查询第一条记录

1.select first 1 * from shop;    正序查询第一条数据 2.select first 1 * from shop order by create_time desc;    按创建时间倒序查询第一条数据 3.select first 1 shopid from shop;    正序查询第一条数据中的shopid字段 4.select first 1 shopid from shop…

工作314:uni-提交成功加入表单验证

增加验证规则 <u-form :model"form" :rules"rules" ref"uForm" :errorType"errorType"><navigator url"../LevineHua-editor/LevineHua-editor" class"single"><u-form-item label"荣誉照片&…

HDOJ 1233 (克鲁斯卡尔+并查集)

还是畅通工程 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 58011 Accepted Submission(s): 26354 Problem Description 某省调查乡村交通状况&#xff0c;得到的统计表中列出了任意两村庄间的距离。省政府“…

mysql8优化实战

最近上线了一个10万户的管理系统&#xff0c;以前的客户没有这么多用户量&#xff0c;隐藏在代码中的慢sql渐渐显现出来了。 下面是我最近一周慢sql优化的总结&#xff1a; 多表sql优化、count sql优化、超过10 0000条limit优化一、多表sql优化 二、count sql优化 该表有21350…

工作315:uni-修改添加时间的逻辑

第一步 <u-form-item label"开始日期" prop"startTime" label-width"150"><u-input type"select" :select-open"start_time_show" v-model"form.startTime" placeholder"请选择" click"…

javaScript高程笔记--最佳实践

1.可维护性 《1》什么是可维护的代码 (1)可理解性 (2)直观性 (3)可适应性 (4)可扩展性 (5)可调试性 《2》代码约定 (1)可读性---适当的进行注释【函数和方法、大段代码、复杂的算法、Hack浏览器差异性】 (2)变量和函数名--语义化 (3)变量类型透明---一眼看出来是什么类型的数据…

工作316:uni-修改其他页面的时间逻辑

<u-form-item label"内容" prop"container" label-width"140"><input placeholder"请输入内容" v-model"form.content" type"texarea" /></u-form-item>定义富文本输入跳转有数值 form: {cont…

工作317:uni-修改其他页面整体样式

<template><view class"wrap"><u-form :model"form" :rules"rules" ref"uForm" :errorType"errorType"><u-form-item label"标题" class"label-left" style"margin-left:30r…

犯犯错

1.忘记初始化&#xff0c;程序卡卡卡 2.忘记加多组输入输出 3.Tarjan处理的时候总是把根节点忘掉 4.主函数用数组从0开始&#xff0c;函数中从1开始用&#xff0c;导致凉凉 5.hdu返回TLE的时候记得考虑越界问题 6.memset可能被卡&#xff0c;T的时候想一想&#xff01; 转载于:…

工作318:uni-切换tabber修改状态修饰

onLoad() {/* 调用市场信息的接口 分别 vuex获取 其他三项 */this.$u.api.getTreasureList({marketId: this.vuex_user.market_id,pageNo: 1,pageSize: 20,type:this.current1,releaseBureau:this.releaseBureau,name:this.name}).then(res > {if (res.data.code 200) {thi…

python--循环列表中字典元素

1. 目的&#xff1a; > 实现列表中字典kay - value的遍历 代码&#xff1a; 循环列表中字典元素info_list [{name:zhao,age:22,hight:171},{name:qian,age:23,hight:165},{name:sun,age:24,hight:148},{name:li,age:25,hight:166} ]# 第一种方式 index 0 while index <…

工作320:uni-预加载问题

<u-loadmore :status"status" />onReachBottom() {console.log(触底~~~~)if (this.pageNo > this.pages){this.status nomore;return;} this.status loading;this.pageNo this.pageNo;setTimeout(() > {this.getData()if (this.pageNo > this.page…

js的基本包装类型

基本包装类型(包装对象)&#xff1a; 先看下以下代码&#xff1a; var s1 "helloworld"; var s2 s1.substr(4); 上面我们说到字符串是基本数据类型&#xff0c;不应该有方法&#xff0c;那为什么这里s1可以调用substr()呢&#xff1f; 通过翻阅js权威指南第3.6章节…

字节跳动小程序支付接入

字节跳动小程序支付接入躺过的坑流程签名支付宝配置问题java福利躺过的坑 流程 小程序申请流程业务调用流程 签名 请求字节跳动接口的签名请求预下单返回验签 支付宝配置问题 流程 小程序申请流程 字节跳动小程序开通申请有个渠道秘钥类型选择RSA2和RSA&#xff0c;不管你选择…

工作322:uni-扩展运算符实现拼接合并操作

}).then(res>{if (res.data.code 200) {/* 进行合并操作 */this.tableData [...this.tableData, ...res.data.data.records]this.pages res.data.data.pagesconsole.log(1)console.log(res)}})

深入浅出JVM-内存模型

JVM内存模型总图程序计数寄存器Java虚拟机栈(JVM Stack)定义特点本地方法栈(Native Method Stack)Java堆(Java Heap)定义特点方法区定义特性可能抛出的异常直接内存(Direct Memory)Metaspace (元空间)元空间特色GC元空间内存分配模型从GC角度看Java堆JVM关闭总图 程序计数寄存器…

HDU 4487 Maximum Random Walk

Maximum Random Walk Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 756 Accepted Submission(s): 419 三维dp&#xff0c;一维的话根本没有办法开展&#xff0c;二维的话没办法保存当前位置或者最远位置&…

工作323:uni-获取时间参数

let date new Date();let dateYear date.getFullYear(); //获取年 let dateMonth date.getMonth(); //获取月 let dateDate date.getDate(); //获取当日let dateDay date.getDay(); //获取当日星期数let da…

深入浅出JVM-GC过程

深入浅出JVM-GC过程Minor GC对象进入老年代的4种情况Full GC空间分配担保Minor GC Minor GC过程 假设现在Heap内存大小为20M&#xff0c;其中年轻代为10M&#xff0c;老年代为10M&#xff0c;年轻代中Eden区6M&#xff0c;From区2M&#xff0c;To区2M&#xff0c;新创建的对象…