Skip to content

deploy

deploy #13

Workflow file for this run

name: together-server CI/CD
on:
push:
branches:
- main
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
# 1. GitHub λ ˆν¬μ§€ν† λ¦¬ μ½”λ“œ 체크아웃
- name: Checkout repository
uses: actions/checkout@v2
# 2. GitHub Secretsλ‘œλΆ€ν„° .env 파일 생성
- name: Create .env files
run: echo "${{ secrets.ENV_FILE_CONTENT }}" > .env
# 3. JDK 17 μ„€μΉ˜
- name: Set up JDK 17
uses: actions/setup-java@v2
with:
distribution: 'temurin'
java-version: '17'
# 4. .env 파일 쑴재 μ—¬λΆ€ 및 λ‚΄μš© 좜λ ₯
- name: Check .env file
run: |
echo "[πŸ” .env 파일 확인]"
ls -al .env
echo ""
echo "[πŸ“„ .env 파일 λ‚΄μš©]"
cat .env
# 5. Gradle λΉŒλ“œ μ‹€ν–‰ (ν…ŒμŠ€νŠΈλŠ” μ œμ™Έ)
- name: πŸ› οΈ Build Spring Boot App
run: |
cd backend
./gradlew clean build -x test
# 6. λΉŒλ“œλœ .jar 파일 λͺ©λ‘ 좜λ ₯
- name: List build artifacts
run: ls -al backend/build/libs
# 7. EC2둜 .jar와 .env 파일 μ—…λ‘œλ“œ (폴더 ꡬ쑰 제거)
- name: Upload Jar and .env to EC2
uses: appleboy/[email protected]
with:
host: ${{ secrets.EC2_HOST }}
username: ${{ secrets.EC2_USER }}
key: ${{ secrets.EC2_SSH_KEY }}
source: |
./backend/build/libs/backend-0.0.1-SNAPSHOT.jar
./.env
target: ~/deploy/
strip_components: 1 # 디렉토리 μ œκ±°ν•˜κ³  파일만 ~/deploy에 μ—…λ‘œλ“œ
- name: Run Spring Boot App on EC2
uses: appleboy/[email protected]
with:
host: ${{ secrets.EC2_HOST }}
username: ${{ secrets.EC2_USER }}
key: ${{ secrets.EC2_SSH_KEY }}
script: |
echo "[MySQL, Redis μž¬μ‹œμž‘]"
sudo systemctl restart mysql
sudo systemctl restart redis
echo "[κΈ°μ‘΄ Spring Boot ν”„λ‘œμ„ΈμŠ€ μ’…λ£Œ μ‹œλ„]"
pkill -f 'java -jar' || true
cd ~/deploy
nohup env $(cat .env | xargs) java -jar backend-0.0.1-SNAPSHOT.jar > app.log 2>&1 &
echo "[μ‹€ν–‰ μ™„λ£Œ! 둜그: tail -f ~/deploy/app.log]"