-
Notifications
You must be signed in to change notification settings - Fork 0
93 lines (82 loc) · 3.83 KB
/
deploy.yml
File metadata and controls
93 lines (82 loc) · 3.83 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
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 }}"