Merge pull request #87 from SWYP-mingling/fix/SW-92-async-midpoint-ca… #33
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: Test Deploy to NCP | |
| on: | |
| push: | |
| branches: [ "develop" ] | |
| jobs: | |
| deploy: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v3 | |
| # 1. 빌드 | |
| - name: Set up JDK 21 | |
| uses: actions/setup-java@v3 | |
| with: | |
| java-version: '21' | |
| distribution: 'temurin' | |
| - name: Setup Gradle | |
| uses: gradle/actions/setup-gradle@v3 | |
| - name: Build with Gradle | |
| run: ./gradlew clean build -x test | |
| # 2. Docker Buildx 설정 | |
| - name: Set up Docker Buildx | |
| uses: docker/setup-buildx-action@v3 | |
| # 3. NCR 로그인 | |
| - name: Login to NCR | |
| uses: docker/login-action@v3 | |
| with: | |
| registry: ${{ secrets.NCR_ENDPOINT }} | |
| username: ${{ secrets.NCP_ACCESS_KEY }} | |
| password: ${{ secrets.NCP_SECRET_KEY }} | |
| # 4. Build and Push with Cache | |
| - name: Build and Push to NCR | |
| uses: docker/build-push-action@v5 | |
| with: | |
| context: . | |
| push: true | |
| tags: ${{ secrets.NCR_ENDPOINT }}/mingling-app:test | |
| cache-from: type=gha | |
| cache-to: type=gha,mode=max | |
| # 5. NCP 서버 접속 및 앱 교체 | |
| - name: SSH Deploy & Health Check | |
| uses: appleboy/ssh-action@master | |
| with: | |
| host: ${{ secrets.TEST_NCP_SERVER_IP }} | |
| username: root | |
| key: ${{ secrets.SSH_PRIVATE_KEY }} | |
| script: | | |
| docker login ${{ secrets.NCR_ENDPOINT }} -u ${{ secrets.NCP_ACCESS_KEY }} -p ${{ secrets.NCP_SECRET_KEY }} | |
| docker stop spring-app || true | |
| docker rm spring-app || true | |
| docker pull ${{ secrets.NCR_ENDPOINT }}/mingling-app:test | |
| docker run -d --name spring-app \ | |
| -p 8080:8080 \ | |
| -e SPRING_PROFILES_ACTIVE=test \ | |
| -e SPRING_DATASOURCE_URL="${{ secrets.TEST_DB_URL }}" \ | |
| -e SPRING_DATASOURCE_USERNAME="${{ secrets.TEST_DB_USERNAME }}" \ | |
| -e SPRING_DATASOURCE_PASSWORD="${{ secrets.TEST_DB_PASSWORD }}" \ | |
| -e SPRING_DATA_REDIS_HOST="${{ secrets.TEST_REDIS_HOST }}" \ | |
| -e SPRING_SERVER_URL="${{ secrets.TEST_SPRING_SERVER_URL }}" \ | |
| -e KAKAO_REST_API_KEY="${{ secrets.KAKAO_REST_API_KEY }}" \ | |
| -e SEOUL_METRO_API_KEY="${{ secrets.SEOUL_METRO_API_KEY }}" \ | |
| ${{ secrets.NCR_ENDPOINT }}/mingling-app:test | |
| echo "Health check starting..." | |
| for i in {1..20}; do | |
| STATUS=$(curl -s -o /dev/null -w "%{http_code}" http://localhost:8080/actuator/health) | |
| if [ $STATUS -eq 200 ]; then | |
| echo "Health check success! (Status: $STATUS)" | |
| docker image prune -f | |
| exit 0 | |
| fi | |
| echo "Waiting for app to start... (Status: $STATUS, Retry: $i/20)" | |
| sleep 5 | |
| done | |
| echo "Health check failed! Check logs." | |
| docker logs spring-app | |
| exit 1 |