diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 0000000..d9aa8db --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,56 @@ +name: Deploy to EC2 + +on: + pull_request: + types: [closed] + branches: [main, develop] + +jobs: + deploy: + if: github.event.pull_request.merged == true + runs-on: self-hosted + timeout-minutes: 15 + + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Deploy to EC2 + run: | + echo "๐Ÿš€ Starting deployment..." + echo "๐Ÿ”„ Branch: ${{ github.ref_name }}" + echo "๐Ÿ”„ Commit: ${{ github.sha }}" + + # ๋ฉ”๋ชจ๋ฆฌ ์ •๋ฆฌ + echo "๐Ÿงน Cleaning up memory..." + docker system prune -f + + # ์•ฑ ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ฝ”๋“œ ๋ณต์‚ฌ + echo "๐Ÿ“‚ Copying files..." + rsync -av --delete \ + --exclude='.git' \ + --exclude='node_modules' \ + --exclude='.next' \ + ./ /home/ubuntu/coplan/app/ + + # ๋ฐฐํฌ ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ด๋™ + cd /home/ubuntu/coplan + + # Docker ์ปจํ…Œ์ด๋„ˆ ์žฌ์‹œ์ž‘ + echo "๐Ÿ”„ Restarting containers..." + docker compose down + docker compose up -d --build + + # ํ—ฌ์Šค์ฒดํฌ + echo "๐Ÿฅ Health checking..." + sleep 15 + + if docker ps | grep -q coplan-app; then + echo "โœ… Deployment completed successfully!" + docker logs --tail 10 coplan-app + echo "๐ŸŒ Service available at: http://15.164.127.149" + else + echo "โŒ Deployment failed!" + docker logs coplan-app + exit 1 + fi