@@ -2,9 +2,9 @@ name: Java CI with Gradle
22
33on :
44 push :
5- branches : [ "main" ]
5+ branches : [ "main", "release/#*" ]
66 pull_request :
7- branches : [ "main" ]
7+ branches : [ "main", "release/#*" ]
88
99permissions :
1010 contents : read
@@ -13,54 +13,86 @@ jobs:
1313 build-docker-image :
1414 runs-on : ubuntu-latest
1515 steps :
16- - uses : actions/checkout@v3
17- # 1. Java 21 세팅
18- - name : Set up JDK 21
19- uses : actions/setup-java@v3
20- with :
21- java-version : ' 21'
22- distribution : ' temurin'
23-
24- # 2. SpringBoot 애플리케이션 빌드
25- - name : Build with Gradle
26- uses : gradle/actions/setup-gradle@v3
27- with :
28- arguments : clean bootJar
16+ - uses : actions/checkout@v3
17+ # 1. Java 21 세팅
18+ - name : Set up JDK 21
19+ uses : actions/setup-java@v3
20+ with :
21+ java-version : ' 21'
22+ distribution : ' temurin'
2923
30- # 3. Docker 이미지 빌드
31- - name : Docker Image Build
32- run : docker build -t ${{ secrets.DOCKERHUB_USERNAME }}/aether_back_spring .
24+ # 2. application-oauth/cloud.properties 생성
25+ - name : Create application-oauth.properties
26+ run : |
27+ echo "spring.security.user.name=${{ secrets.SECURITY_USERNAME }}" > ./src/main/resources/application-oauth.properties
28+ echo "spring.security.user.password=${{ secrets.SECURITY_PASSWORD }}" >> ./src/main/resources/application-oauth.properties
29+ echo "jwt.key=${{ secrets.JWT_KEY }}" >> ./src/main/resources/application-oauth.properties
30+ echo "spring.security.oauth2.client.registration.google.client-id=${{ secrets.GOOGLE_CLIENT_ID }}" >> ./src/main/resources/application-oauth.properties
31+ echo "spring.security.oauth2.client.registration.google.client-secret=${{ secrets.GOOGLE_CLIENT_SECRET }}" >> ./src/main/resources/application-oauth.properties
32+ echo "spring.security.oauth2.client.registration.google.scope=${{ secrets.GOOGLE_SCOPE }}" >> ./src/main/resources/application-oauth.properties
33+ echo "spring.security.oauth2.client.registration.google.redirect-uri=${{ secrets.GOOGLE_REDIRECT_URI }}" >> ./src/main/resources/application-oauth.properties
3334
34- # 4. DockerHub 로그인
35- - name : DockerHub Login
36- uses : docker/login-action@v2
37- with :
38- username : ${{ secrets.DOCKERHUB_USERNAME }}
39- password : ${{ secrets.DOCKERHUB_PASSWORD }}
35+ - name : Create application-cloud properties
36+ run : |
37+ echo "spring.datasource.driver-class-name=${{ secrets.DATASOURCE_DRIVER_CLASSNAME }}" > ./src/main/resources/application-cloud.properties
38+ echo "spring.datasource.url=${{ secrets.DATASOURCE_URL }}" >> ./src/main/resources/application-cloud.properties
39+ echo "spring.datasource.username=${{ secrets.DATASOURCE_USERNAME }}" >> ./src/main/resources/application-cloud.properties
40+ echo "spring.datasource.password=${{ secrets.DATASOURCE_PASSWORD }}" >> ./src/main/resources/application-cloud.properties
41+ echo "spring.data.redis.host=${{ secrets.REDIS_HOST }}" >> ./src/main/resources/application-cloud.properties
42+ echo "spring.data.redis.port=${{ secrets.REDIS_PORT }}" >> ./src/main/resources/application-cloud.properties
43+ echo "spring.h2.console.enabled=${{ secrets.H2CONSOLE_ENABLED }}" >> ./src/main/resources/application-cloud.properties
44+ echo "spring.h2.console.path=${{ secrets.H2CONSOLE_PATH }}" >> ./src/main/resources/application-cloud.properties
45+ echo "spring.data.mongodb.host=${{ secrets.MONGODB_HOST }}" >> ./src/main/resources/application-cloud.properties
46+ echo "spring.data.mongodb.port=${{ secrets.MONGODB_PORT }}" >> ./src/main/resources/application-cloud.properties
47+ echo "spring.data.mongodb.database=${{ secrets.MONGODB_DATABASE }}" >> ./src/main/resources/application-cloud.properties
48+ echo "spring.data.mongodb.username=${{ secrets.MONGODB_USERNAME }}" >> ./src/main/resources/application-cloud.properties
49+ echo "spring.data.mongodb.password=${{ secrets.MONGODB_PASSWORD }}" >> ./src/main/resources/application-cloud.properties
50+ echo "spring.data.mongodb.authentication-database=${{ secrets.MONGODB_AUTHENTICATION_DATABASE }}" >> ./src/main/resources/application-cloud.properties
4051
41- # 5. DockerHub 이미지 push
42- - name : DockerHub push
43- run : docker push ${{ secrets.DOCKERHUB_USERNAME }}/aether_back_spring
52+ # 3. SpringBoot 애플리케이션 빌드
53+ - name : Build with Gradle
54+ uses : gradle/actions/setup-gradle@v3
55+ with :
56+ arguments : clean bootJar
57+
58+ # 4. Docker 이미지 빌드
59+ - name : Docker Image Build
60+ run : docker build -t ${{ secrets.DOCKERHUB_USERNAME }}/aether_back_spring .
61+
62+ # 5. DockerHub 로그인
63+ - name : DockerHub Login
64+ uses : docker/login-action@v2
65+ with :
66+ username : ${{ secrets.DOCKERHUB_USERNAME }}
67+ password : ${{ secrets.DOCKERHUB_PASSWORD }}
68+
69+ # 6. DockerHub 이미지 push
70+ - name : DockerHub push
71+ run : docker push ${{ secrets.DOCKERHUB_USERNAME }}/aether_back_spring
4472
4573 run-docker-image-on-ec2 :
46- # build-docker-image (위)과정이 완료되어야 실행됨
4774 needs : build-docker-image
4875 runs-on : self-hosted
4976
5077 steps :
5178 # 1. 최신 이미지를 pull 받음
5279 - name : Docker pull
5380 run : sudo docker pull ${{ secrets.DOCKERHUB_USERNAME }}/aether_back_spring
54-
55- # 2. 기존 컨테이너 중지
56- - name : Docker stop Container
57- run : sudo docker stop $(sudo docker ps -q) 2>/dev/null || true
5881
59- # 3. 최신 이미지를 컨테이너화하여 실행
60- - name : Docker run new Container
61- run : sudo docker run --name aether_back_spring --rm -d -p 8080:8080 ${{ secrets.DOCKERHUB_USERNAME }}/aether_back_spring
82+ # 2. 기존 컨테이너 중지 및 삭제
83+ - name : Stop and Remove Existing Container
84+ run : |
85+ sudo docker stop aether_back_spring 2>/dev/null || true
86+ sudo docker rm aether_back_spring 2>/dev/null || true
87+
88+ # 3. 최신 이미지를 컨테이너화하여 실행 (80 포트에서 실행)
89+ - name : Run New Container (Port 80)
90+ run : |
91+ sudo docker run --name aether_back_spring --rm -d \
92+ -p 80:8080 \
93+ --network host \
94+ ${{ secrets.DOCKERHUB_USERNAME }}/aether_back_spring
6295
6396 # 4. 미사용 이미지 정리
6497 - name : Delete old Docker Image
6598 run : sudo docker system prune -f
66-
0 commit comments