Nexters / what-do-you-say-server

:question: 뭐라하지? - Nexters 17th 런죽팀

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

What do you say - Server

What do you say Server - CI Production Server Deploy to AWS EC2

❓ 뭐라하지? - 인사말을 대신 작성해주는 서비스


🚀 Main Modules

  • express
  • awilix
  • awilix-express
  • mysql2
  • typeorm
  • ts-jest

:octocat: Git Branch Strategy

  • 3개의 브랜치로 구성되어 있다. (feature/issue-이슈번호 -> dev -> master 순으로 작업해야 함)

    • master
    • dev
    • feature/issue-이슈 번호
  • dev 브랜치를 clone 받은 후(Repository Fork ❌), feature/issue-이슈 번호 브랜치를 만들어서 개발한다.

    # dev branch clone
    $ git clone -b dev --single-branch https://github.com/Nexters/what-do-you-say-server.git
  • feature/issue-이슈 번호 브랜치가 dev 브랜치에 머지 되면, 반드시 삭제해야 한다.

  • Github Action에서 CI/CD 를 통과해야 Merge 할 수 있다.


✈️ CI / CD

  • github actions를 활용해서 지속적 통합 및 배포
  • feature 브랜치에서 dev로 Pull Request를 보내면, CI가 동작된다.
  • dev에서 master로 Pull Request를 보내면, CI가 동작되고 Merge가 되면, 운영 리소스에 배포된다.

📗 How to run test code locally

# mysql container 실행
$ docker-compose -f docker-compose.mysql.yml up -d

# lint 체크 하고, type-check 후, 테스트 코드 실행하는 스크립트
$ npm run test # or npm test

📘 How to run the server locally

  1. ts-node를 사용해서 실행하는 경우
$ npm install

$ cp .env.sample ./.env

# mysql container 실행
$ docker-compose -f docker-compose.mysql.yml up -d

# lint
$ npm run lint

# type-check
$ npm run type-check

# local에서 Server 실행
$ npm start
  1. babel을 사용해서 빌드 후, 실행하는 경우
$ npm install

$ cp .env.sample ./.env

# mysql container 실행
$ docker-compose -f docker-compose.mysql.yml up -d

# babel을 사용하여 js파일로 변환
$ npm run build

# dist에 있는 js파일 실행
$ npm run prod
  1. docker를 사용해서 실행하는 경우

    .env 파일에 DB Host가 host.docker.internal로 되어 있어야 합니다.

# what-do-you-say-server 이미지를 생성한다.
$ docker build -t what-do-you-say-server .

# 이미지를 기반으로 컨테이너를 실행한다.
$ docker-compose up # 또는 docker-compose -f docker-compose.yml up

📂 Project Structure

src
├── common
│   ├── config
│   ├── types
│   └── utils
├── controller
├── entity
├── infrastructure
│   ├── express
│   └── typeorm
├── repository
└── service

Architecture

image

About

:question: 뭐라하지? - Nexters 17th 런죽팀


Languages

Language:TypeScript 97.3%Language:Shell 1.4%Language:JavaScript 0.7%Language:Dockerfile 0.6%