2b1b105caa
ci/woodpecker/push/woodpecker Pipeline failed
根本原因: Woodpecker CI在处理包含双引号的YAML字符串时存在引号处理问题, 导致shell接收到格式错误的命令,出现'unterminated quoted string'错误。 解决方案: 1. 创建scripts/sync-to-production.sh脚本封装所有rsync操作 2. 在.woodpecker.yml中调用脚本而非直接写复杂命令 3. 简化ssh命令中的条件判断语法 优势: - 避免YAML引号嵌套问题 - 脚本更易维护和调试 - 清晰的部署流程分离
35 lines
1.1 KiB
Bash
Executable File
35 lines
1.1 KiB
Bash
Executable File
#!/bin/bash
|
|
set -e
|
|
|
|
SERVER="root@139.155.109.62"
|
|
DEPLOY_PATH="/home/novalon/docker-app/novalon-website"
|
|
SSH_OPTS="-o StrictHostKeyChecking=no"
|
|
|
|
echo "=== 同步构建产物到生产服务器 ==="
|
|
|
|
echo "1. 同步dist目录..."
|
|
rsync -avz --delete -e "ssh $SSH_OPTS" dist/ ${SERVER}:${DEPLOY_PATH}/dist/
|
|
|
|
echo "2. 同步public目录..."
|
|
rsync -avz -e "ssh $SSH_OPTS" public/ ${SERVER}:${DEPLOY_PATH}/public/
|
|
|
|
echo "3. 同步package文件..."
|
|
rsync -avz -e "ssh $SSH_OPTS" package.json package-lock.json ${SERVER}:${DEPLOY_PATH}/
|
|
|
|
echo "4. 同步Docker配置..."
|
|
rsync -avz -e "ssh $SSH_OPTS" Dockerfile.prod docker-compose.server.yml ${SERVER}:${DEPLOY_PATH}/
|
|
|
|
echo "5. 同步部署脚本..."
|
|
rsync -avz -e "ssh $SSH_OPTS" scripts/deploy-production.sh ${SERVER}:${DEPLOY_PATH}/scripts/
|
|
|
|
echo "6. 同步环境配置(如果存在)..."
|
|
if [ -f .env.production ]; then
|
|
rsync -avz -e "ssh $SSH_OPTS" .env.production ${SERVER}:${DEPLOY_PATH}/
|
|
echo "✅ .env.production已同步"
|
|
else
|
|
echo "⚠️ 没有.env.production文件"
|
|
fi
|
|
|
|
echo ""
|
|
echo "✅ 所有构建产物已成功同步到生产服务器"
|