.sh脚本一键部署
打游戏用过一键无敌
正好这几天熟悉新项目
我就把之前的./push.sh迁移了过来
顺便
写了个自动化构建并提交到服务器的.sh脚本
一、背景
先是一个git的提交脚本
因为每次提交git都需要输入这几个命令
1
2
3
4git pull
git add .
git commit -m 'xxx'
git push origin xxx
觉得重复性好高
应该可以用自动化的方法改进一下这个流程
所以我就参照网上的方法
写了一个自己的提交脚本
以后只用在目录下运行 ./push.sh
就可以自动化提交git了
很方便
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15#!/bin/sh
echo "正在拉取文件..."
git pull
echo "正在添加文件..."
git add .
echo -n "正在提交备注...,请填写备注(可空)"
read remarks
if [ ! -n "$remarks" ];then
remarks="常规提交"
fi
git commit -m "$remarks"
echo "正在开始提交代码..."
git push origin dark_theme
echo "代码提交成功,正在关闭..."
使用方法是
将这段代码保存到你项目目录下的push.sh中
没有的话新建一个
然后运行 chmod 755 push.sh
然后你每次需要提交git就只需要输入./push.sh
(或者在package.json中添加”push”: “./push.sh”,每次npm push即可)
它就可以帮你自动提交了
二、新项目
新项目的测试环境上线方式是
1、前端把包打出来
2、登陆服务器
3、用最新包替换掉服务器上的文件夹
我在熟悉了这一流程后觉得
一样是可以用shell来写一个自动化脚本来简化这一操作的
所以我就查阅了一些资料
主要是了解如何用shell解决登陆服务器需要手动输入密码的问题
最后才用了两个脚本
一个是#!/bin/sh
一个是#!/usr/bin/expect
前一个用来打包
后一个用来复制到服务区
三、代码
./ssh.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16#!/bin/sh
rm -rf h5
rm -rf dist
npm run build
if [ -d "dist" ]; then
echo "将dist重命名为h5..."
mv dist h5
echo "重命名已完成"
fi
./expect.sh
rm -rf h5
./expect.sh
1
2
3
4
5
6#!/usr/bin/expect
spawn scp -r ./h5/ root@ip地址
expect "*password*"
send "密码\r"
interact
使用方法和之前一样
首先给这两个shell脚本放到项目根目录下并赋予权限
执行chmod 755 ssh.sh expect.sh
然后在每次需要打包到测试环境的时候
只需要执行
./ssh.sh 即可
四、思考
在经过尝试用一个shell文件失败后
我改用了两个shell文件来执行这段命令
但是这样并不优雅
所以
还应该继续探索
看看有没有更方便更优雅的shell编写方式
参考链接: