在服务器shell git 无交互 clone code 一键打包

205 阅读1分钟

导语

经常开发完毕demo版本,需要部署服务器端,进行demo展示。之前是服务器端走Jenkins流程打包,可是构建速度慢,搁置了。从入职到现在,一直都是本地打包,心里不是滋味。加上本地电脑space 剩余不足,经常需要重启,太耽误时间了。狠下下来,一口气改用shell + git 在服务器端构建,然后一键部署,后面会整合可视化、及时通知。

本文,介绍shell + git linux构建如果要点,具体环境的准备需要自己搜索下。

流程

  • 登录到服务器
  • shell输入用户、构建分支、需要部署在哪个环境
  • git clone根据用户access_token,分支,git clone对应code
  • code clone完毕,根据环境配置,替换掉里面的环境配置
  • 最后调用项目构建打包脚本,进行打包、部署

正文

git

git 之前需要配置ssh key才能pull code, 目前推荐使用person_access token

image.png

如何shell中无交互clone

常用的如下:

# 输入如下,会交互输入username,password
git clone https://github.com/xxx/webpack-demo.git
git clone git@github.com:xxx/webpack-demo.git

无交互(要求使用https协议)如下:

git clone https://username:accesstoken@github.com/xxx/webpack-demo.git

注意:

创建access_token, 勾选read权限,即可,不用勾选write、delete。

shell

if/fi

if 条件判断

if [ $? != 0 ] ; then 
    echo "error...."
fi

$1,$2

初始化设置,按照位置获取传入的参数

> ./build.sh test demo-branch 

# test 赋值给username, demo-branch赋值给branch,默认值在后面
username=${1:-'como'}
branch=${2:-'demo'}

-z

空字符判断

if [ -z name ] ; then 
 echo ""
fi

数值加

let

let step = $step + 1;

字符替换

sed , @作为分隔符,把url.config.ts 中 prod.example.com 替换为demo.example.com

sed -i 's@prod.exmaple.com@demo.example.com@g' url.config.ts