본문 바로가기

개발/프로그래머스 데브코스

프로그래머스 데브코스 100일차 with. TS 웹 풀스택

📚요약

지난 시간에는 E2E를 살펴봤습니다. 이번 시간에는 스테이징 배포와 인수 테스트까지 Jenkins에 파이프라인을 만들어 보겠습니다.

 

📖웹 기반 문서 편집기 제작 프로젝트

📄CI-CD 파이프라인 설계

📑전반적인 과정

  1. Code checkout > unit test > Code coverage
  2. Production build > Packaging > Image push
  3. Staging > Acceptance test
  4. 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