Feat: traceId 기반 요청 및 repository 성능 로그 로깅 추가 #15
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: Auto Deploy | |
| on: | |
| push: | |
| branches: | |
| - dev-server | |
| jobs: | |
| deploy: | |
| runs-on: ubuntu-latest | |
| steps: | |
| # 0. 작업 시작 시 실패 정보를 기록할 파일 초기화 | |
| - name: Initialize failure log | |
| run: echo "Deployment started" > $GITHUB_WORKSPACE/failure.log | |
| # 1. 저장소 체크아웃 | |
| - name: Checkout Repository | |
| uses: actions/checkout@v3 | |
| # 2. JDK 17 환경 설정 (Jenkins 파일의 'OpenJDK-17.0.13'과 동일) | |
| - name: Set up JDK | |
| uses: actions/setup-java@v3 | |
| with: | |
| distribution: 'temurin' | |
| java-version: '17.0.13' | |
| # 3-2. 경로 만들기 및 json 파일 넣기 | |
| - name: Setup Application Configuration Files | |
| run: | | |
| chmod -R 777 back/photorize/src/main/resources | |
| mkdir -p back/photorize/src/main/resources/firebase | |
| # 3-1. firebase json 만들기 | |
| - name: create-json | |
| id: create-json | |
| uses: jsdaniell/create-json@v1.2.3 | |
| with: | |
| name: "photorize-firebase-adminsdk-vx10f-50340d63d9.json" | |
| json: ${{ secrets.BACKEND_FIREBASE_FILE }} | |
| dir: 'back/photorize/src/main/resources/firebase/' | |
| # 4. Spring Boot 애플리케이션 빌드 (Gradle) | |
| - name: Build Spring Boot Application | |
| working-directory: back/photorize | |
| run: | | |
| chmod +x ./gradlew | |
| # ./gradlew clean build -x test 2>&1 | tee -a $GITHUB_WORKSPACE/failure.log | |
| # 디버깅 단계 추가 | |
| - name: Verify FCM Config File | |
| run: cat back/photorize/src/main/resources/firebase/photorize-firebase-adminsdk-vx10f-50340d63d9.json | |
| # 5. Docker 이미지 빌드 (Dockerfile은 back/photorize/ 내에 존재한다고 가정) | |
| - name: Build Docker Image | |
| working-directory: back/photorize | |
| run: | | |
| docker build -t yangshutter/photorize-server:2.0.0 -f Dockerfile . 2>&1 | tee -a $GITHUB_WORKSPACE/failure.log | |
| # 6. Docker Hub 로그인 (Docker Hub 자격증명을 secrets에 등록) | |
| - name: Docker Hub Login | |
| uses: docker/login-action@v2 | |
| with: | |
| username: ${{ secrets.DOCKERHUB_USERNAME }} | |
| password: ${{ secrets.DOCKERHUB_PASSWORD }} | |
| # 7. Docker 이미지 푸시 | |
| - name: Push Docker Image | |
| run: docker push yangshutter/photorize-server:2.0.0 2>&1 | tee -a $GITHUB_WORKSPACE/failure.log | |
| # 8. EC2에 배포 (SSH 액션을 이용) | |
| - name: Deploy to EC2 | |
| uses: appleboy/ssh-action@v0.1.8 | |
| with: | |
| host: ${{ secrets.EC2_HOST }} | |
| username: ubuntu | |
| key: ${{ secrets.EC2_KEY }} | |
| script: | | |
| docker pull yangshutter/photorize-server:2.0.0 | |
| docker stop photorize-server || true | |
| docker rm photorize-server || true | |
| docker run -d --name photorize-server --network photorize-network -p 8080:8080 \ | |
| -e "DB_PASSWORD=${{ secrets.DB_PASSWORD }}" \ | |
| -e "DB_URL=${{ secrets.DB_URL }}" \ | |
| -e "DB_USERNAME=${{ secrets.DB_USERNAME }}" \ | |
| -e "FCM_CERTIFICATION_FILE_PATH=${{ secrets.FCM_CERTIFICATION_FILE_PATH }}" \ | |
| -e "JWT_ACCESS_TIME=${{ secrets.JWT_ACCESS_TIME }}" \ | |
| -e "JWT_REFRESH_TIME=${{ secrets.JWT_REFRESH_TIME }}" \ | |
| -e "JWT_SECRET=${{ secrets.JWT_SECRET }}" \ | |
| -e "MAIL_PASSWORD=${{ secrets.MAIL_PASSWORD }}" \ | |
| -e "S3_ACCESS_KEY=${{ secrets.S3_ACCESS_KEY }}" \ | |
| -e "S3_BASE_URL=${{ secrets.S3_BASE_URL }}" \ | |
| -e "S3_BUCKET_NAME=${{ secrets.S3_BUCKET_NAME }}" \ | |
| -e "S3_SECRET_KEY=${{ secrets.S3_SECRET_KEY }}" \ | |
| -e "REDIS_HOST=${{ secrets.REDIS_HOST }}" \ | |
| -e "CLIENT_ID=${{ secrets.CLIENT_ID }}" \ | |
| -e "CLIENT_SECRET=${{ secrets.CLIENT_SECRET }}" \ | |
| yangshutter/photorize-server:2.0.0 | |
| # 9. 배포 후 알림 전송 등 추가 단계 가능 | |
| - name: Notify Discord | |
| if: always() | |
| run: | | |
| JOB_NUMBER="${{ github.run_number }}" | |
| JOB_STATUS="${{ job.status }}" | |
| BRANCH="${{ github.ref_name }}" | |
| FAIL_LOG=$(cat $GITHUB_WORKSPACE/failure.log) | |
| if [ "$JOB_STATUS" = "success" ]; then | |
| MESSAGE=$'**[Deploy] - #'${JOB_NUMBER}'**\n✅ **빌드 및 배포 완료**!\nBranch: **'${BRANCH}'**\nJob Status: '${JOB_STATUS} | |
| else | |
| MESSAGE=$'**[Deploy] - #'${JOB_NUMBER}'**\n❌ **배포 실패**!\nBranch: **'${BRANCH}'**\nJob Status: '${JOB_STATUS}'\nFailure log:\n**'${FAIL_LOG}'**' | |
| fi | |
| PAYLOAD=$(jq -c -n --arg content "$MESSAGE" '{content: $content}') | |
| echo "Payload: $PAYLOAD" # 디버깅용 출력 | |
| curl -X POST \ | |
| -H "Content-Type: application/json" \ | |
| -d "$PAYLOAD" \ | |
| ${{ secrets.DISCORD_WEBHOOK_URL }} | |