Skip to content

Merge pull request #91 from SWYP-mingling/feature/SW-95-categoryGroup… #36

Merge pull request #91 from SWYP-mingling/feature/SW-95-categoryGroup…

Merge pull request #91 from SWYP-mingling/feature/SW-95-categoryGroup… #36

Workflow file for this run

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