diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 0000000..d43bfcf --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,42 @@ +name: CI/CD Pipeline + +on: + push: + branches: + - main # main 브랜치에 푸시될 때 실행 + +jobs: + build-and-deploy: + runs-on: ubuntu-latest + + steps: + # 1. 코드 체크아웃 + - name: Checkout Code + uses: actions/checkout@v3 + + # 2. Docker 이미지 빌드 + - name: Build Docker Image + run: | + docker build -t backend_server . + + # 3. 서버에 코드 및 이미지 전송 + - name: Deploy to EC2 + uses: appleboy/scp-action@v0.1.4 + with: + host: ${{ secrets.EC2_HOST }} + username: ubuntu + key: ${{ secrets.EC2_SSH_KEY }} + source: "./*" + target: "/home/ubuntu/backend" + + # 4. 서버에서 Docker Compose 실행 + - name: SSH into EC2 and restart Docker Compose + uses: appleboy/ssh-action@v1.0.0 + with: + host: ${{ secrets.EC2_HOST }} + username: ubuntu + key: ${{ secrets.EC2_SSH_KEY }} + script: | + cd /home/ubuntu/backend + docker-compose down + docker-compose up -d --build