70 lines
2.2 KiB
YAML
70 lines
2.2 KiB
YAML
name: 部署到服务器
|
||
|
||
on:
|
||
push:
|
||
branches: [main, master]
|
||
workflow_dispatch:
|
||
|
||
env:
|
||
TARGET_DIR: /home/quant/data/dev/checkin
|
||
|
||
jobs:
|
||
deploy:
|
||
runs-on: ubuntu
|
||
|
||
steps:
|
||
- name: 安装 sshpass
|
||
run: |
|
||
sudo apt-get update
|
||
sudo apt-get install -y sshpass
|
||
|
||
- name: 在服务器上部署
|
||
env:
|
||
SERVER_HOST: ${{ secrets.SERVER_HOST }}
|
||
SERVER_USER: ${{ secrets.SERVER_USER }}
|
||
SERVER_PASSWORD: ${{ secrets.SERVER_PASSWORD }}
|
||
SERVER_PORT: ${{ secrets.SERVER_PORT }}
|
||
TARGET_DIR: ${{ env.TARGET_DIR }}
|
||
run: |
|
||
sshpass -p "$SERVER_PASSWORD" ssh -p "$SERVER_PORT" -o StrictHostKeyChecking=no "${SERVER_USER}@${SERVER_HOST}" << 'EOF'
|
||
set -e
|
||
|
||
run_sudo() {
|
||
echo "$SERVER_PASSWORD" | sudo -S -p '' "$@"
|
||
}
|
||
|
||
echo "===== 切换到目标目录: $TARGET_DIR ====="
|
||
cd $TARGET_DIR || {
|
||
echo "错误:目录 $TARGET_DIR 不存在!"
|
||
exit 1
|
||
}
|
||
|
||
echo -e "\n===== 停止并清理 Docker ====="
|
||
run_sudo docker compose down || true
|
||
|
||
echo -e "\n===== 拉取 Git 代码 ====="
|
||
if ! git pull; then
|
||
echo "警告:Git pull 失败,尝试强制同步远程代码..."
|
||
git fetch --all
|
||
CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD)
|
||
git reset --hard origin/$CURRENT_BRANCH
|
||
git pull
|
||
fi
|
||
|
||
echo -e "\n===== 配置环境变量 ====="
|
||
cat > backend/.env <<'ENVEOF'
|
||
ALIYUN_ACCESS_KEY_ID=${{ secrets.ALIYUN_ACCESS_KEY_ID }}
|
||
ALIYUN_ACCESS_KEY_SECRET=${{ secrets.ALIYUN_ACCESS_KEY_SECRET }}
|
||
ALIYUN_OSS_ENDPOINT=https://oss-cn-shanghai.aliyuncs.com
|
||
ALIYUN_OSS_BUCKET_NAME=tangledup-ai-staging
|
||
ALIYUN_OSS_INTERNAL_ENDPOINT=https://oss-cn-shanghai-internal.aliyuncs.com
|
||
ALIYUN_TINGWU_APP_KEY=${{ secrets.ALIYUN_TINGWU_APP_KEY }}
|
||
DASHSCOPE_API_KEY=${{ secrets.DASHSCOPE_API_KEY }}
|
||
ENVEOF
|
||
|
||
echo -e "\n===== 启动 Docker 容器 ====="
|
||
run_sudo docker compose up -d --build
|
||
|
||
echo -e "\n===== 操作完成!====="
|
||
EOF
|