feat: GitHub Actions 최적화 및 문서화 개선
- webfactory/ssh-agent 제거하고 직접 SSH 키 설정으로 단순화 - 배포 단계별 로그 출력 추가 (이모지 포함) - 워크플로우 상단에 상세 문서화 주석 추가 - 성공/실패 조건 및 주요 작업 명시 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
45efd03a93
commit
2bdf37ca7e
45
.github/workflows/deploy.yml
vendored
45
.github/workflows/deploy.yml
vendored
@ -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
|
name: Deploy to Ubuntu Server
|
||||||
|
|
||||||
on:
|
on:
|
||||||
@ -13,10 +33,10 @@ jobs:
|
|||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Setup SSH key
|
- name: Setup SSH key
|
||||||
id: ssh-setup
|
run: |
|
||||||
uses: webfactory/ssh-agent@v0.9.0
|
mkdir -p ~/.ssh
|
||||||
with:
|
echo "${{ secrets.NAS_SSH_KEY_ADMIN }}" > ~/.ssh/id_rsa
|
||||||
ssh-private-key: ${{ secrets.NAS_SSH_KEY_ADMIN }}
|
chmod 600 ~/.ssh/id_rsa
|
||||||
|
|
||||||
- name: Deploy files via SCP
|
- name: Deploy files via SCP
|
||||||
env:
|
env:
|
||||||
@ -24,7 +44,10 @@ jobs:
|
|||||||
PORT: ${{ secrets.NAS_PORT }}
|
PORT: ${{ secrets.NAS_PORT }}
|
||||||
USER: ${{ secrets.NAS_USER }}
|
USER: ${{ secrets.NAS_USER }}
|
||||||
run: |
|
run: |
|
||||||
|
# 기존 배포 파일 정리 및 디렉토리 준비
|
||||||
ssh -o StrictHostKeyChecking=no -p $PORT $USER@$HOST "rm -rf ~/robeing-nginx/* || true; mkdir -p ~/robeing-nginx"
|
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 -"
|
tar --exclude='.git' -czf - . | ssh -o StrictHostKeyChecking=no -p $PORT $USER@$HOST "cd ~/robeing-nginx && tar -xzf -"
|
||||||
|
|
||||||
- name: Apply nginx config via SSH
|
- name: Apply nginx config via SSH
|
||||||
@ -35,13 +58,19 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
ssh -o StrictHostKeyChecking=no -o RequestTTY=no -p $PORT $USER@$HOST << 'EOF'
|
ssh -o StrictHostKeyChecking=no -o RequestTTY=no -p $PORT $USER@$HOST << 'EOF'
|
||||||
cd ~/robeing-nginx
|
cd ~/robeing-nginx
|
||||||
|
|
||||||
|
echo "📋 Applying nginx configuration..."
|
||||||
sudo -n /usr/bin/cp server-nginx-default /etc/nginx/sites-available/default
|
sudo -n /usr/bin/cp server-nginx-default /etc/nginx/sites-available/default
|
||||||
|
|
||||||
|
echo "🔍 Testing nginx configuration..."
|
||||||
sudo -n /usr/sbin/nginx -t
|
sudo -n /usr/sbin/nginx -t
|
||||||
|
|
||||||
|
echo "🔄 Reloading nginx service..."
|
||||||
sudo -n /bin/systemctl reload nginx
|
sudo -n /bin/systemctl reload nginx
|
||||||
|
|
||||||
|
echo "🧹 Cleaning up Docker containers..."
|
||||||
docker compose down || true
|
docker compose down || true
|
||||||
|
|
||||||
|
echo "✅ Deployment completed successfully!"
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
- name: Cleanup SSH agent
|
|
||||||
if: always() && steps.ssh-setup.outcome == 'success'
|
|
||||||
run: |
|
|
||||||
ssh-agent -k || true
|
|
||||||
Loading…
x
Reference in New Issue
Block a user