@@ -2,9 +2,9 @@ name: CI/CD
22
33on :
44 push :
5- branches : [ "main" ]
5+ branches : [ "main", "dev" ]
66 pull_request :
7- branches : [ "main" ]
7+ branches : [ "main", "dev" ]
88
99jobs :
1010 build :
@@ -66,20 +66,23 @@ jobs:
6666 - name : Build with Gradle Wrapper
6767 run : ./gradlew build
6868
69- # Docker 이미지 빌드
70- - name : docker image build
71- run : docker build --build-arg TZ=Asia/Seoul -t ${{ secrets.DOCKERHUB_USERNAME }}/mercury-server .
72-
7369 # DockerHub 로그인
7470 - name : docker login
7571 uses : docker/login-action@v2
7672 with :
7773 username : ${{ secrets.DOCKERHUB_USERNAME }}
7874 password : ${{ secrets.DOCKERHUB_PASSWORD }}
7975
80- # DockerHub 이미지 푸시
81- - name : docker Hub push
82- run : docker push ${{ secrets.DOCKERHUB_USERNAME }}/mercury-server
76+ # 브랜치별 Docker 이미지 빌드 & 푸쉬
77+ - name : Build Docker Image & Push DockerHub
78+ run : |
79+ if [[ "${{ github.ref }}" == "refs/heads/main" ]]; then
80+ docker build --build-arg TZ=Asia/Seoul --build-arg SPRING_PROFILES_ACTIVE=prod -t ${{ secrets.DOCKERHUB_USERNAME }}/mercury-server:prod .
81+ docker push ${{ secrets.DOCKERHUB_USERNAME }}/mercury-server:prod
82+ elif [[ "${{ github.ref }}" == "refs/heads/develop" ]]; then
83+ docker build --build-arg TZ=Asia/Seoul --build-arg SPRING_PROFILES_ACTIVE=dev -t ${{ secrets.DOCKERHUB_USERNAME }}/mercury-server:dev .
84+ docker push ${{ secrets.DOCKERHUB_USERNAME }}/mercury-server:dev
85+ fi
8386
8487 deploy :
8588 needs : build
9497 username : ${{ secrets.EC2_USERNAME }}
9598 key : ${{ secrets.EC2_SSH_KEY }}
9699 script : |
97- docker pull ${{ secrets.DOCKERHUB_USERNAME }}/mercury-server
98- docker stop $(docker ps -q) || true
99- docker rm $(docker ps -a -q) || true
100- # 사용하지 않는 이미지 정리
101- docker image prune -f
102- docker run -d -e TZ=Asia/Seoul -p 8080:8080 ${{ secrets.DOCKERHUB_USERNAME }}/mercury-server
100+ if [[ "${{ github.ref }}" == "refs/heads/main" ]]; then
101+ # 운영 서버 배포 (8080 포트)
102+ docker pull ${{ secrets.DOCKERHUB_USERNAME }}/mercury-server:prod
103+ docker stop mercury-prod || true
104+ docker rm mercury-prod || true
105+ docker image prune -f || true
106+ docker run -d --name mercury-prod -e SPRING_PROFILES_ACTIVE=prod -e TZ=Asia/Seoul -p 8080:8080 ${{ secrets.DOCKERHUB_USERNAME }}/mercury-server:prod
107+ elif [[ "${{ github.ref }}" == "refs/heads/develop" ]]; then
108+ # 개발 서버 배포 (EC2의 8081 포트 → 컨테이너의 8080 포트)
109+ docker pull ${{ secrets.DOCKERHUB_USERNAME }}/mercury-server:dev
110+ docker stop mercury-dev || true
111+ docker rm mercury-dev || true
112+ docker image prune -f || true
113+ docker run -d --name mercury-dev -e SPRING_PROFILES_ACTIVE=dev -e TZ=Asia/Seoul -p 8081:8080 ${{ secrets.DOCKERHUB_USERNAME }}/mercury-server:dev
114+ fi
0 commit comments