@@ -16,83 +16,77 @@ jobs:
1616 name : Build
1717 runs-on : ubuntu-latest
1818 steps :
19- # github repository에서 checkout
2019 - name : Check out source code
2120 uses : actions/checkout@v2
22- # .env 파일 생성
2321 - name : Generate .env file
2422 run : |
2523 cat << EOF > ./server/.env
26- JWT_SECRET=${{ secrets.JWT_SECRET }}
27- HASH_ROUNDS=${{ secrets.HASH_ROUNDS }}
28- PROTOCOL=${{ secrets.PROTOCOL }}
29- HOST=${{ secrets.HOST }}
30- DB_HOST=${{ secrets.DB_HOST }}
31- DB_PORT=${{ secrets.DB_PORT }}
32- DB_USERNAME=${{ secrets.DB_USERNAME }}
33- DB_PASSWORD=${{ secrets.DB_PASSWORD }}
34- DB_DATABASE=${{ secrets.DB_DATABASE }}
35- SUB=${{ secrets.SUB }}
36- ALG=${{ secrets.ALG }}
37- KID=${{ secrets.KID }}
38- ISS=${{ secrets.ISS }}
39- AUTHKEY=${{ secrets.AUTHKEY }}
40- X_NCP_CLOVASTUDIO_API_KEY=${{ secrets.X_NCP_CLOVASTUDIO_API_KEY }}
41- X_NCP_APIGW_API_KEY=${{ secrets.X_NCP_APIGW_API_KEY }}
42- X_NCP_CLOVASTUDIO_REQUEST_ID=${{ secrets.X_NCP_CLOVASTUDIO_REQUEST_ID }}
43- REDIS_URL=${{ secrets.REDIS_URL }}
44- REDIS_USERNAME=${{ secrets.REDIS_USERNAME }}
45- REDIS_PASSWORD=${{ secrets.REDIS_PASSWORD }}
46- ADMIN_EMAIL=${{ secrets.ADMIN_EMAIL }}
47- ADMIN_PASSWORD=${{ secrets.ADMIN_PASSWORD }}
24+ # ... 환경 변수
4825 EOF
49- # .p8 파일 생성
5026 - name : Generate .p8 file
5127 run : |
5228 cat << EOF > ./server/.p8
5329 ${{ secrets.P8 }}
5430 EOF
55- # docker build 수행
5631 - name : Set up docker buildx
5732 id : buildx
5833 uses : docker/setup-buildx-action@v1
5934 - name : Cache docker layers
6035 uses : actions/cache@v2
6136 with :
6237 path : /tmp/.buildx-cache
63- key : ${{ runner.os }}-buildx-${{ env.VERSION }} # runner 설정에서 읽음.
38+ key : ${{ runner.os }}-buildx-${{ env.VERSION }}
6439 restore-keys : |
6540 ${{ runner.os }}-buildx-
66- # GitHub 컨테이너 레지스트리에 로그인 후 빌드 & 푸시
6741 - name : Login to ghcr
6842 uses : docker/login-action@v1
6943 with :
7044 registry : ghcr.io
7145 username : ${{ github.actor }}
7246 password : ${{ secrets.GHCR_TOKEN }}
7347 - name : Build and push
74- id : docker_build
7548 uses : docker/build-push-action@v2
7649 with :
7750 builder : ${{ steps.buildx.outputs.name }}
78- context : ./server # Docker 빌드 컨텍스트를 'server' 디렉토리로 설정
79- file : ./server/Dockerfile # 'server' 디렉토리 내의 Dockerfile 사용
51+ context : ./server
52+ file : ./server/Dockerfile
8053 push : true
8154 tags : ${{ env.DOCKER_IMAGE }}:latest
82- # 배포 Job
83- deploy :
84- needs : build # build 후에 실행되도록 정의
85- name : Deploy
86- runs-on : [ self-hosted, label-go ] # ncloud ./configure에서 사용할 label명
55+
56+ # 배포 Job - 서버 1
57+ deploy-server1 :
58+ needs : build
59+ name : Deploy to Server 1
60+ runs-on : [ self-hosted, label-server1 ]
61+ steps :
62+ - name : Login to ghcr
63+ uses : docker/login-action@v1
64+ with :
65+ registry : ghcr.io
66+ username : ${{ github.actor }}
67+ password : ${{ secrets.GHCR_TOKEN }}
68+ - name : Docker run (Server 1)
69+ run : |
70+ docker stop go_cicd1 || true
71+ docker rm go_cicd1 || true
72+ docker pull ${{ env.DOCKER_IMAGE }}:latest
73+ docker run -d -p 3000:3000 --name go_cicd1 --restart always ${{ env.DOCKER_IMAGE }}:latest
74+
75+ # 배포 Job - 서버 2
76+ deploy-server2 :
77+ needs : build
78+ name : Deploy to Server 2
79+ runs-on : [ self-hosted, label-server2 ]
8780 steps :
8881 - name : Login to ghcr
8982 uses : docker/login-action@v1
9083 with :
9184 registry : ghcr.io
9285 username : ${{ github.actor }}
9386 password : ${{ secrets.GHCR_TOKEN }}
94- # 3000 -> 3000 포트로 수행하도록 지정
95- - name : Docker run
87+ - name : Docker run (Server 2)
9688 run : |
97- docker stop ${{ env.NAME }} && docker rm ${{ env.NAME }} && docker rmi ${{ env.DOCKER_IMAGE }}:latest
98- docker run -d -p 3000:3000 --name go_cicd --restart always ${{ env.DOCKER_IMAGE }}:latest
89+ docker stop go_cicd2 || true
90+ docker rm go_cicd2 || true
91+ docker pull ${{ env.DOCKER_IMAGE }}:latest
92+ docker run -d -p 3001:3000 --name go_cicd2 --restart always ${{ env.DOCKER_IMAGE }}:latest
0 commit comments