Feat : 디렉토리 구조 확인 추가 #188
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 OCI | |
| on: | |
| push: | |
| branches: ["main"] | |
| permissions: | |
| contents: read | |
| jobs: | |
| deploy: | |
| runs-on: ubuntu-latest | |
| steps: | |
| # -------------------------- | |
| # 1) Checkout | |
| # -------------------------- | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| # -------------------------- | |
| # 2) JDK 설정 | |
| # -------------------------- | |
| - name: Set up JDK 17 | |
| uses: actions/setup-java@v4 | |
| with: | |
| java-version: '17' | |
| distribution: 'temurin' | |
| # -------------------------- | |
| # 3) 빌드 전 리소스 파일 생성 | |
| # -------------------------- | |
| - name: Create FCM key file | |
| run: | | |
| mkdir -p src/main/resources | |
| echo '${{ secrets.FCM_SERVICE_ACCOUNT }}' > src/main/resources/firebase-adminsdk.json | |
| - name: Create .env file | |
| shell: bash | |
| run: printf "%s" "${{ secrets.ENV_FILE }}" > .env | |
| # -------------------------- | |
| # 4) Gradle 빌드 | |
| # -------------------------- | |
| - name: Build JAR | |
| run: | | |
| chmod +x ./gradlew | |
| ./gradlew clean bootJar -x test | |
| cp $(ls build/libs/*.jar | grep -v plain | head -n 1) app.jar | |
| # -------------------------- | |
| # 5) Docker 이미지 빌드 → tar 저장 | |
| # -------------------------- | |
| - name: Build Docker image | |
| run: | | |
| docker build -t tinybite-server:latest . | |
| docker save tinybite-server:latest | gzip > tinybite-server.tar.gz | |
| # -------------------------- | |
| # 6) SCP로 서버에 전송 | |
| # -------------------------- | |
| - name: Copy files to OCI server | |
| uses: appleboy/scp-action@master | |
| with: | |
| host: ${{ secrets.SSH_HOST }} | |
| username: ${{ secrets.SSH_USERNAME }} | |
| key: ${{ secrets.SSH_KEY }} | |
| port: 22 | |
| source: "tinybite-server.tar.gz,.env,docker-compose.yml,nginx/" | |
| target: "/home/ubuntu/tinybite/" | |
| # -------------------------- | |
| # 7) 서버에서 이미지 load & 실행 | |
| # -------------------------- | |
| - name: Deploy on OCI server | |
| uses: appleboy/ssh-action@master | |
| with: | |
| host: ${{ secrets.SSH_HOST }} | |
| username: ${{ secrets.SSH_USERNAME }} | |
| key: ${{ secrets.SSH_KEY }} | |
| port: 22 | |
| script: | | |
| set -e | |
| echo "=== 디렉토리 구조 확인 ===" | |
| find /home/ubuntu/tinybite -type f | sort | |
| cd /home/ubuntu/tinybite | |
| echo "📦 이미지 로드 중..." | |
| sudo docker load < tinybite-server.tar.gz | |
| echo "🚀 컨테이너 재시작..." | |
| sudo docker compose -f docker/docker-compose.yml up -d --remove-orphans | |
| echo "🧹 정리 중..." | |
| sudo rm -f tinybite-server.tar.gz | |
| sudo docker image prune -f | |
| echo "✅ 배포 완료" |