콘텐츠로 이동

2022 07 07

2022-07-07

젠킨스

  • 참고: https://www.youtube.com/watch?v=JPDKLgX5bRg&list=PLyCrzNKjgGKZlrdwSYnIZrJBaItSaTKP0
  • 참고: https://ict-nroo.tistory.com/31
  • CI/CD
    • CI: Continuous Integration
      • 여러 개발자들의 코드베이스를 계속해서 통합하는 것
    • CD: Continuous Delivery
      • 사용자에게 제품을 서비스를 지속적으로 배달한다
      • 코드베이스가 항상 배포가능한 상태를 유지하는 것
    • CD: Continuous Deployment
      • 코드베이스를 사용자가 사용가능한 환경에 배포하는 것을 자동화
    • CI/CD Pipeline
      • 코드 작성 => 빌드 => 테스트 => 배포
  • 젠킨스
    • 자바 런타임 위에서 동작하는 자동화 서버
    • 빌드, 테스트, 배포 등 자동화
  • 이점 - 프로젝트 표준 컴파일 환경에서의 컴파일 오류 검출 - 자동화 테스트 수행 - 정적 코드 분석에 의한 코딩 규약 준수여부 체크 - 프로파일링 툴을 이용한 소스 변경에 따른 성능 변화 감시 - 결합 테스트 환경에 대한 배포작
  • 주요 플러그인
    • Credentials Plugin : 각종 리소스에 접근하기 위해 중요 정보 저장
    • Pipeline Plugin
    • Docker Plugin
  • Pipeline 구성하는 요소
    • 파이프라인이란 CI/CD 파이프라인을 젠킨스에 구현하기 위한 일련의 플러그인들의 집합이자 구성
    • 여러 플러그인들을 파이프라인에서 용도에 맞게 사용하고 정의함으로써 파이프라인을 통한 서비스 배포
    • Pipeline syntax
      • Declarative Pipeline => 더 가독성 좋은 문법
      • Scripted Pipeline
  • Pipeline Syntax
    • Sections
      • Agent Section
        • 젠킨스는 많은 일들을 해야하기 때문에 혼자하기 버거움
        • 여러 slave node를 두고 일을 시킬 수 있는데, 이처럼 어떤 젠킨스가 일을 하게 할 것인지 지정
        • 젠킨스 노드 관리에서 새로 노드 띄우거나 docker 이미지 등을 통해 처리 가능
      • Post Section
        • 스테이지가 끝난 이후의 결과에 따라 후속 조치를 취할 수 있음
      • Stages Section
        • 어떤 일들을 처리할 건지 일련의 stage 정의
      • Steps Section
        • 한 스테이지 안에서의 단계로 일련의 스텝 보여줌
  • 여러 배포 환경의 관리
    • 인프라를 모듈화하여 어떤것이 변수인지 잘 설정하고 이를 잘 설계하는 것
    • APP_ENV => 현재 배포하고자 하는것이 무슨 환경인지 설정하고 앱 내에서 사용하는 다양한 변수들을 APP_ENV에 맞게 잘 가져다 쓸 것
    • aws의 parameter store 키 관리 서비스 쓸 것
  • ECR & ECS
    • ECR
      • 도커 이미지를 저장하는 프라이빗 레포
    • ECS
      • 도커 컨테이너 기반으로 서비스 운영 가능케 함
      • 롤링 업데이트, 스케일업, 로드 밸런싱 싹다 알아서 해줌