Skip to content

Merge pull request #103 from Central-MakeUs/dev #119

Merge pull request #103 from Central-MakeUs/dev

Merge pull request #103 from Central-MakeUs/dev #119

name: yakssok-deploy
on:
push:
branches: [ "main" ]
paths:
- "yakssok/**"
- "docker-compose.yml"
- ".github/workflows/yakssok-deploy.yml"
permissions:
contents: read
jobs:
build-and-deploy:
runs-on: ubuntu-latest
env:
IMAGE_TAG: ${{ github.sha }}
steps:
- name: 🧾 Checkout
uses: actions/checkout@v3
- name: 🔧 Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
- name: 📦 Build and Push Docker Image
run: |
cd yakssok
echo "🔐 Create application.yml"
mkdir -p src/main/resources
echo "${{ secrets.PROD_YML }}" > src/main/resources/application.yml
echo "🔐 Create firebase key json"
echo '${{ secrets.FIREBASE_KEY_JSON }}' > src/main/resources/firebase-service-account.json
echo "🏗️ Build Spring Boot"
chmod +x ./gradlew
./gradlew build -x test
echo "🐳 Docker Build & Push"
docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }}
docker build -t yakssok/yakssok:${IMAGE_TAG} .
docker push yakssok/yakssok:${IMAGE_TAG}
- name: 🚀 Deploy to EC2
uses: appleboy/ssh-action@v1.0.3
env:
GITHUB_SHA: ${{ github.sha }}
with:
host: ${{ secrets.EC2_HOST }}
username: ${{ secrets.EC2_USERNAME }}
key: ${{ secrets.EC2_KEY }}
envs: GITHUB_SHA
script: |
echo "📁 이동: docker-compose.yml이 있는 디렉토리로"
cd ~/Yakssok_Server
echo "🛠️ docker-compose.yml에 태그 반영"
sed -i 's|image: yakssok/yakssok:.*|image: yakssok/yakssok:'"$GITHUB_SHA"'|' docker-compose.yml
echo "🐳 Docker 로그인"
docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }}
echo "📦 이미지 최신 Pull"
docker compose pull app
echo "🔄 컨테이너 재시작"
docker rm -f yakssok-app || true
docker compose down --remove-orphans
docker compose up -d --force-recreate
echo "🧹 이미지 정리"
docker image prune -a -f