Skip to content

Commit

Permalink
Merge pull request #36 from 100-hours-a-week/dev
Browse files Browse the repository at this point in the history
main 배포 스크립트 변경
  • Loading branch information
jjikky authored Sep 4, 2024
2 parents e12ea79 + 12670e8 commit 61f8bd3
Show file tree
Hide file tree
Showing 9 changed files with 86 additions and 80 deletions.
62 changes: 35 additions & 27 deletions .github/workflows/dev-deploy.yml
Original file line number Diff line number Diff line change
@@ -1,52 +1,60 @@
name: deploy
name: SIGNALING SERVER DEV CD

on:
push:
branches: [dev]

jobs:
build:
runs-on: dev-signaling-runner
docker-build-and-push:
runs-on: ubuntu-latest

steps:
- name: Checkout release
- name: 리포지토리 체크아웃
uses: actions/checkout@v3

- name: Login to DockerHub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}

- name: Build the Docker image
run: docker build -t dao-signaling-server .

- name: Tagging
run: docker tag dao-signaling-server:latest jjikky/dao-signaling-server:latest

- name: Push to Dockerhub
run: docker push jjikky/dao-signaling-server:latest

- name: Create .env file
- name: env 생성
run: |
echo "# SERVER" > .env
echo "PORT=${{ secrets.PORT }}" >> .env
echo "NODE_ENV=development" >> .env
echo "SERVER_PATH=${{ secrets.SERVER_PATH }}" >> .env
echo "CORS_WHITELIST=production" >> .env
echo "" >> .env
echo "# RTC" >> .env
echo "MAXIMUM_CONNECTION=${{ secrets.MAXIMUM_CONNECTION }}" >> .env
echo "" >> .env
echo "# SPRING" >> .env
echo "SPRING_SERVER_URL=${{ secrets.SPRING_SERVER_URL }}" >> .env
echo "" >> .env
echo "SPRING_SERVER_URL_DEV=${{ secrets.SPRING_SERVER_URL_DEV }}" >> .env
echo "# REDIS" >> .env
echo "REDIS_HOST_DEV=${{ secrets.REDIS_HOST_DEV }}" >> .env
echo "REDIS_PORT=${{ secrets.REDIS_PORT }}" >> .env
- name: Run Docker container
- name: Docker Hub 로그인
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}

- name: Docker 이미지 빌드
run: docker build -t dao-signaling-server:dev .

- name: Docker 이미지 Tagging
run: docker tag dao-signaling-server:dev jjikky/dao-signaling-server:dev

- name: Docker Hub에 이미지 푸시
run: docker push jjikky/dao-signaling-server:dev

docker-pull-and-run:
runs-on: dev-signaling-runner
needs: [docker-build-and-push]
if: ${{ needs.docker-build-and-push.result == 'success' }}

steps:
- name: Docker Hub에서 Docker 이미지를 pull
run: |
sudo docker login --username ${{ secrets.DOCKER_USERNAME }} --password ${{ secrets.DOCKER_PASSWORD }}
sudo docker pull jjikky/dao-signaling-server:dev
- name: Docker 컨테이너 시작
run: |
docker stop dao-signaling-server || true
sudo docker stop dao-signaling-server || true
docker rm dao-signaling-server || true
docker run -d --name dao-signaling-server --env-file .env --network backend-network -p 8083:8083 jjikky/dao-signaling-server:latest
docker run -d --name dao-signaling-server --network backend-network -p 8083:8083 jjikky/dao-signaling-server:dev
62 changes: 35 additions & 27 deletions .github/workflows/prod-deploy.yml
Original file line number Diff line number Diff line change
@@ -1,52 +1,60 @@
name: deploy
name: SIGNALING SERVER PROD CD

on:
push:
branches: [main]

jobs:
build:
runs-on: prod-signaling-runner
docker-build-and-push:
runs-on: ubuntu-latest

steps:
- name: Checkout release
- name: 리포지토리 체크아웃
uses: actions/checkout@v3

- name: Login to DockerHub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}

- name: Build the Docker image
run: docker build -t dao-signaling-server .

- name: Tagging
run: docker tag dao-signaling-server:latest jjikky/dao-signaling-server:latest

- name: Push to Dockerhub
run: docker push jjikky/dao-signaling-server:latest

- name: Create .env file
- name: env 생성
run: |
echo "# SERVER" > .env
echo "PORT=${{ secrets.PORT }}" >> .env
echo "NODE_ENV=production" >> .env
echo "SERVER_PATH=${{ secrets.SERVER_PATH }}" >> .env
echo "CORS_WHITELIST=production" >> .env
echo "" >> .env
echo "# RTC" >> .env
echo "MAXIMUM_CONNECTION=${{ secrets.MAXIMUM_CONNECTION }}" >> .env
echo "" >> .env
echo "# SPRING" >> .env
echo "SPRING_SERVER_URL=${{ secrets.SPRING_SERVER_URL }}" >> .env
echo "" >> .env
echo "SPRING_SERVER_URL_PROD=${{ secrets.SPRING_SERVER_URL_PROD }}" >> .env
echo "# REDIS" >> .env
echo "REDIS_HOST_PROD=${{ secrets.REDIS_HOST_PROD }}" >> .env
echo "REDIS_PORT=${{ secrets.REDIS_PORT }}" >> .env
- name: Run Docker container
- name: Docker Hub 로그인
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}

- name: Docker 이미지 빌드
run: docker build -t dao-signaling-server:prod .

- name: Docker 이미지 Tagging
run: docker tag dao-signaling-server:prod jjikky/dao-signaling-server:prod

- name: Docker Hub에 이미지 푸시
run: docker push jjikky/dao-signaling-server:prod

docker-pull-and-run:
runs-on: prod-signaling-runner
needs: [docker-build-and-push]
if: ${{ needs.docker-build-and-push.result == 'success' }}

steps:
- name: Docker Hub에서 Docker 이미지를 pull
run: |
sudo docker login --username ${{ secrets.DOCKER_USERNAME }} --password ${{ secrets.DOCKER_PASSWORD }}
sudo docker pull jjikky/dao-signaling-server:prod
- name: Docker 컨테이너 시작
run: |
docker stop dao-signaling-server || true
sudo docker stop dao-signaling-server || true
docker rm dao-signaling-server || true
docker run -d --name dao-signaling-server --env-file .env --network backend-network -p 8083:8083 jjikky/dao-signaling-server:latest
docker run -d --name dao-signaling-server --network backend-network -p 8083:8083 jjikky/dao-signaling-server:prod
5 changes: 1 addition & 4 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,7 @@
# misc
.DS_Store
.env
.env.local
.env.development.local
.env.test.local
.env.production
.env.*

npm-debug.log*
yarn-debug.log*
Expand Down
4 changes: 0 additions & 4 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,6 @@ RUN npm install -g pm2
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app

RUN npm install mkcert -g
RUN mkcert create-ca
RUN mkcert create-cert

COPY package*.json ./
RUN npm install

Expand Down
2 changes: 2 additions & 0 deletions app.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,8 @@ switch (config.envMode) {
case 'prod':
initProdServer();
break;
case 'dev':
initProdServer();
default:
initLocalServer();
break;
Expand Down
13 changes: 0 additions & 13 deletions docker-compose.yml

This file was deleted.

14 changes: 10 additions & 4 deletions src/common/config/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,26 +18,32 @@ const config = {
// RTC
maximumConnection: process.env.MAXIMUM_CONNECTION,

// SPRING
springServerUrl: process.env.SPRING_SERVER_URL,

// REDIS
redisPort: process.env.REDIS_PORT,
};

switch (process.env.NODE_ENV) {
case 'production':
config.envMode = 'prod';
config.springServerUrl = process.env.SPRING_SERVER_URL_PROD;
config.redisHost = process.env.REDIS_HOST_PROD;
break;

case 'development':
config.envMode = 'dev';
config.springServerUrl = process.env.SPRING_SERVER_URL_DEV;
config.redisHost = process.env.REDIS_HOST_DEV;
break;

case 'local':
config.envMode = 'local';
config.springServerUrl = process.env.SPRING_SERVER_URL_LOCAL;
config.redisHost = process.env.REDIS_HOST_LOCAL;
break;
default:
console.warn(ErrorMessage.NODE_ENV_WRONG);
config.envMode = 'dev';
config.springServerUrl = process.env.SPRING_SERVER_URL_DEV;
config.redisHost = process.env.REDIS_HOST_DEV;
break;
}

Expand Down
3 changes: 2 additions & 1 deletion src/common/constants/error-message.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
const ErrorMessage = Object.freeze({
// 환경변수
ENV_FILE_NOT_FOUND: '환경변수 파일을 찾을 수 없습니다.',
NODE_ENV_WRONG: 'NODE_ENV가 올바르게 설정되지 않았습니다. production 또는 development로 설정되어야 합니다.',
NODE_ENV_WRONG:
'NODE_ENV가 올바르게 설정되지 않았습니다. [ production / development / local 중 하나로 설정되어야 합니다.\n 명시되지 않음으로 인해 development로 설정 됩니다.',
});
1 change: 1 addition & 0 deletions src/common/constants/express.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ const dayjs = require('dayjs');
const mode = {
dev: 'development',
prod: 'production',
local: 'local',
};

exports.START_MESSAGE = `
Expand Down

0 comments on commit 61f8bd3

Please sign in to comment.