Skip to content

feat: 서버사이드 인증체계로 변경 & 숨은그림찾기 반환 구조체 변경 #53

feat: 서버사이드 인증체계로 변경 & 숨은그림찾기 반환 구조체 변경

feat: 서버사이드 인증체계로 변경 & 숨은그림찾기 반환 구조체 변경 #53

Workflow file for this run

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