From 8e6f91629c20e5461df04a72d1e1d03b172a0f64 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E7=BF=94?= Date: Wed, 1 Apr 2026 10:31:28 +0800 Subject: [PATCH] =?UTF-8?q?fix(ci):=20=E4=BD=BF=E7=94=A8YAML=E5=8F=8C?= =?UTF-8?q?=E5=BC=95=E5=8F=B7=E5=AD=97=E7=AC=A6=E4=B8=B2=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?rsync=E5=91=BD=E4=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将单引号字符串改为双引号字符串 - 正确转义内部的双引号(\"代替") - 修复所有rsync命令和复杂shell命令 问题根因: YAML单引号字符串与shell命令中的引号嵌套导致解析错误 修复方案: 使用YAML双引号字符串:"rsync -avz -e \"ssh ...\" ..." 这样YAML解析器会将\"解释为字面字符\",传递给shell的命令就是正确的格式 --- .woodpecker.yml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/.woodpecker.yml b/.woodpecker.yml index 473232a..09dbd0f 100644 --- a/.woodpecker.yml +++ b/.woodpecker.yml @@ -145,15 +145,15 @@ steps: - echo "Testing SSH connection..." - 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"' - - 'echo "Production deployment completed"' + - 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\"" + - echo "Production deployment completed" volumes: - /tmp/npm-cache:/root/.npm - /tmp/node-modules-cache:/woodpecker/src/node_modules