Skip to content

Commit e4e2673

Browse files
authored
Merge pull request #165 from Moongeul/fix/#164
[FIX] CICD 파이프라인 업데이트
2 parents fee5ea2 + 4c1a425 commit e4e2673

File tree

1 file changed

+62
-85
lines changed

1 file changed

+62
-85
lines changed

.github/workflows/gradle.yml

Lines changed: 62 additions & 85 deletions
Original file line numberDiff line numberDiff line change
@@ -2,102 +2,79 @@ name: Moongeul CI/CD
22

33
on:
44
push:
5-
branches: [ "develop" ]
5+
branches:
6+
- develop # CI
7+
- main # CD
68

79
permissions:
810
contents: read
911

1012
jobs:
11-
# Spring Boot 애플리케이션을 빌드하여 도커허브에 푸시하는 과정
13+
# ─── CI: develop/main 공통 ─────────────────────────────────────
1214
build-docker-image:
1315
runs-on: ubuntu-latest
16+
# develop 또는 main 일 때만 실행
17+
if: |
18+
github.ref == 'refs/heads/develop' ||
19+
github.ref == 'refs/heads/main'
1420
steps:
15-
- uses: actions/checkout@v4
16-
# 1. Java 17 세팅
17-
- name: Set up JDK 17
18-
uses: actions/setup-java@v3
19-
with:
20-
java-version: '17'
21-
distribution: 'temurin'
21+
- uses: actions/checkout@v4
22+
23+
- name: Set up JDK 17
24+
uses: actions/setup-java@v3
25+
with:
26+
java-version: '17'
27+
distribution: 'temurin'
28+
29+
- name: Create application.yml files
30+
run: |
31+
mkdir -p src/main/resources
32+
echo "${{ secrets.APPLICATION_YML }}" > src/main/resources/application.yml
33+
echo "${{ secrets.APPLICATION_BOOK_YML }}" > src/main/resources/application-book.yml
34+
echo "${{ secrets.APPLICATION_JWT_YML }}" > src/main/resources/application-jwt.yml
35+
echo "${{ secrets.APPLICATION_OAUTH2_YML }}" > src/main/resources/application-oauth.yml
36+
echo "${{ secrets.APPLICATION_PROHIBIT_NICKNAME_YML }}" > src/main/resources/application-prohibit_nickname.yml
37+
echo "${{ secrets.APPLICATION_AWS_YML }}" > src/main/resources/application-aws.yml
38+
39+
- name: Setup Gradle
40+
uses: gradle/actions/setup-gradle@v3
41+
42+
- name: Build with Gradle
43+
run: ./gradlew clean bootJar
44+
45+
- name: Build Docker image
46+
run: docker build -t ${{ secrets.DOCKERHUB_USERNAME }}/book_cicd_action:${{ github.ref_name }} .
47+
48+
- name: Log in to Docker Hub
49+
uses: docker/login-action@v3
50+
with:
51+
username: ${{ secrets.DOCKERHUB_USERNAME }}
52+
password: ${{ secrets.DOCKERHUB_PASSWORD }}
53+
54+
- name: Push Docker image
55+
run: docker push ${{ secrets.DOCKERHUB_USERNAME }}/book_cicd_action:${{ github.ref_name }}
2256

23-
# 2-1. application.yml 파일 생성
24-
- name: Create application.yml
25-
run: |
26-
mkdir -p src/main/resources
27-
echo "${{ secrets.APPLICATION_YML }}" > src/main/resources/application.yml
28-
29-
# 2-2. application-book.yml 파일 생성
30-
- name: Create application-book.yml
31-
run: |
32-
mkdir -p src/main/resources
33-
echo "${{ secrets.APPLICATION_BOOK_YML }}" > src/main/resources/application-book.yml
34-
35-
# 2-3. application-jwt.yml 파일 생성
36-
- name: Create application-jwt.yml
37-
run: |
38-
mkdir -p src/main/resources
39-
echo "${{ secrets.APPLICATION_JWT_YML }}" > src/main/resources/application-jwt.yml
40-
41-
# 2-4. application-oauth.yml 파일 생성
42-
- name: Create application-oauth.yml
43-
run: |
44-
mkdir -p src/main/resources
45-
echo "${{ secrets.APPLICATION_OAUTH2_YML }}" > src/main/resources/application-oauth.yml
46-
47-
# 2-5. application-prohibit_nickname.yml 파일 생성
48-
- name: Create application-prohibit_nickname.yml
49-
run: |
50-
mkdir -p src/main/resources
51-
echo "${{ secrets.APPLICATION_PROHIBIT_NICKNAME_YML }}" > src/main/resources/application-prohibit_nickname.yml
52-
53-
# 2-6. application-aws.yml 파일 생성
54-
- name: Create application-aws.yml
55-
run: |
56-
mkdir -p src/main/resources
57-
echo "${{ secrets.APPLICATION_AWS_YML }}" > src/main/resources/application-aws.yml
58-
59-
# 3. Gradle 설정
60-
- name: Setup Gradle
61-
uses: gradle/actions/setup-gradle@v3
62-
63-
# 4. Spring Boot 애플리케이션 빌드
64-
- name: Build with Gradle
65-
run: ./gradlew clean bootJar
66-
67-
# 5. Docker 이미지 빌드
68-
- name: docker image build
69-
run: docker build -t ${{ secrets.DOCKERHUB_USERNAME }}/book_cicd_action .
70-
71-
# 6. DockerHub 로그인
72-
- name: docker login
73-
uses: docker/login-action@v3
74-
with:
75-
username: ${{ secrets.DOCKERHUB_USERNAME }}
76-
password: ${{ secrets.DOCKERHUB_PASSWORD }}
77-
78-
# 7. Docker Hub 이미지 푸시
79-
- name: docker Hub push
80-
run: docker push ${{ secrets.DOCKERHUB_USERNAME }}/book_cicd_action
81-
82-
# 위 과정에서 푸시한 이미지를 ec2에서 풀받아서 실행시키는 과정
8357
run-docker-image-on-ec2:
84-
# build-docker-image (위)과정이 완료되어야 실행됩니다.
8558
needs: build-docker-image
8659
runs-on: self-hosted
87-
60+
# main 브랜치에서만 실행
61+
if: github.ref == 'refs/heads/main'
8862
steps:
89-
# 1. 최신 이미지를 풀받습니다
90-
- name: docker pull
91-
run: sudo docker pull ${{ secrets.DOCKERHUB_USERNAME }}/book_cicd_action
92-
93-
# 2. 기존의 컨테이너를 중지시킵니다
94-
- name: docker stop container
95-
run: sudo docker stop $(sudo docker ps -q) 2>/dev/null || true
96-
97-
# 3. 최신 이미지를 컨테이너화하여 실행시킵니다
98-
- name: docker run new container
99-
run: sudo docker run --name moongeul --rm -d -p 8080:8080 ${{ secrets.DOCKERHUB_USERNAME }}/book_cicd_action
100-
101-
# 4. 미사용 이미지를 정리합니다
102-
- name: delete old docker image
63+
- name: Pull latest Docker image
64+
run: sudo docker pull ${{ secrets.DOCKERHUB_USERNAME }}/book_cicd_action:main
65+
66+
- name: Stop existing container (if any)
67+
run: |
68+
sudo docker stop moongeul || true
69+
sudo docker rm moongeul || true
70+
71+
- name: Run new container
72+
run: |
73+
sudo docker run \
74+
--name moongeul \
75+
--rm -d \
76+
-p 8080:8080 \
77+
${{ secrets.DOCKERHUB_USERNAME }}/book_cicd_action:main
78+
79+
- name: Clean up unused images
10380
run: sudo docker system prune -f

0 commit comments

Comments
 (0)