前言
众所周知前端是一个不善言辞并不会使用cmd的的一类人,开个玩笑!!!
前端项目发布流程
- 开发新功能啦 -> 切新分支
git ck -b newBranch
- 开发完成后 -> 提交代码
git add .
git commit -m 'msg'
- 合并到内外侧分支 -> 合并到
Rel
内外侧分支git marge rel
- 就拿
Vue
React
项目来说,发布内外侧之前我们还需要将之前生产的代码给删除,不然体积会越来越大rm -rf /linux目录路径~当前项目/*
- 发布内外侧(还有个预发布),
build - FileZilla | ZOC7 - 上传
不管你是拖拽,还是linux命令都可以,开心就好嘛
上面就是发布一个新功能的流程,可想而知,你让我一天做一次还能接受,要是隔几分钟来一次谁受得了?当然现实就是这样的操作隔几分钟就会来一次!!!
并且同时改几个项目也是存在的,所以,这种操作要把人整神…
说个故事
有一天我开发了一个功能,按照上面流程把代码发布到了内外侧,这时候测试姐姐测试了,发现我把登录写成登陆了,通知到我,你有一个超级严重的bug,需要现在改,改好就传,我收到这条指令,菊花不由得一紧,我当机立断切换分支,改起我的代码来,时间一分一秒过去,在一分钟的时间内我就改完bug,毕竟拧螺丝非常简单。
该上传代码了,上传操作用了我10分钟,在测试姐姐看来,我修改这个代码用了11分钟,测试姐姐心里肯定就在想这个菜逼,改个字要这么久?我等着这么烦,后面给他打分往低了打,哼~~,让某某前端崽儿拿不到奖金。
我也很无奈啊!!!
Shell 之 奖金收割者
由于经常被测试姐姐们打分很低,导致没有奖金可拿,导致我没办法去付我的房租,还我的花呗,请我喜欢的小姐姐吃大餐,最后导致我喜欢的小姐姐和我最讨厌的后端程序猿跑一起去了,我顿时心生恨意,我决定报复他,😁。
在星期五的下午,我通过企业微信给后端发了个消息,通知他下午决斗。
大战一触即发
后端 | 技能 | 结果 | 技能 | 前端 |
---|---|---|---|---|
他上来丢使出了一记绝杀😏 | Java大法 | 打平 | Javascript(飞龙)在天 | 他居然一上来就丢绝杀😤 看来他不想与我浪费时间 😉 但是我也不是好惹的 我也使出了我的大招 |
这人还有两下子喃 那就别逼我了,看招 |
Spring初现 SpringBoot普照 |
都负伤 | 左拿Angular有悔 右提Vue取水 头顶React摆尾 |
他居然一秒打出了两招,我措不及防 还来不及思考就被打伤在地 说时迟那时快 只见他一跃而起,在天空中写下了 mvC…, 没等他耍完招式 我知道这招下来我必死无疑,我来不及多想 没办法了,我必须这样做了… |
话不投机半句多,来吧 | 微服务 容器 消息队列 分布式缓存 多线程并发 网络 中间件 |
皆元气大伤 | Webpack 兼容 Koa 性能优化 Less/Sass ES6789 TS 网络协议 可视化 |
去吧,皮卡丘 |
没说话,只见他拿出了一本秘籍 | 五字风水阴阳秘术(Shell) | 平手 | 空手接Shell | 沉默不语,我知道我再也无力对抗 可是当他拿出此秘籍,我发现居然能为我所用 我用尽全身力气使出了我表哥教我的吸功大法 |
前端是不会用命令行的页面仔,就一句话 | 此时无招胜有招 | 前端最后被命令行给干了 | 底气不足 | 我尼玛,我tm会 npm run serve |
其实有很多后端在用的东西,前端都能拿来减少自己平时开发的重复工作,Shell就是其中一种。
关于Shell知识的话,很多教程啦,去学习吧,我把我的脚本拿出来和大家交流交流。
我的自动化脚本
#!/bin/bash
set -e
if [ "$1"x != "devx" ] && [ "$1"x != "testx" ] && [ "$1"x != "prex" ];then
echo -e "\033[41;37m 不存在 $1 环境 只有 -> dev(内测) test(外侧) pre(预发布) \033[0m"
exit
fi
function devFn() {
ssh root@ip rm -rf 服务器项目路径/*
echo -e "\033[32m 连接成功,上传代码中... \033[0m"
rsync -e "ssh -p 端口" --exclude=storage -a 本地代码路径/dist/* root@ip:服务器项目路径/
echo -e "\033[32m 内测 上传成功 \033[0m\n"
}
function testFn() {
ssh -p 端口 root@ip rm -rf 服务器项目路径/*
echo -e "\033[32m 连接成功,上传代码中... \033[0m"
rsync -e "ssh -p 端口" --exclude=storage -a 本地代码路径/dist/* root@ip:服务器项目路径/
echo -e "\033[32m 外侧上传成功 \033[0m\n"
}
function preFn() {
echo "执行链接预发布服务器"
}
function build() {
cd source
npm run build:$1
echo -e "\033[32m 打包完毕 \033[0m"
echo -e "\033[32m 连接 $1 服务器 \033[0m"
if [ "$1"x == "devx" ];then
devFn
elif [ "$1"x == "testx" ];then
testFn
elif [ "$1"x == "prex" ];then
preFn
else
echo -e "\033[41;37m 应该不会走到这里来吧... \033[0m"
exit
fi
}
#获取当前分支
branch=$(git symbolic-ref --short HEAD)
#判断是否是rel分支
if [ ${branch} == "rel" ];then
echo -e "\n\033[32m 当前在rel分支\n 不出意外应该刚发布过内测\n 所以无需执行git操作\n 所以是否直接发布 $1 环境\033[0m"
read -p $'\n\033[31m是否直接打包上传?y or n: \033[0m' isbuild
if [ "$isbuild" != 'y' ];then
exit
fi
build $1
else
#此sh脚本只适用于单子发布rel环境,提醒
echo -e "\n\033[31m dev(内测) test(外侧) pre(预发布) \033[0m"
echo -e "\033[31m 当前需要发布 $1 环境 \033[0m"
#询问是否继续发布当前环境
read -p $'\n\033[31m是否继续操作?y or n: \033[0m' isVersion
if [ "$isVersion" != 'y' ];then
exit
fi
echo -e "\n\033[32m 已确认环境 \033[0m\n"
echo -e "\033[31m $1 环境,当前分支为: ${branch} \033[0m"
#确认当前分支,是否继续
read -p $'\n\033[31m请确认分支,是否继续操作?y or n: \033[0m' isContinue
if [ "$isContinue" != 'y' ];then
exit
fi
echo -e "\n\033[32m 已确认分支,分支为 -> ${branch} \033[0m\n"
echo -e "\033[32m 开始提交 ${branch} 分支代码,执行 add commit \033[0m\n"
git add .
read -p $'\n\033[31m请输入本次commit信息:\033[0m' commitInfo
git commit -m ${commitInfo}
echo -e "\033[32m 开始切换分支 \033[0m\n"
git checkout rel
echo -e "\033[32m 开始拉取 rel origin \033[0m\n"
git pull origin rel
echo -e "\033[32m 开始 merge 修改至 rel \033[0m\n"
git merge ${branch}
#判断merge是否成功
if [ $? == 0 ];then
echo -e "\033[32m merge ${branch} -> rel 成功 \033[0m\n"
echo -e "\n\033[32m 开始推送 rel 至远端 origin \033[0m\n"
git push origin rel
echo -e "\n\033[32m 推送 rel 至远端 origin 成功 \033[0m\n"
echo -e "\n\033[32m 执行打包 \033[0m\n"
build $1
else
echo -e "\033[31m merge失败,请检查 \033[0m"
exit
fi
fi
这样测试姐姐就不会说你慢啦,这也太快了吧!!!
是啊,太快了,测试姐姐也会不开心,这也太难了吧。。。
今天的文章前端自动化部署之Shell分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/20924.html