Infra/CI, CD

[Jenkins] 젠킨스 Job과 Pipeline 이란 ?

민돌v 2023. 4. 3. 21:10
Jenkins 의 빌드 기능을 사용하는데있어서 Jenkins 라는 서비스의 기본적인 구성요소 정도는 알고싶어서 정리하는 글입니다.
틀렸거나 더 좋은 내용이 있다면 지적 부탁드리겠습니다!

 

 

===== Jenkins 간단 CI/CD 구축해보기 Series.  =====

 

 

제발 화내지 말아줘;;

[목차]

  1. jenkins job 이란
  2. jenkins 구성요소들
  3. jenkins 파이프라인

Jenkins Job 이란

1) Jenkins Jobs

  • 젠킨스에 로그인을 해서 처음 접속을 하면 위의 화면 처럼 "Create a Job" 이라는 문구가 보입니다.
  • 이 job이란 이름 그대로 jenkins에서 실행되는 각각의 작업을 의미합니다.
  • 이 job 이 jenkins의 실행단위이고, 사용자는 job 을 커스텀하게 설정하여 하나의 빌드 프로세스를 만들 수 있습니다.

 

1. 여기서 Create Job 혹은 New Item 을 선택하여 Job을 만들 수 있습니다.

  • 아래의 6가지 선택지가 job 의 종류로 알고있고, 가장 기본적인 Freestyle project 로  job을 세팅할 수 있고
  • Pipeline을 이용하여 미리 설정되어있는 ppt 템플릿 같은 개념의 프로세스들을 사용하여 job을 만들 수 있다고 합니다.
  • 저는 먼저 Freestyle projcect 로 하나씩 해보면서 익숙해져 볼려고 합니다.


 

2.  OK 버튼을 누르면 아래와 같이 작업을 정의하는 화면이 나타나게 됩니다. 하나씩 살펴보겠습니다

2-1) General

job의 기본적인 설정을 정의합니다. 하나씩 살펴보도록 하겠습니다

2-1-1) GitHub project

  • 해당 Job과 연동할 원격 저장소가 있다면 url 을 적어주면 될 것 같습니다.
  • 추후에, Github 의 특정 행동(Trigger) 가 발생했을 때 해당 행동이 웹훅으로 날라왔을 때 체킹하는 행위 등을 할 수 있을 것 같습니다.

2-1-2) Throttle builds

  • Throttle builds 는 빌드가 동시에 여러번 호출되는걸 막는 작업입니다.
  • 예를 들어 빌드가 일어나고 5분안에는 빌드가 다시 일너나지 않도록 합니다.
  • Number of Builds 와 Time Period로 시간을 설정할 수 있는 것 같습니다.
  • 하단에 체크박스는, 위에서 언급했는 웹훅같은 트리거로 발생되는 빌드는, 해당 시간 제한을 받지 않는다는 옵션같습니다.

2-1-3) 오래된 빌드 삭제

  • 오래된 빌드 삭제는 빌드 이력 유지기간과 보관할 최대 갯수를 설정할수 있는데 용량을 최소화 하고 싶다면 설정해줍니다.

2-1-4) job 매개변수

  • 매개변수는 빌드 작업중 사용할수 있는 변수이고 예를들어 한 작업에서 개발 버전 배포, Staging 배포, QA배포 등을 분기할때 사용할 수도 있다고합니다.

 

2-2) 소스 코드 관리

소스코드 관리는 원격 저장소의 트리거 → Web hook → jenkins 빌드 이 연결을 위한 설정입니다.
  • source code management를 사용하기위해선 각 source code management의 plugin을 다운받아야 합니다. 저는 git을 다운받았기 때문에 아래와 같이 git을 선택할 수 있습니다.
  • Repository URL에 job에서 사용할 github의 repository url을 입력하면 됩니다. private 저장소일 경우 credentails을 추가해 사용할 수 있습니다. 또한, job에서 사용할 branch도 직접 선택해 사용할 수 있습니다. default branch는 master입니다.
  • 해당 부분은 각 의미는 아래 사진과 같고, 실제 Github 와의 연동은 나중에 해보겠습니다.

 

2-3)  build triggers

job을 실행시킬 trigger event를 선택합니다.

위에서 Github hook trigger를 선택할 경우, source code management에 등록한 repository에 commit이 발생하면 자동으로 jenkins job이 실행됩니다.


2-3)  build steps

job이 실행될때 수행할 build script를 작성합니다.

  • linux의 경우엔 Excute shell을 선택하고 수행할 build command line를 순서대로 작성하면 됩니다.
  • 이때 작성하는 순서 (step) 에 따라 빌드가 실행됩니다.

 

2-4) post-build actions (빌드 후 조치)

해당 job 완료 후 수행할 작업을 정의합니다.

  • 빌드가 완련 된 후, 해당 job 에서 추가로 조치할 액션을 설정할 수 있습니다.
  • 이메일 보내기, 테스트 리포트 보기, 다른 프로젝트 빌드하기, 배포하기 등 의 작업을 진행할 수 있습니다.

 


 

3. Jenkins Run

생성한 job은 jenkins 메인 화면에서 확인할 수 있습니다.

  • 이때 왼쪽의 'S'는 last build의 status를 나타내며, 'W'는 최근 5번 job의 build status를 나타냅니다.

  • job의 이름 옆을 클릭한 뒤 build now를 선택해 해당 job을 실행할 수 있습니다.

 

 

 


2. Jenkins 파이프라인

파이프라인에 대해서는 간단하게만 집고 넘어가겠습니다.

파이프라인, 즉 뭔가의 연결된 통로라는 건데 젠킨스의 파이프라인이란 쉽게이야기하자면 → 젠킨스의 잡의 연결들 입니다.

즉, job-job-job 이렇게 일련의 작업을하는 젠킨스 잡들을 연결해놓은 job의 그룹을 젠킨스의 파이프라인라고 합니다.

젠킨스 파이프라인은 미리 만들어놓은 잡이아닌, 설정한 파이프라인에서만 사용하는 단일 잡을 사용할 수 도있고

본인이 만든 젠킨스 Job들을 순차적 혹은 병렬적으로 실행시키거나 특별하게 작성한 스크립트로 이벤트들을 연속적으로 실행시키는 등의 일을 지원합니다.

 

1) 파이프라인을 사용하기 위해서는 플러그인을 설치해야합니다.

https://jojoldu.tistory.com/355

2) 그 후 new item 을 생성할 떄 pipeline 을 선택하시면 됩니다.

https://jojoldu.tistory.com/355

3) 그리고 나면 freestyle project와 다르게 pipeline script 공간이 생기는데 이때 작성되는 스크립트는 언어는 groovy 언어이고, 각각의 stage가 하나의 job으로 실행됩니다.

https://jojoldu.tistory.com/355
https://jojoldu.tistory.com/355