Skip to content

Commit 7c63335

Browse files
committed
Update ci-cd.yml
1 parent 5c7e7ff commit 7c63335

1 file changed

Lines changed: 28 additions & 54 deletions

File tree

‎.github/workflows/ci-cd.yml‎

Lines changed: 28 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: Deploy to OCI
1+
name: Deploy to GCP
22

33
on:
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

Comments
 (0)