From 4277413fd4c8a8258ea73fd3f2ec9bf333348747 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E7=BF=94?= Date: Mon, 30 Mar 2026 14:47:07 +0800 Subject: [PATCH] fix: completely resolve YAML quoting issues in build-and-deploy step Problem: YAML parser failed on complex commands with nested quotes and special characters - ssh commands with nested quotes: "echo 'Server connection OK'" - rsync commands with paths and special characters: grep -E '/$|/home' - Caused 'unterminated quoted string' errors and pipeline step cancellation Solution: Wrap ALL complex commands with single quotes and escape nested quotes - Ensures proper YAML parsing while maintaining command functionality - This should finally resolve the stage rollback issue in pipeline #76 --- .woodpecker.yml | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/.woodpecker.yml b/.woodpecker.yml index 544c5cc..b53e9e7 100644 --- a/.woodpecker.yml +++ b/.woodpecker.yml @@ -138,18 +138,18 @@ steps: - chmod 600 ~/.ssh/id_rsa - echo "SSH key file created, checking permissions:" - ls -la ~/.ssh/ - - 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 | grep -E '/$|/home'" + - '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 | grep -E \'/\$|/home\'"' - '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/ - - rsync -avz -e "ssh -o StrictHostKeyChecking=no" .env.production root@139.155.109.62:/home/novalon/docker-app/novalon-website/ 2>/dev/null || echo "No .env.production file" - - 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" + - '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/' + - 'rsync -avz -e "ssh -o StrictHostKeyChecking=no" .env.production root@139.155.109.62:/home/novalon/docker-app/novalon-website/ 2>/dev/null || echo "No .env.production file"' + - '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