1- name : Deploy to OCI
1+ name : Deploy to GCP
22
33on :
44 push :
@@ -12,24 +12,15 @@ jobs:
1212 runs-on : ubuntu-latest
1313
1414 steps :
15- # --------------------------
16- # 1) Checkout
17- # --------------------------
1815 - name : Checkout
1916 uses : actions/checkout@v4
2017
21- # --------------------------
22- # 2) JDK 설정
23- # --------------------------
2418 - name : Set up JDK 17
2519 uses : actions/setup-java@v4
2620 with :
2721 java-version : ' 17'
2822 distribution : ' temurin'
2923
30- # --------------------------
31- # 3) 빌드 전 리소스 파일 생성
32- # --------------------------
3324 - name : Create FCM key file
3425 run : |
3526 mkdir -p src/main/resources
@@ -39,61 +30,44 @@ jobs:
3930 shell : bash
4031 run : printf "%s" "${{ secrets.ENV_FILE }}" > .env
4132
42- # --------------------------
43- # 4) Gradle 빌드
44- # --------------------------
4533 - name : Build JAR
4634 run : |
4735 chmod +x ./gradlew
4836 ./gradlew clean bootJar -x test
4937 cp $(ls build/libs/*.jar | grep -v plain | head -n 1) app.jar
5038
5139 # --------------------------
52- # 5) Docker 이미지 빌드 → tar 저장
53- # --------------------------
54- - name : Build Docker image
55- run : |
56- docker build -t tinybite-server:latest .
57- docker save tinybite-server:latest | gzip > tinybite-server.tar.gz
58-
40+ # GCP 인증
5941 # --------------------------
60- # 6) SCP로 서버에 전송
61- # --------------------------
62- - name : Copy files to OCI server
63- uses : appleboy/scp-action@v0.1.7
42+ - name : Authenticate to GCP
43+ uses : google-github-actions/auth@v2
6444 with :
65- host : ${{ secrets.SSH_HOST }}
66- username : ${{ secrets.SSH_USERNAME }}
67- key : ${{ secrets.SSH_KEY }}
68- port : 22
69- source : " tinybite-server.tar.gz,.env,docker-compose.yml,nginx/"
70- target : " /home/ubuntu/tinybite/"
45+ credentials_json : ${{ secrets.GCP_SA_KEY }}
46+
47+ - name : Set up Cloud SDK
48+ uses : google-github-actions/setup-gcloud@v2
7149
7250 # --------------------------
73- # 7) 서버에서 이미지 load & 실행
51+ # Artifact Registry에 push
7452 # --------------------------
75- - name : Deploy on OCI server
76- uses : appleboy/ssh-action@v1.0.3
77- with :
78- host : ${{ secrets.SSH_HOST }}
79- username : ${{ secrets.SSH_USERNAME }}
80- key : ${{ secrets.SSH_KEY }}
81- port : 22
82- script : |
83- set -e
84-
85- echo "=== 디렉토리 구조 확인 ==="
86- find /home/ubuntu/tinybite -type f | sort
87- cd /home/ubuntu/tinybite
88-
89- echo "📦 이미지 로드 중..."
90- sudo docker load < tinybite-server.tar.gz
53+ - name : Configure Docker for Artifact Registry
54+ run : gcloud auth configure-docker ${{ secrets.GCP_REGION }}-docker.pkg.dev
9155
92- echo "🧹 정리 중..."
93- sudo rm -f tinybite-server.tar.gz
94- sudo docker image prune -f
95-
96- echo "🚀 컨테이너 재시작..."
97- sudo docker compose -f /home/ubuntu/tinybite/docker-compose.yml up -d
56+ - name : Build & Push Docker image
57+ run : |
58+ IMAGE=${{ secrets.GCP_REGION }}- docker.pkg.dev/${{ secrets.GCP_PROJECT_ID }}/${{ secrets.AR_REPOSITORY }}/tinybite-server:${{ github.sha }}
59+ docker build -t $IMAGE .
60+ docker push $IMAGE
61+ echo "IMAGE=$IMAGE" >> $GITHUB_ENV
9862
99- echo "✅ 배포 완료"
63+ # --------------------------
64+ # Cloud Run 배포
65+ # --------------------------
66+ - name : Deploy to Cloud Run
67+ run : |
68+ gcloud run deploy tinybite-server \
69+ --image $IMAGE \
70+ --region ${{ secrets.GCP_REGION }} \
71+ --platform managed \
72+ --allow-unauthenticated \
73+ --env-vars-file .env
0 commit comments