action #1
This file contains hidden or 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
name: Deploy to EC2 | |
on: | |
push: | |
branches: [ main ] | |
jobs: | |
build: | |
runs-on: self-hosted | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up JDK | |
uses: actions/setup-java@v3 | |
with: | |
java-version: '17' # 프로젝트에 맞는 Java 버전으로 변경하세요 | |
distribution: 'temurin' | |
- name: Build with Maven # Maven 사용 시 | |
run: mvn -B package --file pom.xml | |
# 또는 Gradle 사용 시 | |
# run: ./gradlew build | |
- name: Copy JAR file to EC2 | |
uses: appleboy/scp-action@master | |
with: | |
host: ${{ secrets.EC2_HOST }} | |
username: ${{ secrets.EC2_USERNAME }} | |
key: ${{ secrets.EC2_SSH_KEY }} | |
source: "target/*.jar" # Maven 경로, Gradle은 보통 build/libs/*.jar | |
target: "~/app" | |
- name: SSH into EC2 and deploy | |
uses: appleboy/ssh-action@master | |
with: | |
host: ${{ secrets.EC2_HOST }} | |
username: ${{ secrets.EC2_USERNAME }} | |
key: ${{ secrets.EC2_SSH_KEY }} | |
script: | | |
# 실행 중인 Java 프로세스 찾아서 종료 | |
pid=$(ps -ef | grep java | grep -v grep | awk '{print $2}') | |
if [ -n "$pid" ]; then | |
echo "Stopping Java process with PID: $pid" | |
kill $pid | |
sleep 5 | |
fi | |
# 새 JAR 파일 실행 | |
cd ~/app | |
nohup java -jar target/*.jar > app.log 2>&1 & | |
echo "Application deployed successfully!" |