Skip to content

MATE-87-1 : [FIX] deploy.yml 변경 (#80) #16

MATE-87-1 : [FIX] deploy.yml 변경 (#80)

MATE-87-1 : [FIX] deploy.yml 변경 (#80) #16

Workflow file for this run

# GitHub Actions 워크플로우 이름 정의
name: Deploy To EC2
# 워크플로우 트리거 설정
# develop 브랜치에 push가 발생할 때만 실행
on:
push:
branches:
- develop
jobs:
# 배포 작업 정의
deploy:
runs-on: ubuntu-latest # 실행 환경 지정
# GitHub Actions에서 사용할 환경 변수 설정
# GitHub Secrets에서 값을 가져옴
env:
NAVER_CLIENT_ID: ${{ secrets.NAVER_CLIENT_ID }}
NAVER_REDIRECT_URI: ${{ secrets.NAVER_REDIRECT_URI }}
NAVER_CLIENT_SECRET: ${{ secrets.NAVER_CLIENT_SECRET }}
JWT_SECRET_KEY: ${{ secrets.JWT_SECRET_KEY }}
OPENWEATHER_API_KEY: ${{ secrets.OPENWEATHER_API_KEY }}
steps:
# 레포지토리 코드를 체크아웃
- uses: actions/checkout@v3
# JDK 17 설정
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
# gradlew 파일에 실행 권한 부여
- name: Grant execute permission for gradlew
run: chmod +x gradlew
# Gradle을 사용하여 프로젝트 빌드
- name: Build with Gradle
run: ./gradlew clean build
# 빌드된 JAR 파일을 EC2 서버로 전송
- name: Copy jar file to EC2
uses: appleboy/scp-action@master
with:
host: ${{ secrets.EC2_HOST }}
username: ${{ secrets.EC2_USERNAME }}
key: ${{ secrets.EC2_PRIVATE_KEY }}
source: "build/libs/*SNAPSHOT.jar" # 전송할 JAR 파일 경로
target: "/home/ubuntu/WEB1_2_PitchingMate_BE" # EC2의 대상 경로
strip_components: 2 # source 경로에서 상위 2개 디렉토리 제거
# EC2 서버에 SSH로 접속하여 배포 스크립트 실행
- name: SSH로 EC2에 접속하기
uses: appleboy/[email protected]
env:
APPLICATION_PROPERTIES: ${{ secrets.APPLICATION_PROPERTIES }}
with:
host: ${{ secrets.EC2_HOST }}
username: ${{ secrets.EC2_USERNAME }}
key: ${{ secrets.EC2_PRIVATE_KEY }}
envs: APPLICATION_PROPERTIES # EC2에 전달할 환경 변수
script_stop: true # 스크립트 실행 중 오류 발생시 중단
script: | # EC2에서 실행할 명령어들
cd /home/ubuntu/WEB1_2_PitchingMate_BE # 프로젝트 디렉토리로 이동
git pull origin develop # 최신 코드 가져오기
echo "$APPLICATION_PROPERTIES" > src/main/resources/application-dev.yml # 설정 파일 생성
sudo fuser -k -n tcp 8080 || true # 8080 포트 사용중인 프로세스 종료
nohup java -jar mate-0.0.1-SNAPSHOT.jar > ./output.log 2>&1 &