Merge pull request #47 from GDGoC-Peakly/main #19
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Deploy | |
| on: | |
| push: | |
| branches: [ "deploy" ] | |
| permissions: | |
| contents: read | |
| jobs: | |
| build: | |
| runs-on: ubuntu-latest | |
| steps: | |
| # 1) 코드 체크아웃 | |
| - name: Checkout | |
| uses: actions/checkout@v3 | |
| # 2) JDK 17 | |
| - name: Set up JDK 17 | |
| uses: actions/setup-java@v3 | |
| with: | |
| java-version: '17' | |
| distribution: 'temurin' | |
| # 3) gradlew 실행 권한 부여 (Permission denied 방지) | |
| - name: Grant execute permission for gradlew | |
| run: chmod +x gradlew | |
| # 4) 빌드 (테스트 제외) | |
| - name: Build (skip tests) | |
| run: ./gradlew clean build -x test | |
| # 5) Docker Hub 로그인 | |
| - name: Login to Docker Hub | |
| uses: docker/login-action@v3 | |
| with: | |
| username: ${{ secrets.DOCKER_USERNAME }} | |
| password: ${{ secrets.DOCKER_PASSWORD }} | |
| # 6) 이미지 빌드 & 푸시 (latest로 통일) | |
| - name: Build & Push (latest) | |
| run: | | |
| docker build -t sungminju/peakly:latest . | |
| docker push sungminju/peakly:latest | |
| # 7) EC2 배포: .env 생성 → pull → compose 재기동 → 청소 | |
| - name: Deploy on EC2 (create .env, pull & restart) | |
| uses: appleboy/ssh-action@v1.2.0 | |
| with: | |
| host: ${{ secrets.ELASTIC_IP }} | |
| username: ubuntu | |
| key: ${{ secrets.PEM_KEY }} | |
| script: | | |
| set -e | |
| cd /home/ubuntu/peakly-server | |
| # 최신 이미지 가져와서 컨테이너 교체 실행 | |
| sudo docker login -u "${{ secrets.DOCKER_USERNAME }}" -p "${{ secrets.DOCKER_PASSWORD }}" | |
| sudo docker pull sungminju/peakly:latest | |
| # 기존 컨테이너 제거 (중요) | |
| sudo docker stop peakly || true | |
| sudo docker rm peakly || true | |
| # docker compose 플러그인/구버전 모두 대응 | |
| if command -v docker compose >/dev/null 2>&1; then | |
| sudo docker compose up -d --remove-orphans | |
| else | |
| sudo docker-compose -p mova up -d --remove-orphans | |
| fi | |
| # 오래된 이미지 정리(선택). | |
| sudo docker image prune -af --filter "until=24h" | |