Merge pull request #348 from TTORANG/dev #55
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 Cloud Run | |
| on: | |
| push: | |
| branches: | |
| - main # main 브랜치에 push될 때만 실행 | |
| env: | |
| PROJECT_ID: ${{ secrets.GCP_PROJECT_ID }} | |
| REGION: asia-northeast3 | |
| SERVICE_NAME: ttorang-server | |
| REPOSITORY: ttorang-repo | |
| DB_INSTANCE: ttorang-db | |
| CLOUD_TASKS_QUEUE: conversion-queue | |
| jobs: | |
| deploy: | |
| runs-on: ubuntu-latest | |
| steps: | |
| # 1. 코드 체크아웃 | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| # 2. Google Cloud 인증 | |
| - name: Authenticate to Google Cloud | |
| uses: google-github-actions/auth@v2 | |
| with: | |
| credentials_json: ${{ secrets.GCP_SA_KEY }} | |
| # 3. gcloud CLI 설정 | |
| - name: Set up Cloud SDK | |
| uses: google-github-actions/setup-gcloud@v2 | |
| with: | |
| project_id: ${{ env.PROJECT_ID }} | |
| # 4. Docker 인증 설정 (Artifact Registry) | |
| - name: Configure Docker for Artifact Registry | |
| run: | | |
| gcloud auth configure-docker ${{ env.REGION }}-docker.pkg.dev --quiet | |
| # 5. Debug - 파일 확인 | |
| - name: Debug - Check files | |
| run: | | |
| echo "=== Checking package files ===" | |
| ls -la package*.json | |
| echo "=== package-lock.json first 5 lines ===" | |
| head -5 package-lock.json | |
| # 6. Docker 이미지 빌드 | |
| - name: Build Docker image | |
| run: | | |
| docker build -t ${{ env.REGION }}-docker.pkg.dev/${{ env.PROJECT_ID }}/${{ env.REPOSITORY }}/${{ env.SERVICE_NAME }}:${{ github.sha }} . | |
| # 6. Docker 이미지 푸시 (Artifact Registry) | |
| - name: Push Docker image | |
| run: | | |
| docker push ${{ env.REGION }}-docker.pkg.dev/${{ env.PROJECT_ID }}/${{ env.REPOSITORY }}/${{ env.SERVICE_NAME }}:${{ github.sha }} | |
| # 7. Cloud Run에 배포 | |
| - name: Deploy to Cloud Run | |
| env: | |
| CLOUD_SQL_CONNECTION: ${{ secrets.GCP_PROJECT_ID }}:${{ env.REGION }}:${{ env.DB_INSTANCE }} | |
| DATABASE_URL: mysql://${{ secrets.DB_USER }}:${{ secrets.DB_PASSWORD }}@localhost/${{ secrets.DB_NAME }}?socket=/cloudsql/${{ secrets.GCP_PROJECT_ID }}:${{ env.REGION }}:${{ env.DB_INSTANCE }} | |
| run: | | |
| gcloud run deploy ${{ env.SERVICE_NAME }} \ | |
| --image ${{ env.REGION }}-docker.pkg.dev/${{ env.PROJECT_ID }}/${{ env.REPOSITORY }}/${{ env.SERVICE_NAME }}:${{ github.sha }} \ | |
| --region ${{ env.REGION }} \ | |
| --platform managed \ | |
| --allow-unauthenticated \ | |
| --port 8080 \ | |
| --add-cloudsql-instances=${{ env.CLOUD_SQL_CONNECTION }} \ | |
| --set-env-vars="^##^ | |
| CLOUD_SQL_CONNECTION_NAME=${{ env.CLOUD_SQL_CONNECTION }}## | |
| DB_USER=${{ secrets.DB_USER }}## | |
| DB_PASSWORD=${{ secrets.DB_PASSWORD }}## | |
| DB_NAME=${{ secrets.DB_NAME }}## | |
| DATABASE_URL=${{ env.DATABASE_URL }}## | |
| PASSPORT_GOOGLE_CLIENT_ID=${{ secrets.PASSPORT_GOOGLE_CLIENT_ID }}## | |
| PASSPORT_GOOGLE_CLIENT_SECRET=${{ secrets.PASSPORT_GOOGLE_CLIENT_SECRET }}## | |
| PASSPORT_KAKAO_CLIENT_ID=${{ secrets.PASSPORT_KAKAO_CLIENT_ID }}## | |
| PASSPORT_KAKAO_CLIENT_SECRET=${{ secrets.PASSPORT_KAKAO_CLIENT_SECRET }}## | |
| PASSPORT_NAVER_CLIENT_ID=${{ secrets.PASSPORT_NAVER_CLIENT_ID }}## | |
| PASSPORT_NAVER_CLIENT_SECRET=${{ secrets.PASSPORT_NAVER_CLIENT_SECRET }}## | |
| JWT_SECRET=${{ secrets.JWT_SECRET }}## | |
| SERVER_URL=${{ secrets.SERVER_URL }}## | |
| GCS_BUCKET_NAME=${{ secrets.GCS_BUCKET_NAME }}## | |
| CDN_HOST=${{ secrets.CDN_HOST }}## | |
| GCP_PROJECT_ID=${{ secrets.GCP_PROJECT_ID }}## | |
| CLOUD_RUN_SERVICE_URL=${{ secrets.CLOUD_RUN_SERVICE_URL }}## | |
| CLOUD_TASKS_SERVICE_ACCOUNT=${{ secrets.CLOUD_TASKS_SERVICE_ACCOUNT }}## | |
| REDIS_URL=${{ secrets.REDIS_URL }}## | |
| FRONTEND_URL=${{ secrets.FRONTEND_URL }}" |