Skip to content

Commit

Permalink
chore: prod cd 구축
Browse files Browse the repository at this point in the history
  • Loading branch information
choihuk committed Dec 8, 2023
1 parent 44b1c1b commit 6d769ad
Show file tree
Hide file tree
Showing 3 changed files with 104 additions and 0 deletions.
70 changes: 70 additions & 0 deletions .github/workflows/prod_cd.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
name: main branch cd

on:
push:
branches:
- "main"

env:
MAIN_YML_PATH: ./src/main/resources/application.yml
PROD_YML_PATH: ./src/main/resources/application-prod.yml

jobs:
build-and-push-image:
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- name: Checkout repository
uses: actions/checkout@v3

- name: application.yml setting
uses: microsoft/variable-substitution@v1
with:
files: ${{ env.MAIN_YML_PATH }}
env:
coolsms.api.key: ${{ secrets.COOLSMS_API_KEY }}
coolsms.api.secret: ${{ secrets.COOLSMS_API_SECRET }}
coolsms.api.from-number: ${{ secrets.COOLSMS_API_FROM_NUMBER }}

- name: application-prod.yml setting
uses: microsoft/variable-substitution@v1
with:
files: ${{ env.PROD_YML_PATH }}
env:
spring.datasource.url: ${{ secrets.RDS_URL }}
spring.datasource.username: ${{ secrets.PROD_DB_USERNAME }}
spring.datasource.password: ${{ secrets.PROD_DB_PASSWORD }}

- name: Cache Gradle packages
uses: actions/cache@v1
with:
path: ~/.gradle/caches
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }}
restore-keys: ${{ runner.os }}-gradle

- name: Grant execute permission for gradlew
run: chmod +x gradlew

- name: Clean and Build with Gradle
run: ./gradlew clean build -x test

- name: Docker build & push
run: |
docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }}
docker build -t ${{ secrets.DOCKER_USERNAME }}/insurance_system_prod .
docker push ${{ secrets.DOCKER_USERNAME }}/insurance_system_prod
- name: Deploy EC2
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.EC2_HOST_IP }}
username: ubuntu
key: ${{ secrets.EC2_KEY }}
port: 22
script: |
docker stop insurance_system_prod
docker rm insurance_system_prod
docker rmi choihyeok/insurance_system_prod
docker pull choihyeok/insurance_system_prod
docker run -d -p 80:8080 --name insurance_system_prod choihyeok/insurance_system_prod
22 changes: 22 additions & 0 deletions Dockerfile_prod
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# 테스트 서버 빌드 스크립트
# jar 파일 빌드
FROM eclipse-temurin:17 as builder

COPY gradlew .
COPY gradle gradle
COPY build.gradle .
COPY settings.gradle .
COPY src src
RUN chmod +x ./gradlew
RUN ./gradlew bootjar

# jar 실행
FROM eclipse-temurin:17-jre as runtime

COPY --from=builder build/libs/*.jar app.jar

ENV PROFILE prod

EXPOSE 8080

ENTRYPOINT ["java", "-Dspring.profiles.active=${PROFILE}", "-jar", "/app.jar"]
12 changes: 12 additions & 0 deletions src/main/resources/application-prod.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url:
username:
password:

jpa:
database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
open-in-view: false
hibernate:
ddl-auto: validate

0 comments on commit 6d769ad

Please sign in to comment.