Skip to content

Commit

Permalink
Merge pull request #48 from Korea-Certified-Store/feature/set-prod
Browse files Browse the repository at this point in the history
Feature/set prod
  • Loading branch information
jinhoon227 authored Jan 16, 2024
2 parents 01d7d50 + 16df161 commit 36fd342
Show file tree
Hide file tree
Showing 3 changed files with 102 additions and 1 deletion.
86 changes: 86 additions & 0 deletions .github/workflows/action-production-cd.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
name: action-production-cd

# 언제 이 파일의 내용이 실행될 것인지 정의
on:
push:
branches:
- main

# 코드의 내용을 이 파일을 실행하여 action을 수행하는 주체(Github Actions에서 사용하는 VM)가 읽을 수 있도록 권한을 설정
permissions:
contents: read

# 실제 실행될 내용들을 정의합니다.
jobs:
build:
runs-on: ubuntu-latest # ubuntu 최신 버전에서 script를 실행
steps:
# 지정한 저장소(현재 REPO)에서 코드를 워크플로우 환경으로 가져오도록 하는 github action
# submodule 을 사용하기 위한 설정을 추가
- name: Checkout repository
uses: actions/checkout@v3
with:
token: ${{secrets.ACTION_TOKEN}}
submodules: true

# open jdk 17 버전 환경을 세팅
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: "corretto"

# 캐시를 사용하기위해 buildx 를 사용
- name: Setup docker buildx
uses: docker/setup-buildx-action@v2

# gradle을 통해 소스를 빌드.
- name: Build with gradle
run: |
chmod +x ./gradlew
./gradlew clean build -x test
# 도커 컴포즈 설정 파일 서버로 전달
- name: Send docker-compose.yml
uses: appleboy/scp-action@master
with:
username: ${{ secrets.KCS_USERNAME_PROD }}
host: ${{ secrets.KCS_HOST_PROD }}
key: ${{ secrets.KCS_KEY_PROD }}
source: "src/main/resources/backend-submodule/docker-compose.yml"
target: "/home/g22203/"

# Docker hub 로그인
- name: Login to dockerHub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKER_USERNAME}}
password: ${{ secrets.DOCKER_TOKEN}}

# Docker Hub 에 푸시
- name: Build and push
uses: docker/build-push-action@v4
with:
context: .
file: ./Dockerfile
push: true
tags: ${{ secrets.DOCKER_REPOSITORY_PROD }}:latest
cache-from: type=gha
cache-to: type=gha, mode=max

# appleboy/ssh-action@master 액션을 사용하여 지정한 서버에 ssh로 접속하고, script를 실행합니다.
# 실행 시, docker-compose를 사용합니다.
- name: Deploy to server
uses: appleboy/ssh-action@master
with:
username: ${{ secrets.KCS_USERNAME_PROD }}
host: ${{ secrets.KCS_HOST_PROD }}
key: ${{ secrets.KCS_KEY_PROD }}
script: |
docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }}
sudo docker pull {{ secrets.DOCKER_REPOSITORY_PROD }}:latest
docker-compose -f docker-compose-dev.yml down
docker rmi $(docker images -q)
cp -f ./src/main/resources/backend-submodule/docker-compose.yml .
rm -r src
docker-compose -f docker-compose.yml up -d
15 changes: 15 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
FROM openjdk:17-alpine as builder
WORKDIR app
ARG JAR_FILE=build/libs/*.jar
COPY ${JAR_FILE} app.jar
RUN java -Djarmode=layertools -jar app.jar extract

FROM openjdk:17-alpine
WORKDIR app
COPY --from=builder app/dependencies/ ./
COPY --from=builder app/spring-boot-loader/ ./
COPY --from=builder app/snapshot-dependencies/ ./
COPY --from=builder app/application/ ./
COPY src/main/resources/data/ ./src/main/resources/data/

ENTRYPOINT ["java", "-Dspring.profiles.active=${ACTIVE_SPRING_PROFILE}", "-Duser.timezone=Asia/Seoul", "org.springframework.boot.loader.launch.JarLauncher"]
2 changes: 1 addition & 1 deletion src/main/resources/backend-submodule

0 comments on commit 36fd342

Please sign in to comment.