-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Browse the repository at this point in the history
[#61] Chore: upload-schedule-application 모듈 배포
- Loading branch information
Showing
5 changed files
with
141 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,73 @@ | ||
name: Schedule-Application CI/CD | ||
|
||
on: | ||
push: | ||
branches: | ||
- chore/#61 | ||
|
||
paths: | ||
- 'application/upload-schedule-application/**' | ||
jobs: | ||
deploy: | ||
runs-on: ubuntu-latest | ||
|
||
steps: | ||
- uses: actions/checkout@v3 | ||
|
||
- name: Set up JDK 17 | ||
uses: actions/setup-java@v3 | ||
with: | ||
java-version: '17' | ||
distribution: 'temurin' | ||
|
||
- name: ENV 파일 생성 | ||
run: | | ||
touch .env | ||
echo "$ENV" > .env | ||
env: | ||
ENV: ${{ secrets.ENV }} | ||
shell: bash | ||
|
||
- name: Gradle 권한 부여 | ||
run: chmod +x gradlew | ||
|
||
- name: Gradle로 빌드 실행 | ||
run: ./gradlew :application:upload-schedule-application:bootJar | ||
|
||
# 배포에 필요한 여러 설정 파일과 프로젝트 빌드파일을 zip 파일로 모아줍니다. | ||
- name: zip file 생성 | ||
run: | | ||
mkdir deploy | ||
cp .env ./deploy/ | ||
cp ./application/upload-schedule-application/docker/Dockerfile ./deploy/ | ||
cp ./application/upload-schedule-application/docker/docker-compose.minipc.yml ./deploy/ | ||
cp ./application/upload-schedule-application/scripts/minipc-docker-deploy.sh ./deploy/ | ||
cp ./application/upload-schedule-application/build/libs/*.jar ./deploy/ | ||
chmod +x ./deploy/minipc-docker-deploy.sh | ||
zip -r -qq -j ./yapp-upload-schedule-application.zip ./deploy | ||
# ZIP 파일 전송 | ||
- name: Transfer ZIP file use SCP | ||
uses: appleboy/scp-action@master | ||
with: | ||
username: ${{ secrets.SSH_USERNAME }} | ||
host: ${{ secrets.SSH_HOST }} | ||
key: ${{ secrets.SSH_KEY }} | ||
port: ${{ secrets.SSH_PORT }} | ||
source: "./yapp-upload-schedule-application.zip" | ||
target: "/home/hong/app/yapp-upload-schedule-application" | ||
|
||
# SSH 연결 후 배포 스크립트 실행 | ||
- name: Execute SSH command on remote server | ||
uses: appleboy/ssh-action@master | ||
with: | ||
host: ${{ secrets.SSH_HOST }} | ||
username: ${{ secrets.SSH_USERNAME }} | ||
key: ${{ secrets.SSH_KEY }} | ||
port: ${{ secrets.SSH_PORT }} | ||
script: | | ||
REMOTE_DIR="/home/hong/app/yapp-upload-schedule-application" | ||
cd $REMOTE_DIR | ||
unzip -o yapp-upload-schedule-application.zip | ||
./minipc-docker-deploy.sh | ||
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
### Docker 이미지를 생성할 때 기반이 되는 베이스 이미지를 설정한다. | ||
FROM openjdk:17 | ||
### Dockerfile 내에서 사용할 변수 JAR_FILE을 정의한다. | ||
#WORKDIR /app | ||
#ARG JAR_FILE=/build/libs/animal-meeting-blue-green-app.jar | ||
ARG JAR_FILE=/yapp-upload-schedule-application.jar | ||
### JAR_FILE 경로에 해당하는 파일을 Docker 이미지 내부로 복사한다. | ||
COPY ${JAR_FILE} yapp-upload-schedule-application.jar | ||
### Docker 컨테이너가 시작될 때 실행할 명령을 지정한다. | ||
ENTRYPOINT ["java","-jar","-Dspring.profiles.active=prod", "/yapp-upload-schedule-application.jar"] |
14 changes: 14 additions & 0 deletions
14
application/upload-schedule-application/docker/docker-compose.minipc.yml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
services: | ||
animal-meeting-app: | ||
image: yapp-upload-schedule-application:latest | ||
container_name: yapp-upload-schedule-application-container | ||
networks: | ||
- pricewagon-network | ||
build: | ||
context: . | ||
dockerfile: Dockerfile | ||
env_file: | ||
- .env | ||
networks: | ||
pricewagon-network: | ||
external: true # 이미 존재하는 네트워크를 사용 |
43 changes: 43 additions & 0 deletions
43
application/upload-schedule-application/scripts/minipc-docker-deploy.sh
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
#!/bin/bash | ||
|
||
# 배포 로그 파일 설정 | ||
DEPLOY_LOG="/home/hong/app/yapp-upload-schedule-application/deploy.log" | ||
COMPOSE_FILE="docker-compose.minipc.yml" | ||
|
||
# 현재 디렉토리 이동 | ||
cd /home/hong/app/yapp-upload-schedule-application | ||
|
||
# 새로운 Docker 이미지 빌드 | ||
echo "Docker 이미지 빌드 시작 ..." >> $DEPLOY_LOG | ||
docker-compose -f $COMPOSE_FILE build >> $DEPLOY_LOG 2>&1 | ||
|
||
if [ $? -ne 0 ]; then | ||
echo "Docker 이미지 빌드 실패!" >> $DEPLOY_LOG | ||
exit 1 | ||
fi | ||
|
||
echo "Docker 이미지 빌드 완료!" >> $DEPLOY_LOG | ||
|
||
# 기존 컨테이너 중지 및 삭제 (존재 여부 확인 후 중지/삭제) | ||
if [ "$(docker ps -a -q -f name=yapp-upload-schedule-application-container)" ]; then | ||
echo "기존 컨테이너 종료 및 삭제 ..." >> $DEPLOY_LOG | ||
docker stop -f $COMPOSE_FILE yapp-upload-schedule-application-container >> $DEPLOY_LOG 2>&1 | ||
docker rm -f $COMPOSE_FILE yapp-upload-schedule-application-container --force >> $DEPLOY_LOG 2>&1 | ||
if [ $? -ne 0 ]; then | ||
echo "기존 컨테이너 종료 및 삭제 실패!" >> $DEPLOY_LOG | ||
exit 1 | ||
fi | ||
else | ||
echo "삭제할 기존 컨테이너가 없습니다." >> $DEPLOY_LOG | ||
fi | ||
|
||
# 새로운 컨테이너 실행 | ||
echo "Docker 컨테이너 실행 시작 ..." >> $DEPLOY_LOG | ||
docker-compose -f $COMPOSE_FILE up -d >> $DEPLOY_LOG 2>&1 | ||
|
||
if [ $? -ne 0 ]; then | ||
echo "Docker 컨테이너 실행 실패!" >> $DEPLOY_LOG | ||
exit 1 | ||
fi | ||
|
||
echo "### Docker 컨테이너 실행 완료!" >> $DEPLOY_LOG |