[Jenkins] # Jenkins?

empty·2020년 12월 22일
2

Jenkins

목록 보기
1/2

Jenkins?

지속적 통합 (Continuous Integration), 지속적 배포 (Continuous Delivery), 배포 자동화 (Continuous Deployment)는 크게 회자되고 있다. 최근 데브옵스에 대한 관심이 증가하게 되면서 자동화의 강력한 기능을 지원하는 젠킨스라는 툴이 각광을 받기 시작하였다.

그렇다면 젠킨스는 무엇일까?

젠킨스는 2005년 2월에 처음 출시 되었고 지속적 통합을 제공해주는 툴이다. 다른 CI 툴과는 다르게 젠킨스는 다양한 이점을 제공한다.

  • 프로젝트 표준 컴파일 환경에서의 컴파일 오류 검출
  • 자동화 테스트 수행
  • 정적 코드 분석에 의한 코딩 규약 준수여부 체크
  • 프로파일링 툴을 이용한 소스 변경에 따른 성능 변화 감시
  • 결합 테스트 환경에 대한 배포작업

이 외에도 젠킨스는 500여가지가 넘는 플러그인을 온라인으로 간단히 인스톨 할 수 있는 기능을 제공하고 있으며 파이썬과 같은 스크립트를 이용해 손쉽게 자신에게 필요한 기능을 추가 할 수도 있다.

Jenkins 2

Jenkins 2는 이전 버전인 1 버전에서 비약적인 발전을 이루었다.

이전 버전에서는 불가능했던 높은 수준의 유연성과 관리가 용이한 파이프라인을 설계, 구현, 실행할 수 있게 되었다.

기존 1 버전에서는 웹 인터페이스에서 Jenkins의 Job을 정의하였는데 이제는 Jenkins DSL그루비(Groovy)를 이용하여 파이프라인과 다른 작업을 수행할 프로그램을 작성할 수 있게 되었다.

DSL은 (Domain-Specific Language : 도메인 특화 언어) 젠킨스를 위한 '프로그래밍 언어'를 뜻한다. 자세한 설명은 >> 위키 << 참고..

그루비는 웹 인터페이스에서 불가능한 접근 및 기능과 깊은 수준의 스크립트 작업을 지원하기 위해 사용되었다.

Jenkins의 편의성

Jenkinsfile

Jenkinsfile은 Job 혹은 파이프라인을 정의하는 명칭이다. Jenkinsfile 덕분에 일반 소스코드 다루는 것과 같이 파일을 이용할 수 있다. (Github 업로드, vscode로 수정 등등..)

  • 일부를 공유 라이브러리를 통해 빼낼수 있음
  • 기본적으로 Jenkinsfile을 통해 젠킨스를 실행함
  • DSL코드를 통해 외부 스크립트를 읽어들일 수 있음

선언적 파이프라인

이전의 젠킨스 코드는 젠킨스 관련 구조는 아주 조금이고 프로그램의 흐름은 그루비에 의해 관리돼었었다.
*젠킨스 언어가 아닌 그루비 언어를 배워야 하는 실정이었음

이러한 모델을 스크립트 방식의 파이프라인이라고 한다.

이 파이프라인에서 빌드후처리, 파이프라인 에러 상태확인, 알림기능 등 젠킨스에 특화된 내용은 없고 이 중의 대부분은 그루비의 try-catch-finally 구조로 구현할 수가 있다. 역시 이 방법은 많은 그루비 프로그래밍을 필요로 한다.

그루비는 자바에 파이썬, 루비, 스몰토크등의 특징을 더한 동적 객체 지향 프로그래밍 언어이다.


하지만!! 2016, 17년 클라우드 비스(CloudBees)에서 Pipelines As Code를 지원하는 선언적 파이프라인을 개발하였다. 이 문법을 통하여 파이프라인을 깔끔하고 예측 가능하게 작성할 수 있게되었다.

  • 더 이상 그루비를 이용해 젠킨스 기능을 흉내내어 파이프라인을 작성할 필요가 없어지게 됨.

젠킨스는 스크립트 방식과 젠킨스만의 독자적인 선언적 파이프라인 두 가지 형태 중 하나를 선택할 수 있게되었다.

블루오션

블루오션은 파이프라인의 각각의 스테이지에 그래픽적인 표현을 추가하고 성공과 실패 및 진행상황, 각 로그를 클릭해 손쉽게 접근하는 기능을 제공한다.

Job Type

젠킨스는 여러 Job Type타입을 통해서 파이프라인 생성과 관리를 수월하게 수행할 수 있다.

젠킨스에서 새로운 아이템을 생성하게 되면 (이 때 아이템은 젠킨스에서 프로젝트의 단위임) Job Type들을 선택할 수 있는데 각각의 Job Type들의 특징들을 알아보자.

🔨 Pipeline

말그대로 파이프라인 생성을 담당하는 Job Type이다.

파이프라인은 스크립트 방식으로 작성할 수도 있고, 선언적 방식으로 작성할 수도 있다. 이 타입의 프로젝트로 생성된 파이프라인은 Jenkinsfile을 통해서도 쉽게 생성할 수 있다.

📂 Folder

폴더는 여러 프로젝트를 하나로 묶는 방법이다. (실제 운영체제의 폴더와 비슷) 폴더의 명칭은 프로젝트 경로의 일부가 됨.

🐈 Organization

젠킨스의 기능 중 파이프라인 스크립트를 Jenkinsfile형태로 조직 저장소에 저장해 이를 기반으로 파이프라인이 실행 될 수 있게 끔 기능이 존재한다

현재 젠킨스에서는 Github, Bitbucket의 조직 저장소를 지원한다.

젠킨스는 자동으로 조직 저장소 webhook을 설정하여 저장소에 변경사항이 생길 때 마다 알림을 받게 되는데 알림이 발생하면 파이프라인을 실행하기 위해 저장소에서 Jenkinsfile을 찾아 실행되게 할 수 있다.

🕎 Multi Branche Pipeline

Jenkinsfile을 포함하고 있는 새로운 브랜치가 프로젝트에 생성되면 젠킨스는 자동으로 해당 브랜치를 위한 새로운 젠킨스 프로젝트를 생성한다. (이 프로젝트는 Git 혹은 Subversion 저장소에 적용될 수 있음)

다음장에서는 젠킨스의 기본개념, 아키텍쳐, 두 가지 문법(스크립트, 선언적)의 차이점에 대해서 알아보겠다.

Reference


0개의 댓글