@@ -2,17 +2,38 @@ name: EAT-SSU Server ๊ฐ๋ฐ & ์ด์ ์๋ฒ ๋ฐฐํฌ ํ์ดํ๋ผ์ธ
22
33on :
44 push :
5- branches : [ "main", "develop", "hotfix/deploy-prod-fail", "hotfix/deploy-dev-fail" ]
5+ branches : [ "main", "develop" ]
66
77permissions :
88 contents : read
99
1010jobs :
11- CI-CD :
12- name : CI/CD
11+ build :
12+ name : Build
1313 runs-on : ubuntu-latest
14+ services :
15+ mysql :
16+ image : mysql:8.0
17+ env :
18+ MYSQL_DATABASE : eatssu_test
19+ MYSQL_ROOT_PASSWORD : test
20+ ports :
21+ - 3306:3306
22+ options : >-
23+ --health-cmd="mysqladmin ping -h localhost"
24+ --health-interval=10s
25+ --health-timeout=5s
26+ --health-retries=10
27+ env :
28+ EATSSU_DB_URL_TEST : jdbc:mysql://localhost:3306/eatssu_test
29+ EATSSU_DB_USERNAME : root
30+ EATSSU_DB_PASSWORD : test
31+ EATSSU_AWS_ACCESS_KEY_DEV : dummy-access-key
32+ EATSSU_AWS_SECRET_KEY_DEV : dummy-secret-key
33+ EATSSU_SLACK_TOKEN : dummy-slack-token
1434 steps :
1535 - uses : actions/checkout@v3
36+
1637 - name : JDK 17 ์ค์น
1738 uses : actions/setup-java@v3
1839 with :
@@ -30,15 +51,15 @@ jobs:
3051 ${{ runner.os }}-gradle-
3152
3253 - name : dev ํ๋กํ ์ค์
33- if : github.ref_name == 'develop' || github.ref_name == 'hotfix/deploy-dev-fail'
54+ if : github.ref_name == 'develop'
3455 run : |
3556 echo "spring:
3657 profiles:
3758 include: dev" > ./src/main/resources/application.yml
3859 shell : bash
3960
4061 - name : prod ํ๋กํ ์ค์
41- if : github.ref_name == 'main' || github.ref_name == 'hotfix/deploy-prod-fail'
62+ if : github.ref_name == 'main'
4263 run : |
4364 echo "spring:
4465 profiles:
@@ -48,34 +69,56 @@ jobs:
4869 - name : gradlew ์คํ ๊ถํ ๋ถ์ฌ
4970 run : chmod +x gradlew
5071
72+ - name : ํ
์คํธ์ฉ JWT ์ํฌ๋ฆฟ ์์ฑ
73+ run : echo "EATSSU_JWT_SECRET_TEST=$(openssl rand -base64 64 | tr -d '\n')" >> "$GITHUB_ENV"
74+
5175 - name : Gradle๋ก ๋น๋
52- run : ./gradlew build -x test - -no-daemon
76+ run : ./gradlew build --no-daemon
5377
5478 - name : ๋น๋ ์ฐ์ถ๋ฌผ ํ์ธ
5579 run : ls -lh build/libs/*.jar
5680
81+ - name : ๋น๋ ์ฐ์ถ๋ฌผ ์
๋ก๋
82+ uses : actions/upload-artifact@v4
83+ with :
84+ name : app-jar
85+ path : build/libs/eat-ssu.jar
86+
87+ deploy :
88+ name : Deploy
89+ needs : build
90+ runs-on : ubuntu-latest
91+ steps :
92+ - uses : actions/checkout@v3
93+
94+ - name : ๋น๋ ์ฐ์ถ๋ฌผ ๋ค์ด๋ก๋
95+ uses : actions/download-artifact@v4
96+ with :
97+ name : app-jar
98+ path : build/libs
99+
57100 - name : Docker Hub ๋ก๊ทธ์ธ
58101 uses : docker/login-action@v2
59102 with :
60103 username : ${{ secrets.DOCKER_USERNAME }}
61104 password : ${{ secrets.DOCKER_PASSWORD }}
62105
63106 - name : prod ์ฉ Docker ๋น๋ ๋ฐ ํธ์
64- if : github.ref_name == 'main' || github.ref_name == 'hotfix/deploy-prod-fail'
107+ if : github.ref_name == 'main'
65108 run : |
66109 docker build -f Dockerfile -t ${{ secrets.DOCKER_REPO }}/eatssu-prod .
67110 docker push ${{ secrets.DOCKER_REPO }}/eatssu-prod
68111
69112 - name : dev ์๋ฒ ์ฉ Docker ๋น๋ ๋ฐ ํธ์
70- if : github.ref_name == 'develop' || github.ref_name == 'hotfix/deploy-dev-fail'
113+ if : github.ref_name == 'develop'
71114 run : |
72115 docker build -f Dockerfile -t ${{ secrets.DOCKER_REPO }}/eatssu-dev .
73116 docker push ${{ secrets.DOCKER_REPO }}/eatssu-dev
74117
75118 - name : prod์ ๋ฐฐํฌ
76119 uses : appleboy/ssh-action@master
77120 id : deploy-prod
78- if : github.ref_name == 'main' || github.ref_name == 'hotfix/deploy-prod-fail'
121+ if : github.ref_name == 'main'
79122 with :
80123 host : ${{ secrets.HOST_PROD }}
81124 username : ${{ secrets.USERNAME }}
@@ -106,7 +149,7 @@ jobs:
106149 - name : dev ์๋ฒ์ ๋ฐฐํฌ
107150 uses : appleboy/ssh-action@master
108151 id : deploy-dev
109- if : github.ref_name == 'develop' || github.ref_name == 'hotfix/deploy-dev-fail'
152+ if : github.ref_name == 'develop'
110153 with :
111154 host : ${{ secrets.HOST_DEV }}
112155 username : ${{ secrets.USERNAME }}
0 commit comments