Jenkins

CI

개발자들이 빠른 주기로 작업한 내용을 브랜치에 통합하고 빌드하는 개발 방식, 통합 과정에서 발생하는 이슈를 빠르게 확인하기 위해 사용

구성요소

  • 버전 관리 시스템 : Git, SVN 등
  • 브랜치 전략
  • CI 도구 : 젠킨스, 뱀부 등
  • 자동 빌드 도구 : 앤트, 메이븐 등
  • 코드 커버리지 도구
  • 정적 분석 도구
  • 테스트 자동화 도구
  • 바이너리 관리 도구
  • 패키징 자동화 도구

지속적 배포 파이프라인

  1. 개발
  2. 빌드
  3. 단위 테스트
  4. 정적 코드 분석
  5. 통합 테스트
  6. 아티팩토리에 배포
  7. 테스트 환경에 배포
  8. 인수 테스트
  9. 성능 테스트
  10. 아티팩토리 승격
  11. 프로덕션 환경에 배포

젠킨스

설치 환경

  • 서블릿 컨테이너
  • 운영체제 위 스탠드얼론 형태
  • 리버스 프록시 서버 뒤에서 실행
  • 도커

윈도우 설치

jenkins 설치 후 localhost:port로 접속

서술적 파이프라인

  • 노드 블록 : node(‘<파라미터>') {<구성성분>}
  • 스테이지, 디렉티브, 스텝이 실행될 노드
  • 여러개의 스테이지 블록, 디렉티브, 스텝으로 구성
  • 파라미터로 any, 레이블 사용
  • 스테이지 블록 : stage(‘<파라미터>') {<구성성분>}
  • 스텝과 디렉티브 모음
  • 여러 개의 노드 블록, 디렉티브, 스텝으로 구성
  • 스테이지 이름을 필수 파라미터로 가짐
  • 디렉티브
  • 스테이지가 실행될 노드
  • 환경 변수, 옵션, 파라미터, 트리거, 툴 등으로 구성
  • 스텝
  • 젠킨스에 실제 명령을 내림
  • 명령어, 스크립트 등으로 구성

Jenkins File

CI 파이프라인을 정의하는 파이프라인 스크립트, 모든 브랜치에 대해 파이프라인을 자동으로 생성해주는 멀티브랜치 파이프라인 등을 정의하는데 사용

주요 플러그인

  • Periodic Backup : 백업
  • Blue Ocean : Jenkinsfile을 생성해 스크립트를 생성

Ngrok

로컬 서버를 외부와 통신 가능하게 해주는 서비스

설치 과정

  1. ngrok 다운
  2. ./ngork http 8080(윈도우/리눅스) 또는 nohup ./ngrok http 8080 &(리눅스) 실행(후자는 백그라운드 실행)
  3. Forwarding에 외부 URL이 출력된다. 이를 복사해 Jenkins 설정에서 Jenkins Location > Jenkins URL에 붙여넣는다.
  4. Webhooks 등을 등록할 때 외부 URL을 사용한다.