Skip to content

Merge pull request #47 from GDGoC-Peakly/main #19

Merge pull request #47 from GDGoC-Peakly/main

Merge pull request #47 from GDGoC-Peakly/main #19

Workflow file for this run

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"