根本原因: Woodpecker CI在处理包含双引号的YAML字符串时存在引号处理问题, 导致shell接收到格式错误的命令,出现'unterminated quoted string'错误。 解决方案: 1. 创建scripts/sync-to-production.sh脚本封装所有rsync操作 2. 在.woodpecker.yml中调用脚本而非直接写复杂命令 3. 简化ssh命令中的条件判断语法 优势: - 避免YAML引号嵌套问题 - 脚本更易维护和调试 - 清晰的部署流程分离
This commit is contained in:
+3
-7
@@ -146,13 +146,9 @@ steps:
|
||||
- ssh -o StrictHostKeyChecking=no root@139.155.109.62 "echo Server connection OK"
|
||||
- ssh -o StrictHostKeyChecking=no root@139.155.109.62 "df -h / /home | head -3"
|
||||
- echo "Syncing build artifacts to production server"
|
||||
- "rsync -avz --delete -e \"ssh -o StrictHostKeyChecking=no\" dist/ root@139.155.109.62:/home/novalon/docker-app/novalon-website/dist/"
|
||||
- "rsync -avz -e \"ssh -o StrictHostKeyChecking=no\" public/ root@139.155.109.62:/home/novalon/docker-app/novalon-website/public/"
|
||||
- "rsync -avz -e \"ssh -o StrictHostKeyChecking=no\" package.json package-lock.json root@139.155.109.62:/home/novalon/docker-app/novalon-website/"
|
||||
- "rsync -avz -e \"ssh -o StrictHostKeyChecking=no\" Dockerfile.prod docker-compose.server.yml root@139.155.109.62:/home/novalon/docker-app/novalon-website/"
|
||||
- "rsync -avz -e \"ssh -o StrictHostKeyChecking=no\" scripts/deploy-production.sh root@139.155.109.62:/home/novalon/docker-app/novalon-website/scripts/"
|
||||
- "if [ -f .env.production ]; then rsync -avz -e \"ssh -o StrictHostKeyChecking=no\" .env.production root@139.155.109.62:/home/novalon/docker-app/novalon-website/; else echo \"No .env.production file\"; fi"
|
||||
- "ssh -o StrictHostKeyChecking=no root@139.155.109.62 \"cd /home/novalon/docker-app/novalon-website && [ -f docker-compose.server.yml ] && mv docker-compose.server.yml docker-compose.yml; chmod +x scripts/deploy-production.sh && ./scripts/deploy-production.sh\""
|
||||
- chmod +x scripts/sync-to-production.sh
|
||||
- ./scripts/sync-to-production.sh
|
||||
- ssh -o StrictHostKeyChecking=no root@139.155.109.62 "cd /home/novalon/docker-app/novalon-website && test -f docker-compose.server.yml && mv docker-compose.server.yml docker-compose.yml; chmod +x scripts/deploy-production.sh && ./scripts/deploy-production.sh"
|
||||
- echo "Production deployment completed"
|
||||
volumes:
|
||||
- /tmp/npm-cache:/root/.npm
|
||||
|
||||
Reference in New Issue
Block a user