-
Notifications
You must be signed in to change notification settings - Fork 27
CI CD
JinHyouk York edited this page Nov 13, 2019
·
1 revision
Travis CI를 사용하여 테스트를 한다.
- Feature => client-develop [PR]
각각의 기능 브랜치에서 개발 브랜치로 PR이 일어나면 feature 브랜치에서 CI가 발생
- (Jest, Enzyme) 컴포넌트 단위/통합 테스트
- (Cypress) Storybook에서 작성한 컴포넌트에 대한 E2E 테스트
- client-develop => client-master [PR] && Feature => client-develop [Merge]
- (Cypress) Storybook에서 각 컴포넌트에 대한 E2E 테스트
- (Cypress) 실제 리액트 프로젝트에서 E2E 테스트
- client-develop => client-master [Merge]
PR 과정과 동일한 테스트 과정을 거치며, Deploy 과정을 포함
- Feature => server-develop [PR, Merge] && server-develop => server-master [PR]
(Jest, Supertest) Middleware, Controller 단위 테스트
- server-develop => server-master [Merge]
PR 과정과 동일한 테스트 과정을 거치며, Deploy 과정을 포함
Travis 에서 사용하는 환경변수임 현재까지는 아래와 같은 환경변수를 가짐
- IMAGE_NAME=test
- IMAGE_TAG=0.0.1
- DOCKER_USER=jdd04026
- secure - DOCKER_PASS
Image 에 대한 값들은 서버 deploy 시에 사용할 docker image tag임.
Jobs는 include 된 것들에 대한 Stage의 병렬 테스트가 이뤄짐.
- Feature => Develop [PR]
head branch가 develop일 경우 (develop 으로 PR이 일어날 경우) 발생하는
- stage: "Server Feature"
if: head_branch = server-develop
before_script:
- docker build -t "${DOCKER_USER}/${IMAGE_NAME}:${IMAGE_TAG}" ./server
script:
- echo "$DOCKER_USER"
- docker images
- docker run -it "${DOCKER_USER}/${IMAGE_NAME}:${IMAGE_TAG}" npm run test
- Develop => Master [PR] && Feature => Develop [Merge]
branch가 develop, master 둘중 하나일 경우 일어남
- stage: "Server Deploy"
if: branch = server-develop OR branch = server-master
before_script:
- docker build -t "${DOCKER_USER}/${IMAGE_NAME}:${IMAGE_TAG}" ./server
script:
- echo "$DOCKER_USER"
- docker images
- docker run -it "${DOCKER_USER}/${IMAGE_NAME}:${IMAGE_TAG}" npm run test
- Develop => Master [Merge]
아래의 과정은 branch 가 master 일 경우 (master로 push가 이뤄지며 merge 가 이뤄지는 상황) Deploy 과정 Develop => Master [PR] 의 과정에 이어서 일어남.
deploy:
provider: script
script:
- echo "$DOCKER_PASS" | docker login -u "$DOCKER_USER" --password-stdin;
- docker tag "${DOCKER_USER}/${IMAGE_NAME}:${IMAGE_TAG}" "${DOCKER_USER}/${IMAGE_NAME}:latest"
- docker push "${DOCKER_USER}/${IMAGE_NAME}:latest" && docker push "${DOCKER_USER}/${IMAGE_NAME}:${IMAGE_TAG}"
on:
branch: server-master
실용적인 리액트 테스트 전략
DevOps
Infra Structure
컴포넌트 작성법
Client Sturcture
데이터베이스 스키마
Yarn workspace 명령어
Docker를 이용한 서버 개발 환경
Linting Tools