📚요약
지난 시간에는 E2E를 살펴봤습니다. 이번 시간에는 스테이징 배포와 인수 테스트까지 Jenkins에 파이프라인을 만들어 보겠습니다.
📖웹 기반 문서 편집기 제작 프로젝트
📄CI-CD 파이프라인 설계
📑전반적인 과정
- Code checkout > unit test > Code coverage
- Production build > Packaging > Image push
- Staging > Acceptance test
- Release > Smoke test
📑code를 push 하면 Jenkins Master에서 동작하는 agent
- jnlp: JNLP 역할 수행, docker client, terraform client
- builder: 단위 테스트, 빌드
- dind: docker in docker. 컨테이너 패키징(이미지 빌드)를 위한 docker daemon 역할
- tester: 인수 테스트, E2E 테스트(Selenium)
📄단위 테스트 및 코드 커버리지
📑SCM Checkout
- Jenkins에서 git clone을 위한 github credentials 준비
- 코드 준비
📑Unit Test
- Builder agent에서 npm test
- Coverage report 발행(추가 설정)
코드 커버리지는 c8 패키지를 사용하겠습니다.
🍯tip! 파이프라인의 전체 과정은 시간이 너무 오래 걸리면 좋지 않기 때문에 시간을 최대한 줄이는 것이 중요하다.
📄빌드 및 패키징
📑빌드
- Builder agent에서 npm build → frontend/build, backend/build 생성
🍯tip! 빌드와 단위 테스트의 순서는 개인의 판단에 따라 순서가 바뀔 수 있다. 고민을 하는 이유는 TS를 사용하기 때문이다.
빌드 절차
- 프로덕션 빌드: Makefile을 바탕으로 build 결과물 생성
- 컨테이너 빌드: 생성된 빌드의 결과물을 포함해 컨테이너화. 추가적으로 이미지 태그에 빌드 버전 포
- 이미지 레지스트리 푸시: AWS ECR에 빌드된 이미지 푸시
Jenkins 플러그인
- Amazon ECR plugin: AWS credentials 설정을 위한 플러그
📑패키징
- JNLP agent에서 docker build & docker push(AWS credentials 설정)
📄스테이징 배포
- Terraform을 활용한 스테이징 서버에 컨테이너 배포(AWS credentials 설정)
📑과정
- Terraform 설정 파일 작성
- 배포 작업(반복적인 작업)의 효율을 위한 shell script 작성
- ECR로부터 이미지 pull 설정
- 스테이징 서버에 배포 및 테스트
- Jenkins 파이프라인에 통합
🍯tip! 쉘 스크립트를 사용하는 경우 실행할 수 있도록 x권한을 주는 것이 필요하다.
📄인수 테스트
- 로컬 클러스터에 임시로 Selenium Standalone 인스턴스 배포 WD hub 이용
- Tester agent(python 설치) 테스트 케이스 실행
최종적으로 인수테스트가 끝나면 스테이징 배포도 지우는 작업까지 해주어야 합니다.
📄CD 파이프라인 설계
📑Release
실제 프로덕션 배포를 진행합니다.
📑Smoke Test
올바르게 배포되었는지 확인합니다.
추가적으로 운영적인 측면으로 빌드에 대한 알림 설정, 모니터링과 시각화를 하는 부분이 남아있습니다.
다음 시간에 계속...
출처 & 참고
이시윤 강사님의 강의
코드 커버리지, 위키백과, 2024.08.23
'개발 > 프로그래머스 데브코스' 카테고리의 다른 글
프로그래머스 데브코스 102일차 with. TS 웹 풀스택 (0) | 2024.08.27 |
---|---|
프로그래머스 데브코스 101일차 with. TS 웹 풀스택 (0) | 2024.08.26 |
프로그래머스 데브코스 99일차 with. TS 웹 풀스택 (0) | 2024.08.22 |
프로그래머스 데브코스 98일차 with. TS 웹 풀스택 (0) | 2024.08.21 |
프로그래머스 데브코스 97일차 with. TS 웹 풀스택 (0) | 2024.08.20 |