-
Notifications
You must be signed in to change notification settings - Fork 0
75 lines (63 loc) · 2.8 KB
/
deployment.yml
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
name: CI / CD
on:
push:
branches: [release]
jobs:
CI:
runs-on: ubuntu-latest
env:
GCP_PROJECT_ID: ${{ secrets.GCE_PROJECT_ID }}
IMAGE_NAME: play-qr-fe
IMAGE_TAG: ${{ github.sha }}
steps:
- name: 코드 체크아웃
uses: actions/checkout@v3
- name: Google Cloud SDK 설정
uses: "google-github-actions/auth@v2"
with:
credentials_json: ${{ secrets.GCE_SA_KEY }}
- name: Docker를 위한 gcloud 인증 설정
run: gcloud auth configure-docker --quiet
- name: Google Secret Manager에서 환경변수 가져오기
uses: "google-github-actions/get-secretmanager-secrets@v2"
with:
secrets: |-
test: ${{ secrets.GCE_PROJECT_ID }}/secrets/test
- name: Secrets 출력
run: echo ${{ steps.secrets.outputs.test }}
- name: Docker 이미지 빌드 및 푸시
run: |
docker build \
--build-arg REACT_APP_SENTRY_DSN=${{ secrets.REACT_APP_SENTRY_DSN }} \
--build-arg REACT_APP_WEB_DOMAIN=${{ secrets.REACT_APP_WEB_DOMAIN }} \
--build-arg REACT_APP_KAKAO_SHARE_DOMAIN=${{ secrets.REACT_APP_KAKAO_SHARE_DOMAIN }} \
--build-arg REACT_APP_KAKAO_SDK_KEY=${{ secrets.REACT_APP_KAKAO_SDK_KEY }} \
--build-arg REACT_APP_KAKAO_TEMPLATE_ID=${{ secrets.REACT_APP_KAKAO_TEMPLATE_ID }} \
--build-arg REACT_APP_IMAGE_FILE_LIMITATION=${{ secrets.REACT_APP_IMAGE_FILE_LIMITATION }} \
--build-arg REACT_APP_API_URL=${{ secrets.REACT_APP_API_URL }} \
-t gcr.io/${{ env.GCP_PROJECT_ID }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }} .
docker push gcr.io/${{ secrets.GCE_PROJECT_ID }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }}
CD:
runs-on: ubuntu-latest
needs: CI
env:
GCP_PROJECT_ID: ${{ secrets.GCE_PROJECT_ID }}
IMAGE_NAME: play-qr-fe
IMAGE_TAG: ${{ github.sha }}
DEPLOY_PATH: ${{ secrets.DEPLOY_SERVER_PATH }}
steps:
- name: 배포 서버에 SSH로 연결하여 배포
uses: appleboy/[email protected]
with:
host: ${{ secrets.DEPLOY_SERVER_HOST }}
username: ${{ secrets.DEPLOY_SERVER_USER }}
key: ${{ secrets.DEPLOY_SSH_KEY }}
envs: GCP_PROJECT_ID, IMAGE_NAME, IMAGE_TAG, DEPLOY_PATH
script: |
cd ${DEPLOY_PATH}
sudo docker stop ${IMAGE_NAME}
sudo docker rm ${IMAGE_NAME}
sudo docker login -u _json_key --password-stdin https://gcr.io <<< '${{ secrets.GCE_SA_KEY }}'
sudo docker pull gcr.io/${GCP_PROJECT_ID}/${IMAGE_NAME}:${IMAGE_TAG}
sudo docker run -d --name ${IMAGE_NAME} -p 3000:3000 gcr.io/${GCP_PROJECT_ID}/${IMAGE_NAME}:${IMAGE_TAG}
sudo docker network connect compose_app-network ${IMAGE_NAME}