feat: 서버사이드 인증체계로 변경 & 숨은그림찾기 반환 구조체 변경 #53
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될 때 실행 | |
| workflow_dispatch: # 수동 실행 활성화 | |
| # 동일한 워크플로우가 실행 중이면 이전 작업은 자동 취소 | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| deploy: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| # 1. GCP 인증 (유효한 GCP_SERVICE_ACCOUNT_JSON 사용) | |
| - id: 'auth' | |
| uses: 'google-github-actions/auth@v2' | |
| with: | |
| credentials_json: '${{ secrets.GCP_SERVICE_ACCOUNT_JSON }}' | |
| token_format: 'access_token' | |
| # 2. Docker 인증 (access token 직접 사용으로 gcloud 인증 오류 방지) | |
| - name: 'Docker Login' | |
| uses: 'docker/login-action@v3' | |
| with: | |
| registry: 'asia-northeast3-docker.pkg.dev' | |
| username: 'oauth2accesstoken' | |
| password: '${{ steps.auth.outputs.access_token }}' | |
| # 3. gcloud SDK 설정 | |
| - name: 'Set up Cloud SDK' | |
| uses: 'google-github-actions/setup-gcloud@v2' | |
| # 4. Docker 빌드 및 푸시 | |
| - name: Build and Push Container | |
| run: |- | |
| docker build -t asia-northeast3-docker.pkg.dev/${{ secrets.GCP_PROJECT_ID }}/apps/backend:${{ github.sha }} . | |
| docker push asia-northeast3-docker.pkg.dev/${{ secrets.GCP_PROJECT_ID }}/apps/backend:${{ github.sha }} | |
| # 4. Cloud Run 배포 | |
| - name: Deploy to Cloud Run | |
| env: | |
| # JSON을 셸 환경 변수에 먼저 담아둡니다. | |
| FB_JSON: ${{ secrets.FIREBASE_SERVICE_ACCOUNT_JSON }} | |
| GCP_JSON: ${{ secrets.GCP_SERVICE_ACCOUNT_JSON }} | |
| run: |- | |
| gcloud run deploy backend \ | |
| --image asia-northeast3-docker.pkg.dev/${{ secrets.GCP_PROJECT_ID }}/apps/backend:${{ github.sha }} \ | |
| --region asia-northeast3 \ | |
| --platform managed \ | |
| --port ${{ secrets.APP_PORT }} \ | |
| --cpu=2 \ | |
| --memory=4Gi \ | |
| --max-instances=5 \ | |
| --no-cpu-throttling \ | |
| --timeout=900 \ | |
| --set-env-vars "^|^APP_PORT=${{ secrets.APP_PORT }}|APP_ENV=${{ secrets.APP_ENV }}|REMOTE_HOST=${{ secrets.REMOTE_HOST }}|DB_USER=${{ secrets.DB_USER }}|DB_PASSWORD=${{ secrets.DB_PASSWORD }}|DB_NAME=${{ secrets.DB_NAME }}|DB_PORT=${{ secrets.DB_PORT }}|REDIS_PORT=${{ secrets.REDIS_PORT }}|REDIS_PASSWORD=${{ secrets.REDIS_PASSWORD }}|GAME_HUB_URL=${{ secrets.GAME_HUB_URL }}|DISCOVEREX_URL=${{ secrets.DISCOVEREX_URL }}|MAGIC_EYE_URL=${{ secrets.MAGIC_EYE_URL }}|GAME_HUB_PORT=${{ secrets.GAME_HUB_PORT }}|DISCOVEREX_PORT=${{ secrets.DISCOVEREX_PORT }}|MAGIC_EYE_PORT=${{ secrets.MAGIC_EYE_PORT }}|HF_TOKEN=${{ secrets.HF_TOKEN }}|OPENAI_API_KEY=${{ secrets.OPENAI_API_KEY }}|IMAGE_BUCKET_NAME=${{ secrets.IMAGE_BUCKET_NAME }}|MODEL_BUCKET_NAME=${{ secrets.MODEL_BUCKET_NAME }}|FIREBASE_SERVICE_ACCOUNT_JSON=$FB_JSON|GCP_SERVICE_ACCOUNT_JSON=$GCP_JSON" \ | |
| --allow-unauthenticated |