Skip to content

Commit 63dede1

Browse files
authored
Merge pull request #439 from Kernel360/setting/#436-dev-cd
[setting] develop 브랜치에 merge가 됬을 때 dev 인스턴스 서버에 자동 배포가 되도록 cd-dev 워크플로우 작성
2 parents 5434fb9 + e322c59 commit 63dede1

File tree

3 files changed

+129
-36
lines changed

3 files changed

+129
-36
lines changed

.github/workflows/cd-dev.yml

Lines changed: 129 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,129 @@
1+
name: Java CD-DEV with Gradle
2+
3+
on:
4+
pull_request:
5+
types:
6+
- closed
7+
8+
permissions:
9+
contents: read
10+
11+
jobs:
12+
if-dev-merge:
13+
if: github.event.pull_request.merged == true && github.event.pull_request.base.ref == 'develop'
14+
runs-on: ubuntu-latest
15+
steps:
16+
- uses: actions/checkout@v3
17+
18+
- name: Set up JDK 21
19+
uses: actions/setup-java@v3
20+
with:
21+
java-version: '21'
22+
distribution: 'temurin'
23+
24+
- name: Set up member-api application.yml
25+
run: echo "${{ secrets.MEMBER_APPLICATION }}" > ./member-api/src/main/resources/application.yml
26+
uses: actions/upload-artifact@v2
27+
with:
28+
name: application.yml
29+
path: ./member-api/src/main/resources/application.yml
30+
31+
- name: Set up member-api test application.yml
32+
uses: microsoft/variable-substitution@v1
33+
with:
34+
files: ./member-api/src/test/resources/application.yml
35+
env:
36+
spring.datasource.url: ${{ secrets.TEST_DB_URL }}
37+
spring.datasource.username: ${{ secrets.TEST_DB_HOST }}
38+
spring.datasource.password: ${{ secrets.TEST_DB_PASSWORD }}
39+
spring.security.jwt.secret: ${{ secrets.JWT_SECRET_KEY }}
40+
spring.data.mongodb.uri: ${{ secrets.MONGO_TEST_URI }}
41+
custom.domain.image.baseUrl: ${{ secrets.BASE_URL }}
42+
cloud.aws.s3.bucket: ${{ secrets.S3_BUCKET_NAME }}
43+
cloud.aws.region.static: ${{ secrets.S3_REGION }}
44+
cloud.aws.credentials.accessKey: ${{ secrets.AWS_ACCESS_KEY }}
45+
cloud.aws.credentials.secretKey: ${{ secrets.AWS_ACCESS_SECRET }}
46+
47+
- name: Set up domain-mysql application.yml
48+
run: echo "${{ secrets.APPLICATION }}" > ./domain-mysql/src/main/resources/application.yml
49+
uses: actions/upload-artifact@v2
50+
with:
51+
name: application.yml
52+
path: ./domain-mysql/src/main/resources/application.yml
53+
54+
- name: Set up domain-mongodb application.yml
55+
uses: microsoft/variable-substitution@v1
56+
with:
57+
files: ./domain-mongodb/src/main/resources/application.yml
58+
env:
59+
spring.data.mongodb.uri: ${{ secrets.MONGO_URI }}
60+
61+
- name: Set up domain-mongodb test application.yml
62+
uses: microsoft/variable-substitution@v1
63+
with:
64+
files: ./domain-mongodb/src/test/resources/application.yml
65+
env:
66+
spring.data.mongodb.uri: ${{ secrets.MONGO_TEST_URI }}
67+
68+
- name: Set up admin-api application.yml
69+
uses: microsoft/variable-substitution@v1
70+
with:
71+
files: ./admin-api/src/main/resources/application.yml
72+
env:
73+
spring.datasource.url: ${{ secrets.LOCAL_DB_URL }}
74+
spring.datasource.username: ${{ secrets.LOCAL_DB_HOST }}
75+
spring.datasource.password: ${{ secrets.LOCAL_DB_PASSWORD }}
76+
spring.security.jwt.secret: ${{ secrets.JWT_SECRET_KEY }}
77+
cloud.aws.s3.bucket: ${{ secrets.S3_BUCKET_NAME }}
78+
cloud.aws.region.static: ${{ secrets.S3_REGION }}
79+
cloud.aws.credentials.accessKey: ${{ secrets.AWS_ACCESS_KEY }}
80+
cloud.aws.credentials.secretKey: ${{ secrets.AWS_ACCESS_SECRET }}
81+
custom.domain.image.baseUrl: ${{ secrets.BASE_URL }}
82+
83+
- name: Set up admin-api test application.yml
84+
uses: microsoft/variable-substitution@v1
85+
with:
86+
files: ./admin-api/src/test/resources/application.yml
87+
env:
88+
spring.security.jwt.secret: ${{ secrets.JWT_SECRET_KEY }}
89+
spring.data.mongodb.uri: ${{ secrets.MONGO_TEST_URI }}
90+
custom.domain.image.baseUrl: ${{ secrets.BASE_URL }}
91+
cloud.aws.s3.bucket: ${{ secrets.S3_BUCKET_NAME }}
92+
cloud.aws.region.static: ${{ secrets.S3_REGION }}
93+
cloud.aws.credentials.accessKey: ${{ secrets.AWS_ACCESS_KEY }}
94+
cloud.aws.credentials.secretKey: ${{ secrets.AWS_ACCESS_SECRET }}
95+
96+
- name: Build member-api with Gradle
97+
run: |
98+
cd member-api
99+
chmod +x ./gradlew
100+
./gradlew clean build
101+
102+
- name: DockerHub Login
103+
uses: docker/login-action@v2
104+
with:
105+
username: ${{ secrets.DOCKERHUB_USERNAME }}
106+
password: ${{ secrets.DOCKERHUB_TOKEN }}
107+
108+
- name: admin-api Docker Image Build
109+
run: docker build -t ${{ secrets.DOCKERHUB_USERNAME }}/kernelsquare-dev ./admin-api
110+
111+
- name: admin-api DockerHub Push
112+
run: docker push ${{ secrets.DOCKERHUB_USERNAME }}/kernelsquare-dev
113+
114+
deploy:
115+
needs: if-dev-merge
116+
runs-on: ubuntu-latest
117+
steps:
118+
- name: Deploy and Run
119+
uses: appleboy/ssh-action@master
120+
with:
121+
host: ${{ secrets.DEV_IP }}
122+
username: ${{ secrets.EC2_USERNAME }}
123+
key: ${{ secrets.DEV_SSH_KEY }}
124+
script: |
125+
sudo docker stop prod1-dev || true
126+
sudo docker rm prod1-dev || true
127+
sudo docker pull ${{ secrets.DOCKERHUB_USERNAME }}/kernelsquare-dev
128+
sudo docker run --name prod1-dev -d -p 8501:8501 ${{ secrets.DOCKERHUB_USERNAME }}/kernelsquare-dev
129+
sudo docker system prune -f

.github/workflows/ci.yml

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,6 @@ jobs:
1111
build:
1212
runs-on: ubuntu-latest
1313

14-
services:
15-
redis:
16-
image: redis:latest
17-
ports:
18-
- 6379:6379
19-
2014
steps:
2115
- name: Checkout
2216
uses: actions/checkout@v3
@@ -49,13 +43,6 @@ jobs:
4943
env:
5044
spring.data.mongodb.uri: ${{ secrets.MONGO_TEST_URI }}
5145

52-
- name: Set up domain-mysql test application.yml
53-
uses: microsoft/variable-substitution@v1
54-
with:
55-
files: ./domain-mysql/src/test/resources/application.yml
56-
env:
57-
spring.security.jwt.secret: ${{ secrets.JWT_SECRET_KEY }}
58-
5946
- name: Set up member-api test application.yml
6047
uses: microsoft/variable-substitution@v1
6148
with:
@@ -75,13 +62,5 @@ jobs:
7562
- name: Run chmod to make gradlew executable
7663
run: chmod +x ./gradlew
7764

78-
- name: Docker Compose For Test
79-
run: |
80-
touch docker-compose.yml
81-
echo "${{ secrets.CI_DOCKER_COMPOSE }}" > docker-compose.yml
82-
echo docker-compose.yml
83-
docker-compose up -d
84-
docker ps
85-
8665
- name: Test with Gradle
8766
run: ./gradlew test

domain-mysql/src/test/resources/application.yml

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,6 @@ spring:
1111
flyway:
1212
enabled: false
1313

14-
security:
15-
jwt:
16-
header: Authorization
17-
secret: ${JWT_SECRET_KEY}
18-
access-token-validity-in-seconds: 3600 # 1시간
19-
refresh-token-validity-in-seconds: 1_209_600 # 2주
20-
2114
jpa:
2215
hibernate:
2316
ddl-auto: create
@@ -36,14 +29,6 @@ spring:
3629
init:
3730
mode: never
3831

39-
jackson:
40-
property-naming-strategy: SNAKE_CASE
41-
42-
data:
43-
redis:
44-
host: localhost
45-
port: 6380
46-
4732
logging.level:
4833
org.hibernate.SQL: debug
4934
# org.hibernate.type: trace

0 commit comments

Comments
 (0)