SCM Checkout
Jenkins 에서 git clone 할 수 있도록 github credentials 준비 필요하다
코드는 각자의 private repo 에 빌드 및 테스트 가능한 상태로 준비한다
Unit Test
Node v. 18 이 설치되어 있는 Jenkins agent (builder) 에서 npm test한다.
Coverage report 를 발행하기 위한 부가의 설정을 할 예정이다.
Build
단위 테스트 실행과 동일한 agent에서 npm build한다.
frontend/build 및 backend/build 를 산출한다.
Packaging
JNLP agent 에서 docker build한다.
같은 agent 에서 docker push한다.
레지스트리 접근을 위해서 AWS credentials 설정이 필요하다.
Staging
Terraform 을 이용하여 스테이징 서버 (Minikube on EC2) 에 컨테이너 배포
컨테이너 이미지 풀에 있어 ECR 접근하기 위한 AWS credentials 설정이 필요
Terraform state 를 S3 에 저장하기 위한 AWS credentials 설정이 필요
Acceptance Test
로컬 클러스터 내에 (임시로) Selenium Standalone 인스턴스를 배포하고 WD hub 로 이용한다
Python 이 설치된 Jenkins agent (tester) 에서 테스트 케이스 실행한다
Selenium grid 를 통한 브라우저 자동화 테스트한다
Release
Staging 배포와 동일한 방식으로 프로덕션 서버에 배포한다
Terraform 환경변수와 컨테이너 환경변수만 필요에 맞도록 지정한다
Smoke Test
프로덕션 서버에 배포된 응용이 올바르게 배포되었는지 확인한다
npm i c8 -g
c8 node foo.js