From 2bdf37ca7ebffe01d01f88ea0253cb3f90f8d674 Mon Sep 17 00:00:00 2001 From: happybell80 Date: Wed, 9 Jul 2025 19:37:00 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20GitHub=20Actions=20=EC=B5=9C=EC=A0=81?= =?UTF-8?q?=ED=99=94=20=EB=B0=8F=20=EB=AC=B8=EC=84=9C=ED=99=94=20=EA=B0=9C?= =?UTF-8?q?=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - webfactory/ssh-agent 제거하고 직접 SSH 키 설정으로 단순화 - 배포 단계별 로그 출력 추가 (이모지 포함) - 워크플로우 상단에 상세 문서화 주석 추가 - 성공/실패 조건 및 주요 작업 명시 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- .github/workflows/deploy.yml | 45 +++++++++++++++++++++++++++++------- 1 file changed, 37 insertions(+), 8 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 60c9ba4..fbcc1ba 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -1,3 +1,23 @@ +# Ubuntu 서버 nginx 설정 자동 배포 워크플로우 +# +# 성공 조건: +# - Ubuntu 서버 SSH 접속 가능 +# - admin 사용자 sudo NOPASSWD 설정 완료 +# - nginx 서비스 실행 중 +# +# 실패 조건: +# - SSH 키 인증 실패 +# - sudo 권한 없음 +# - nginx 설정 문법 오류 +# - 시스템 서비스 오류 +# +# 주요 작업: +# 1. SSH 키 설정 +# 2. 소스 파일 전송 (~/robeing-nginx) +# 3. nginx 설정 적용 (/etc/nginx/sites-available/default) +# 4. nginx 서비스 reload +# 5. Docker 컨테이너 정리 + name: Deploy to Ubuntu Server on: @@ -13,10 +33,10 @@ jobs: uses: actions/checkout@v4 - name: Setup SSH key - id: ssh-setup - uses: webfactory/ssh-agent@v0.9.0 - with: - ssh-private-key: ${{ secrets.NAS_SSH_KEY_ADMIN }} + run: | + mkdir -p ~/.ssh + echo "${{ secrets.NAS_SSH_KEY_ADMIN }}" > ~/.ssh/id_rsa + chmod 600 ~/.ssh/id_rsa - name: Deploy files via SCP env: @@ -24,7 +44,10 @@ jobs: PORT: ${{ secrets.NAS_PORT }} USER: ${{ secrets.NAS_USER }} run: | + # 기존 배포 파일 정리 및 디렉토리 준비 ssh -o StrictHostKeyChecking=no -p $PORT $USER@$HOST "rm -rf ~/robeing-nginx/* || true; mkdir -p ~/robeing-nginx" + + # 소스 파일 전송 (.git 제외) tar --exclude='.git' -czf - . | ssh -o StrictHostKeyChecking=no -p $PORT $USER@$HOST "cd ~/robeing-nginx && tar -xzf -" - name: Apply nginx config via SSH @@ -35,13 +58,19 @@ jobs: run: | ssh -o StrictHostKeyChecking=no -o RequestTTY=no -p $PORT $USER@$HOST << 'EOF' cd ~/robeing-nginx + + echo "📋 Applying nginx configuration..." sudo -n /usr/bin/cp server-nginx-default /etc/nginx/sites-available/default + + echo "🔍 Testing nginx configuration..." sudo -n /usr/sbin/nginx -t + + echo "🔄 Reloading nginx service..." sudo -n /bin/systemctl reload nginx + + echo "🧹 Cleaning up Docker containers..." docker compose down || true + + echo "✅ Deployment completed successfully!" EOF - - name: Cleanup SSH agent - if: always() && steps.ssh-setup.outcome == 'success' - run: | - ssh-agent -k || true \ No newline at end of file