Skip to content

변경

변경 #23

Workflow file for this run

name: Auto Deploy
on:
push:
branches:
- master
jobs:
deploy:
runs-on: ubuntu-latest
steps:
# 1. 저장소 체크아웃
- uses: actions/checkout@v3
# 2. JDK 17
- uses: actions/setup-java@v3
with:
distribution: temurin
java-version: 17
# 3. Spring Boot 빌드 (테스트 제외)
- name: Build Spring Boot
run: |
chmod +x ./gradlew
./gradlew clean build -x test --no-daemon
# 4. Docker 이미지 빌드
- name: Build Docker Image
run: docker build -t 55ooyeon/server:latest .
# 5. Docker Hub 로그인
- name: Docker Hub Login
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_PASSWORD }}
# 6. Docker 이미지 푸시
- name: Push Docker Image
run: docker push 55ooyeon/server:latest
# 7. EC2 배포
- name: Deploy to EC2
uses: appleboy/ssh-action@v0.1.8
with:
host: ${{ secrets.EC2_HOST }}
username: ubuntu
key: ${{ secrets.EC2_KEY }}
script: |
# ① 레지스트리 로그인(프라이빗 레포일 경우)
docker login -u ${{ secrets.DOCKERHUB_USERNAME }} -p ${{ secrets.DOCKERHUB_PASSWORD }}
# ② 기존 컨테이너 중지·삭제
docker stop server || true
docker rm server || true
# ③ 사용하지 않는 이미지·볼륨·빌드 캐시 전체 정리
docker system prune -af --volumes
# ④ 최신 이미지 가져오기
docker pull 55ooyeon/server:latest
# ⑤ 컨테이너 재기동
docker run -d --name server -p 8080:8080 \
-e SPRING_DATASOURCE_URL='${{ secrets.DB_URL }}' \
-e SPRING_DATASOURCE_USERNAME='${{ secrets.DB_USERNAME }}' \
-e SPRING_DATASOURCE_PASSWORD='${{ secrets.DB_PASSWORD }}' \
55ooyeon/server:latest