@@ -58,10 +58,42 @@ jobs:
5858 # 7. VM에 접속하여 애플리케이션 실행 (환경 변수 주입)
5959 # gcloud ssh 명령어로 VM에 접속하여 기존 앱을 종료하고,
6060 # GitHub Secrets의 값들을 환경 변수로 주입하여 새 앱을 실행합니다.
61- - name : Deploy to GCP VM
61+ - name : Deploy to GCP VM
62+ env :
63+ # Spring Boot 애플리케이션에 필요한 모든 Secret들을 env 컨텍스트에 등록합니다.
64+ DB_URL : ${{ secrets.DB_URL }}
65+ DB_USERNAME : ${{ secrets.DB_USERNAME }}
66+ DB_PASSWORD : ${{ secrets.DB_PASSWORD }}
67+ JWT_SECRET : ${{ secrets.JWT_SECRET }}
68+ GOOGLE_EMAIL : ${{ secrets.GOOGLE_EMAIL }}
69+ GOOGLE_EMAIL_KEY : ${{ secrets.GOOGLE_EMAIL_KEY }}
70+ NAVER_CLIENT : ${{ secrets.NAVER_CLIENT }}
71+ NAVER_SECRET : ${{ secrets.NAVER_SECRET }}
72+ OPENAI_API_KEY : ${{ secrets.OPENAI_API_KEY }}
6273 run : |
63- echo "Attempting to run a simple command on the VM..."
74+ # '-plain.jar'를 제외하고 실행 가능한 JAR 파일만 찾습니다.
75+ JAR_FILE_NAME=$(basename $(find build/libs/ -name "*.jar" ! -name "*-plain.jar"))
76+
77+ # gcloud ssh 명령어로 VM에 접속하여 배포 스크립트를 실행합니다.
6478 gcloud compute ssh ${{ secrets.GCP_INSTANCE_NAME }} \
6579 --project=${{ secrets.GCP_PROJECT_ID }} \
6680 --zone=${{ secrets.GCP_ZONE }} \
67- --command="ls -l ~/"
81+ --command="
82+ # pkill로 기존 프로세스를 더 간단하게 종료 (프로세스가 없어도 오류 안 남)
83+ pkill -f '$JAR_FILE_NAME' || true
84+ sleep 5
85+
86+ # 새 애플리케이션을 백그라운드에서 실행합니다.
87+ echo 'Starting new application process...'
88+ nohup env \
89+ DB_URL='${DB_URL}' \
90+ DB_USERNAME='${DB_USERNAME}' \
91+ DB_PASSWORD='${DB_PASSWORD}' \
92+ JWT_SECRET='${JWT_SECRET}' \
93+ GOOGLE_EMAIL='${GOOGLE_EMAIL}' \
94+ GOOGLE_EMAIL_KEY='${GOOGLE_EMAIL_KEY}' \
95+ NAVER_CLIENT='${NAVER_CLIENT}' \
96+ NAVER_SECRET='${NAVER_SECRET}' \
97+ OPENAI_API_KEY='${OPENAI_API_KEY}' \
98+ java -jar ~/$JAR_FILE_NAME > ~/app.log 2>&1 &
99+ "
0 commit comments