happybell80 2bdf37ca7e feat: GitHub Actions 최적화 및 문서화 개선
- webfactory/ssh-agent 제거하고 직접 SSH 키 설정으로 단순화
- 배포 단계별 로그 출력 추가 (이모지 포함)
- 워크플로우 상단에 상세 문서화 주석 추가
- 성공/실패 조건 및 주요 작업 명시

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-09 19:37:00 +09:00

77 lines
2.3 KiB
YAML

# 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:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout source
uses: actions/checkout@v4
- name: Setup SSH key
run: |
mkdir -p ~/.ssh
echo "${{ secrets.NAS_SSH_KEY_ADMIN }}" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
- name: Deploy files via SCP
env:
HOST: ${{ secrets.NAS_HOST }}
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
env:
HOST: ${{ secrets.NAS_HOST }}
PORT: ${{ secrets.NAS_PORT }}
USER: ${{ secrets.NAS_USER }}
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