Skip to content

Commit 9a7873c

Browse files
authored
Update deploy.yml
1 parent f79d025 commit 9a7873c

File tree

1 file changed

+27
-27
lines changed

1 file changed

+27
-27
lines changed

.github/workflows/deploy.yml

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -3,83 +3,83 @@ name: Spring Boot & Gradle CI/CD
33
on:
44
push:
55
branches:
6-
- develop
7-
- master
6+
- develop # 개발 브랜치 (개발 서버 배포)
7+
- master # 운영 브랜치 (운영 서버 배포)
88

99
permissions:
10-
contents: read
10+
contents: read # read 권한만 부여
1111

1212
jobs:
1313
build:
14-
runs-on: ubuntu-latest
14+
runs-on: ubuntu-latest # 실행 환경 (Ubuntu 최신 버전)
1515

1616
steps:
17+
# 1. 코드 체크아웃
1718
- name: Checkout Repository
1819
uses: actions/checkout@v3
1920

21+
# 2. JDK 17 설치
2022
- name: Set up JDK 17
2123
uses: actions/setup-java@v3
2224
with:
2325
java-version: '17'
2426
distribution: 'temurin'
2527

28+
# 3. application.yml 파일 생성 (환경변수 기반 설정)
2629
- name: Create application.yml
2730
run: |
2831
cd ./src/main/resources
29-
if [[ "${{ github.ref }}" == "refs/heads/develop" ]]; then
30-
echo "${{ secrets.APPLICATION_DEV_YML }}" > application-dev.yml
31-
elif [[ "${{ github.ref }}" == "refs/heads/master" ]]; then
32-
echo "${{ secrets.APPLICATION_PROD_YML }}" > application-prod.yml
32+
if [ "${{ github.ref }}" == "refs/heads/develop" ]; then
33+
touch ./application-dev.yml
34+
echo "${{ secrets.APPLICATION_DEV_YML }}" >> ./application-dev.yml
35+
elif [ "${{ github.ref }}" == "refs/heads/master" ]; then
36+
touch ./application-prod.yml
37+
echo "${{ secrets.APPLICATION_PROD_YML }}" >> ./application-prod.yml
3338
fi
3439
shell: bash
3540

41+
# 4. Firebase 서비스 키 디렉토리 생성 (통합된 키 사용)
3642
- name: Create Firebase Config Directory
3743
run: |
3844
mkdir -p src/main/resources/firebase
39-
echo "${{ secrets.FIREBASE_SERVICE_KEY }}" | base64 --decode > src/main/resources/firebase/firebase-key.json
45+
echo "${{ secrets.FIREBASE_SERVICE_KEY }}" | base64 --decode > src/main/resources/firebase/catchmate-9653a-firebase-adminsdk-kh06c-0315680471.json
4046
shell: bash
4147

48+
# 5. gradlew에 실행 권한 부여
4249
- name: Grant execute permission for gradlew
4350
run: chmod +x gradlew
4451

52+
# 6. Gradle 빌드 (테스트 제외)
4553
- name: Build with Gradle (without Test)
4654
run: ./gradlew clean build -x test --stacktrace
4755

56+
# 7. Docker Hub에 로그인 및 이미지 빌드/푸시 (브랜치별 저장소 구분)
4857
- name: Docker Hub build & push
4958
run: |
5059
docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }}
51-
if [[ "${{ github.ref }}" == "refs/heads/develop" ]]; then
60+
if [ "${{ github.ref }}" == "refs/heads/develop" ]; then
5261
docker build -t ${{ secrets.DOCKER_USERNAME }}/${{ secrets.DOCKER_DEV_REPO }} .
5362
docker push ${{ secrets.DOCKER_USERNAME }}/${{ secrets.DOCKER_DEV_REPO }}
54-
elif [[ "${{ github.ref }}" == "refs/heads/master" ]]; then
63+
elif [ "${{ github.ref }}" == "refs/heads/master" ]; then
5564
docker build -t ${{ secrets.DOCKER_USERNAME }}/${{ secrets.DOCKER_PROD_REPO }} .
5665
docker push ${{ secrets.DOCKER_USERNAME }}/${{ secrets.DOCKER_PROD_REPO }}
5766
fi
5867
68+
# 8. EC2에 배포 (SSH 연결 후 Docker 실행)
5969
- name: Deploy to EC2
6070
uses: appleboy/ssh-action@master
6171
with:
62-
host: ${{ github.ref == 'refs/heads/develop' && secrets.EC2_DEV_HOST || secrets.EC2_PROD_HOST }}
63-
username: ${{ secrets.EC2_USERNAME }}
64-
key: ${{ github.ref == 'refs/heads/develop' && secrets.EC2_DEV_PRIVATE_KEY || secrets.EC2_PROD_PRIVATE_KEY }}
72+
host: ${{ github.ref == 'refs/heads/develop' && secrets.EC2_DEV_HOST || secrets.EC2_PROD_HOST }} # 개발/운영 서버에 맞는 호스트
73+
username: ${{ secrets.EC2_USERNAME }} # 개발/운영 서버에 맞는 사용자명
74+
key: ${{ github.ref == 'refs/heads/develop' && secrets.EC2_DEV_PRIVATE_KEY || secrets.EC2_PROD_PRIVATE_KEY }} # 개발/운영 서버에 맞는 개인 키
6575
script: |
66-
set -e
6776
cd /home/ubuntu/CatchMate-SpringBoot
68-
echo "Logging in to Docker..."
6977
sudo docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }}
70-
71-
echo "Stopping existing containers..."
72-
sudo docker compose down || true
73-
74-
echo "Pulling latest image..."
75-
if [ "${GITHUB_REF##*/}" = "develop" ]; then
78+
sudo docker rm -f $(sudo docker ps -qa)
79+
if [ "${{ github.ref }}" == "refs/heads/develop" ]; then
7680
sudo docker pull ${{ secrets.DOCKER_USERNAME }}/${{ secrets.DOCKER_DEV_REPO }}
77-
else
81+
elif [ "${{ github.ref }}" == "refs/heads/master" ]; then
7882
sudo docker pull ${{ secrets.DOCKER_USERNAME }}/${{ secrets.DOCKER_PROD_REPO }}
7983
fi
80-
81-
echo "Starting containers..."
8284
sudo docker compose up -d --build
83-
84-
echo "Cleaning up old images..."
8585
sudo docker image prune -f

0 commit comments

Comments
 (0)