常用shell脚本

  • 上传本地文件到测试服

#!/usr/bin/env sh
# 上传文件到测试服
THIS_PATH=$(pwd)
WORK_PATH=/home/jcleng/work/mywork/zhongjian-liquor-storage-pc/test/

cd $WORK_PATH
# scp -r /home/jcleng/work/mywork/zhongjian-liquor-storage-pc/test/* [email protected]:/www/wwwroot/testweb.ccicwuwei.com
rm -rf testweb.tar
tar cf testweb.tar ./*
scp -r testweb.tar [email protected]:/www/wwwroot/testweb.ccicwuwei.com/
ssh [email protected] "cd /www/wwwroot/testweb.ccicwuwei.com && tar xvf ./testweb.tar"
cd $THIS_PATH
  • 执行docker命令

docker exec -it mywork-node1618-1 bash -c 'cd /srv/zhongjian-liquor-storage-pc && npm run dev'


#!/usr/bin/env sh
docker exec -it mywork-phptest-1 bash -c 'cd /srv/zhongjian-liquor-servicer/ && rm -rf ./runtime/* && php ./bin/hyperf.php server:watch'
  • 执行docker命令构建

#!/usr/bin/env sh
# 测试服
FULL_PATH="$(readlink -f "$0")"
SCRIPT_DIR="$(dirname "$FULL_PATH")"
filep=$SCRIPT_DIR/../.env.production

cat <<EOF > $filep
# .env.production
VITE_APP_ENV=production

VITE_APP_BASE_URL=https://test.test.com
VITE_APP_WS_URL=ws://127.0.0.1:9502/message.io
VITE_APP_PROXY_PREFIX=/prod
VITE_APP_HISTORY_URL=true

EOF

docker exec -it mywork-node18-1 bash -c 'cd /srv/webdir/ && npm run build'

# 打压缩包
WORK_PATH=$SCRIPT_DIR/../dist/
FILE_TAR=/home/jcleng/下载/001/tarfile.tar
cd $WORK_PATH
tar cf $FILE_TAR ./*
chmod 777 $FILE_TAR

使用docker-compose.yml搭建测试环境, 可以设置deployresources限制cpu的使用

  node18min:
    image: registry.cn-hangzhou.aliyuncs.com/jcleng/library-node:18
    network_mode: host
    command: sh
    tty: true
    volumes:
      - "./:/srv"
    deploy:
      resources:
        limits:
          cpus: '0.5'    # 限制最多使用 0.5 个 CPU 核心
          memory: 1024M  # 最多 1024M
        reservations:
          cpus: '0.25'  # 保证至少 0.25 个 CPU 核心
  • 使用内网构建项目并下载构建后的文件到本地

#!/usr/bin/env sh
# ! 上传项目的内网服务器进行构建打包,并下载到本地目录

# * 支撑平台
WORK_PATH=/home/jcleng/work/mywork/蓝鲸出海-支撑前端
REMOTE_SOURCE_PATH=/tmp/work/test_file

RELEASE_PATH=$REMOTE_SOURCE_PATH/dist
RELEASE_LOCAL_PATH=$WORK_PATH/dist

DOCKER_CONTAINER=mywork-node18
NPM_COMMAND="npm run build"

# * 服务商端
# WORK_PATH=/home/jcleng/work/mywork/蓝鲸出海-服务商
# REMOTE_SOURCE_PATH=/tmp/work/fws_source

# RELEASE_PATH=$REMOTE_SOURCE_PATH/test
# RELEASE_LOCAL_PATH=$WORK_PATH/test

# DOCKER_CONTAINER=mywork-node1618
# NPM_COMMAND="npm run test"


# ! 上传项目文件
cd $WORK_PATH
sudo ls
rm -rf ../test_file.tar
tar cf ../test_file.tar .

ssh [email protected] "mkdir -p $REMOTE_SOURCE_PATH && rm -rf $REMOTE_SOURCE_PATH/**"
scp -r ../test_file.tar [email protected]:$REMOTE_SOURCE_PATH
rm -rf ../test_file.tar

ssh [email protected] "cd $REMOTE_SOURCE_PATH && tar xvf ./test_file.tar && rm -rf ./test_file.tar"

# ! 远程开始打包
# * 初始化运行容器 docker run -itd -v /tmp/work/:/tmp/work/ --name mywork-node18 registry.cn-hangzhou.aliyuncs.com/jcleng/library-node:18 sh
# * 初始化运行容器 docker run -itd -v /tmp/work/:/tmp/work/ --name mywork-node1618 registry.cn-hangzhou.aliyuncs.com/jcleng/library-node:16.18 sh
ssh -t [email protected] "docker start $DOCKER_CONTAINER && docker exec -it $DOCKER_CONTAINER bash -c 'cd $REMOTE_SOURCE_PATH && $NPM_COMMAND'"

# ! 压缩文件, 并下载到本地
ssh [email protected] "cd $RELEASE_PATH && tar cf ../build_testweb.tar ."

sudo rm -rf $RELEASE_LOCAL_PATH/*
scp [email protected]:$REMOTE_SOURCE_PATH/build_testweb.tar /tmp/
sudo mv /tmp/build_testweb.tar $RELEASE_LOCAL_PATH
cd $RELEASE_LOCAL_PATH && sudo tar xf build_testweb.tar && sudo rm -rf build_testweb.tar

echo "✅已经打包到 $RELEASE_LOCAL_PATH 目录, 可以运行上传! ./.vscode/uploadtest.sh "