From 3fb4618c6b9dcbd339bf76aa793bbb14f834bf46 Mon Sep 17 00:00:00 2001 From: happybell80 Date: Tue, 8 Jul 2025 00:08:38 +0900 Subject: [PATCH] Fix SIGPIPE issue with 3-step deployment MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Separate tar โ†’ scp โ†’ unpack to avoid pipe failures - Add SSH stability options (ConnectTimeout, ServerAliveInterval) - Clean up temporary files after deployment - Prevents Exit code 141 (SIGPIPE) errors - Maintains atomic swap and backup functionality ๐Ÿค– Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- .github/workflows/deploy.yml | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index d8fe122..f0f26cb 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -56,9 +56,15 @@ jobs: ssh -p ${{ secrets.NAS_PORT }} admin@${{ secrets.NAS_HOST }} \ "ls -la /var/run/docker.sock && id" + - name: Create deployment archive + run: tar czf deploy.tar.gz --exclude='.git' . + + - name: Copy archive to NAS + run: scp -o ConnectTimeout=10 -o ServerAliveInterval=60 -P ${{ secrets.NAS_PORT }} deploy.tar.gz admin@${{ secrets.NAS_HOST }}:/tmp/ + - name: Deploy with atomic swap run: | - tar czf - --exclude='.git' . | ssh -p ${{ secrets.NAS_PORT }} admin@${{ secrets.NAS_HOST }} bash -s << 'EOF' + ssh -o ConnectTimeout=10 -o ServerAliveInterval=60 -p ${{ secrets.NAS_PORT }} admin@${{ secrets.NAS_HOST }} << 'EOF' set -euo pipefail DEPLOY=/volume1/homes/admin/nginx-infra @@ -66,7 +72,7 @@ jobs: BACKUP=${DEPLOY}-backup-$(date +%Y%m%d%H%M%S) # 1) tar๋กœ ์ž„์‹œ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ํ’€๊ธฐ - cd "$TMPDIR" && tar xzf - + cd "$TMPDIR" && tar xzf /tmp/deploy.tar.gz # 2) ๊ธฐ์กด ๋ฐฐํฌ๋ฌผ์„ ๋ฐฑ์—… if [ -d "$DEPLOY" ]; then @@ -85,4 +91,7 @@ jobs: cd "$DEPLOY" docker-compose down 2>/dev/null || true docker-compose up -d --build + + # 6) ์ž„์‹œ ํŒŒ์ผ ์ •๋ฆฌ + rm -f /tmp/deploy.tar.gz EOF \ No newline at end of file