Skip to content

Update main.yml

Update main.yml #23

Workflow file for this run

name: Deploy Spring Boot to EC2
on:
push:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Set up JDK
uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: '17'
- name: make application.yml
run: |
mkdir ./src/main/resources
cd ./src/main/resources
touch ./application.yml
touch ./application-dev.yml
echo "${{ secrets.APPLICATION }}" > ./application.yml
echo "${{ secrets.APPLICATION_DEV }}" > ./application-dev.yml
shell: bash
- name: Build with Gradle
run: |
./gradlew clean
./gradlew bootjar
- name: Archive JAR file
uses: actions/upload-artifact@v3
with:
name: springboot-app
path: build/libs/*.jar
deploy_to_ec2:
runs-on: ubuntu-latest
needs: build
steps:
- name: Download JAR file
uses: actions/download-artifact@v3
with:
name: springboot-app
path: ./app.jar # 다운로드된 JAR 파일 경로를 app.jar로 설정
- name: Setup SSH Key
env:
EC2_SSH_KEY: ${{ secrets.EC2_KEY }}
run: |
echo "$EC2_SSH_KEY" > private_key.pem
chmod 600 private_key.pem
- name: Add known host
run: |
mkdir -p ~/.ssh
ssh-keyscan ${{ secrets.EC2_HOST }} >> ~/.ssh/known_hosts
- name: Deploy JAR to EC2
env:
EC2_USER: ${{ secrets.EC2_USER }}
EC2_HOST: ${{ secrets.EC2_HOST }}
EC2_DEPLOY_PATH: ${{ secrets.EC2_DEPLOY_PATH }}
run: |
pwd
ls
ls -la app.jar
# chmod 644 app.jar
scp -i private_key.pem -o StrictHostKeyChecking=no ./app.jar/*.jar $EC2_USER@$EC2_HOST:$EC2_DEPLOY_PATH
- name: Restart Spring Boot Application
env:
EC2_USER: ${{ secrets.EC2_USER }}
EC2_HOST: ${{ secrets.EC2_HOST }}
EC2_DEPLOY_PATH: ${{ secrets.EC2_DEPLOY_PATH }}
run: |
ssh -i private_key.pem $EC2_USER@$EC2_HOST << 'EOF'
pkill -f 'java -jar $EC2_DEPLOY_PATH/app.jar' || true # 기존 애플리케이션 종료
nohup java -jar $EC2_DEPLOY_PATH/app.jar > app.log 2>&1 &
EOF