Update main.yml #23
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
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 |