Skip to content

Commit 928fc36

Browse files
authored
chore: main.yml 다중 서버 배포
1 parent 7f78b79 commit 928fc36

File tree

1 file changed

+34
-40
lines changed

1 file changed

+34
-40
lines changed

.github/workflows/main.yml

Lines changed: 34 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)