seoyyyy 2025. 6. 16. 00:15

 🤗젠킨스의 작업 구성을 위한 지시사항 유형

1. 작업을 수행하는 시점(트리거)

   - 사용자는 작업에서 수행할 태스크가 언제 시작될 지 젠킨스에게 지시한다.

2. 작업을 구성하는 단계별 태스크(빌드 스텝)

   - 사용자는 특정 목표를 수행하기 위한 태스크를 단계별(step)로 구성할 수 있다.

3. 테스크가 완료 후 수행할 명령(포스트-빌드 액션)

   - 사용자는 태스크 실행이 완료된 후 젠킨스가 수행할 작업을 구성할 수 있다. (작업 결과에 대한 후속 동작)

 

😖 젠킨스의 빌드

젠킨스 빌드란 젠킨스 작업의 특정 실행 버전이다. 

사용자는 젠킨스 작업을 여러번 실행할 수 있으며 실행될 때마다 고유한 빌드 번호가 부여된다.

작업실행중 생성된 아티팩트, 콘솔 로그 등 특정 실행 버전과 관련된 모든 세부 정보가 해당 빌드 번호로 저장된다.

 

😐 프리스타일 작업

젠킨스에서는 필요에 따라 파이프라인 작업이나 프리스타일 작업등과 같은 다양한 유형의 작업을 만들 수 있다. 

그 중 프리스타일 작업은 일반적인 형태의 빌드작업(또는 태스크)라고 할 수 있다.

일반적으로 프리스타일 작업을 통해 테스트 실행, 애플리케이션 빌드 및 패키징, 보고서 전송 같은 간단한 작업을 할 수 있다.

 

🦁젠킨스 작업 생성

이제 젠킨스에 작업을 생성해본다.

 

1. 젠킨스에 로그인해 대시보드로 이동한다.(관리자 권한)

2. 작업을 생성하기 위해 왼쪽에 New Item(새로운 Item)을 클릭한다.

   - 기존에 생성된 작업이 없을 땐 대시보드 화면 중간에 Create a Job 링크가 나타나는데 동일한 화면으로 이동한다.

3. 링크를 클릭하면 아래와 같이 아이템 이름 입력 및 아이템 유형을 선택하는 화면이 나타난다.

    적당한 이름을 입력하고, Freestyle project 옵션을 선택한 후 OK 버튼을 눌러준다.

 

그러면 아이템 생성이 완료되고 Configure(작업 구성) 페이지로 이동하게 된다.

작업구성 살펴보기

이제 작업 구성에서 설정 항목들을 살펴보자

 

✔️ 설명

작업에 대한 설명이나 목적을 입력한다.

✔️ 오래된 빌드 삭제

오래된 빌드 내역에 대해 삭제할 시기를 결정하는 옵션으로 아래 두가지를 설정할 수 있다.

- 빌드 이력 유지 기간(일) : 빌드 후 지정된 날짜가 지나면 삭제한다.

- 보관할 최대갯수: 지정된 빌드 개수를 초과하면 가장 오래된 빌드를 삭제한다.

하단의 고급 버튼을 누르게되면 다음과 같은 창이 나타나게 되되며 아래 두가지를 설정할 수 있다.

- 산출물 보관일수 : 작성된 일수보다 오래된 빌드의 아티팩트는 삭제되지만 빌드의 로그, 기록, 보고서 등은 보관됨

- Max # of builds to keep with artifacts : 아티팩트와 함께 보관할 최대 빌드 수(최신순으로 보관)

참고로 빌드 아티팩트는 해당 작업을 실행한 후 생성되는 출력된 모든 산출물을 말하며 자바 애플리케이션이라면 .jar 파일이 해당작업의 아티팩트가 된다.

 

🐧매개변수형 프로젝트

만일 외부입력(매개 변수)을 받아야 하는 작업이 있다면 이 빌드는 매개변수가 있습니다 (This project is parameterized) 체크박스를 선택해주고 그에따른 매개변수 타입을 지정해줄 수 있다.

예를들어 String Parameter 유형을 선택한다면 아래와 같이 String Parameter 섹션이 나타나게되어 매개면수 명, 기본값, 그에대한 설명을 입력할 수 있다.

이 매개변수 값은 작업 빌드 스텝에서 가져와서 콘솔에 출력할 수 있다.

 

🦉프로젝트 비활성화

화면의 오른쪽 위 Enable 버튼을 통해 옵션을 비활성화하면 작업이 실행되지 않으며 새로운 빌드도 생성되지 않는다.

 

🎠 동시 빌드 실행

기본적으로 작업 실행은 한번에 하나씩만 가능하다. 만일 작업 실행버튼을 여러 번 클릭하면 현재 실행 중인 작업이 완료될 때까지 대기열에 추가되는 방식이다.

그러나 빌드를 병렬로 실행하고 싶다면 먼저 필요한 경우 concurrent 빌드 실행 옵션을 선택해준다.

이 옵션은 독립적인 여러단계로 분리될 수 있는 긴 빌드 프로세스를 실행할 때 전체 작업시간을 상당히 줄일 수 있어서 유용하다. 

 

 

고급(Advanced...) 버튼을 클릭하면 기본 옵션 외에도 고급 옵션들이 추가로 표시된다.

 

🐕‍🦺 Quiet period - 대기시간

대기시간 옵션을 선택하면 새로운 빌드가 즉시 시작되지 않고 빌드 대기열에 추가되고 나서 지정된 시간이 지나야 빌드가 시작된다. 

🐗 재시도 회수

만약 이 설정이 되지 않은 상태라면 깃 리포지터리 같은 소스코드 관리 시스템 사용 시 첫 번째 체크아웃 시도가 실패하면 바로 작업 실패로 처리되지만 이 설정을 사용한다면 작업 실패로 표시하기 전에 지정된 횟수만큼 더 체크아웃을 시도하게 된다.

재시도 사이의 시간 간격은 10초이다.

🐹 업스트림 프로젝트가 빌드하는 동안 빌드 멈춤

젠킨스에서는 작업 A에서 생성된 아티팩트가 작업 B의 작업에 사용되도록 2개의 작업을 구성할 수 있다.(작업 B를 작업 A에 종속되게 구성) 자바 어플리케이션을 예로 들 때 A는 컴파일해 .CLASS 파일을 생성하고 작업 B는 이들 클래스 파일을 사용해 .jar 파일을 생성하는것이다. 여기서 작업 A를 작업 B의 upstream job(업스트림 작업, 선행작업)이라고 부르며 반대로 작업 B는 A의 downstream job(다운 스트림 작업, 후속작업)이 된다.

이 때 이 옵션을 선택하면 업스트림 프로젝트(A)가 빌드 대기열에 있을 때 젠킨스가 이 프로젝트/작업(B)을 실행하지 않게된다.

🐹 다운스트림 프로젝트가 빌드하는 동안 빌드 멈춤

이 옵션을 선택하면 다운스트림 프로젝트(B)가 빌드 큐에 있을 대 젠킨스가 이 프로젝트/작업(A)을 실행하지 않는다.

🐱사용자 빌드 경로 사용 - 커스텀 워크스페이스 사용

젠킨스의 워크스페이스는 빌드가 실행되는 디렉터리를 말한다. 젠킨스 작업이 소스 코드를 리포지터리에서 체크아웃하는 경우에 이 디렉터리를 사용한다.

빌드가 시작되면 기본적으로 ${JENKINS_HOME}\workspace 폴더에 실행 중인 작업의 이름으로 워크스페이스 디렉터리가 생성되지만 워크스페이스 디렉터리를 직접 지정해줄 수 있다.

🐵 표시 이름 지정

이 필드에서 지정한 이름이 젠킨스 웹 화면 전체에서 프로젝트 이름으로 표시된다.

참고로 표시 이름은 웹 화면에만 나타나며 워크스페이스 디렉터리는 프로젝트 이름으로 계속 생성된다.

 

🐮 Keep the build logs of dependencies - 의존성 빌드 로그 유지

이 옵션을 선택하면 현재 작업과 관련된 모든 빌드가 로그 순환 기능에서 제외된다.

로그 순환은 젠킨스의 빌드 로그를 자동으로 압축하고 삭제하는 기능이다.

🦊 소스 코드 관리

 

이제 소스 코드 관리 섹션을 살펴보자

화면에 보이는 Git 옵션은 깃 플러그인이 설치된 경우에만 나타난다.

일반적으로 신규 소프트웨어 빌드를 생성하는 젠킨스 작업은 중앙 리포지터리로 커밋된 최신 코드에서 작동한다.

그러므로 젠킨스가 최신 코드를 다운로드해 빌드할 수 있도록 깃 코드 리포지터리 URL에 이 필드를 추가해야 한다.

 

실습을 해보기위해 내 깃 리포지터리 URL을 추가했다. 

이제 MyJob 을 실행하면 우선 최신 코드를 다운로드하게 된다. 

위 Repository URL 에 입력한 주소는 공개 리포지터리 주소로 했기 때문에 공개 깃 리포지터리는 인증이 필요없다.

하지만 개인 리포지터리의 경우엔 일반적으로 깃 리포지터리 구성에 필요한 사용자 이름, 비밀번호, SSH 개인 키나 API 토큰 같은 인증 정보를 제공해야 한다.

개인 리포지터리의 경우 에러 발생

이 오류를 해결하기 위해서는 필수 인증 정보를 갖는 Global 유형의 자격 증명을 생성해야 한다.

이 이 페이지에서 자격증명 항목을 생성하려면 아래의 ADD 버튼을 누르고 Jenkins 옵션을 찾는다. 

 

Jenkins 옵션을 클릭하면 나타나는 Jenkins Credentials Provider: Jenkins 입력창에서 필수정보들을 입력하고 Add 버튼을 클릭해주면 된다.

 

참고로 아이디는 깃허브의 아이디, 비밀번호는 깃허브 토큰값을 입력해주어야 하고 토큰 관련 설정은 깃허브 페이지의 아래 메뉴에서 설정 가능하다. (접근 권한들을 지정해주어야 함)

 

개인 리포지토리에서 올바른 인증 정보가 입력되면 아래와같이 에러메세지가 사라진 모습을 볼수있다.

 

🦐 Branches to build  - 빌드 브랜치

기본적으로 젠킨스 작업은 마스터 브랜치를 기준으로 변경 사항을 확인하고 원격 리포지터리의 브랜치에서 코드를 다운로드한다.

다른 브랜치로 지정하고 싶다면 Branches to Build 필드에 새로운 브랜치 이름을 지정해야 한다. 

 

🦊 Triggers - 빌트 트리거

트리거 섹션 내의 설정값을 사용해서 젠킨스에서 작업에 착수(시작)하는 시점을 설정할 수 있다.

🦁빌드를 원격으로 유발

깃 리포지터리 같은 외부 서비스에서 젠킨스 작업을 시작할 수 있다.

즉 개발자가 코드를 마스터 브랜치에 병합하면 젠킨스 작업이 시작되는 경우이다.

 

해당 옵션에 체크박스를 선택하면 Token 을 입력하는 항목이 나타난다.

그리고 <젠킨스url>/job/<작업이름>/build?token=<토큰이름> 형식으로 원격 빌드요청을 한다.

 

- 젠킨스 url: 젠킨스 인스턴스에 접근하기 위한 URL(ex. http://localhost:8092)

- 작업이름: 젠킨스 작업 이름, 표시 이름이 아닌 작업 이름을 입력한다.

- 토큰이름: 이 작업을 시작하는데 사용할 액세스 토큰이다.

 

😍 Build after other projects are built  - 다른 프로젝트 빌드 완료 후 빌드 시작

이 옵션은 다른 작업이 완료된 후에 이 작업을 자동으로 시작하고 싶을 때 선택한다.

이 작업 설정 시 4가지 옵션을 사용해서 의존성 작업 상태에 따른 작업 시작 여부를 구성할 수 있다.

- Trigger only if build is stable (빌드가 안정한 경우에만 시작)

  : 이 옵션 선택 시 작업의 빌드가 안정(성공)한 경우에만 작업이 시작된다.

- Trigger even if the build is unstable(빌드가 불안정한 경우에도 시작)

  : 애플리케이션을 컴파일하고 Junit에서 단위 테스트 보고를 게시하기로 한 경우, 컴파일은 성공했지만 단위테스트 실패해 빌드가 불안정한 경우에도 작업이 실행된다.

- Trigger even if the build fails(빌드가 실패해도 시작)

  : 이 옵션 선택 시 선행작업 빌드가 실패하거나 중단된 경우에도 작업이 시작된다.

- Always trigger, even if the build is aborted(빌드가 중단되더라도 항상 시작)

  : 빌드가 중단되더라도 작업이 시작된다. 

 

🤩 Build Perodically - 정기 빌드

이 옵션을 사용 시 매일, 매월, 매주 같은 특정 시간과 간격에 따라 빌드를 시작할 수 있다. 윈도우 작업 스케쥴러나 유닉스의 cron 작업과 같은 기능이라고 볼 수 있다.

Schedule 입력 텍스트 박스에는 크론 표현식으로 작성하면 된다.

더보기

크론 표현식

MINUTE HOUR DOM MONTH DOW

- MINUTE: 분(0~59)
- HOUR: 시간(0~24)
- DOM(Day of Month): 날짜(1~31)
- MONTH: 월(1~12)
- DOW(Day Of Week): 요일(0~7)

예를들어 매일 오전 8시 45분에 작업을 실행하고 싶다면 아래와 같이 작성하면 된다.

🐗 Poll SCM 

이 옵션 사용 시 젠킨스가 SCM 섹션에 지정한 URL에 있는 소스 코드의 변경 여부를 확인하는 시간 간격(폴링 타임)을 구성할 수 있다. 정기 빌드의 스케쥴을 설정할때와 마찬가지로 크론 표현식으로 작성하면 된다.

만일 5분마다 SCM을 점검하게 하고 싶다면 H/5 * * * * 와 같이 입력하면 된다. 

 

🐮 빌드 스텝

빌드스텝은 1개 이상의 단계(스텝)을 하나씩 실행하는 식으로 현재 작업에 할당된 태스크를 수행할 때 사용한다.

스탭은 배치파일을 실행할수도 있고, 다른 빌드 도구를 실행하는 것일 수도 있다.

예를 들어, 윈도우 터미널의 명령을 실행하는 스텝을 추가한다면 Add Build Step 버튼을 클릭하여 Execute Windows batch command(윈도우 배치 명령 실행) 옵션을 선택하면 된다. 

 

😚포스트-빌드 액션 - 빌드 후 조치

할당된 태스크가 완료된 이후에 수행하려는 작업이 있을 때 사용한다.

예를들어 작업 완료 후 이메일 알림을 보내는 작업이 대표적이다.


 

🐵 작업 실행 및 결과 확인

젠킨스에선 작업이 생성, 구성, 저장될 때마다 작업 결과가 대시보드에 표시된다.

특정 작업을 수동으로 실행하고자 하면 작업 항목의 실행 아이콘을 클릭한다.

작업이 완료되면 대시보드 페이지 왼쪽에 빌드 기록(Build History)링크를 클릭해 빌드 실행 내역을 확인할 수 있다.

실습을 위해 MyJob 지금까지 빌드를 총 2번 실행했더니 빌드 기록에 MyJob #1과 MyJob #2가 존재하는 것을 확인할 수 있다.

맨 우측에 Console Output 콘솔 출력 아이콘을 클릭하면 

콘솔의 세부 내역을 확인할 수 있다.

아래 내용을 자세히 보면 빌드 스텝 옵션으로 설정한 echo "HI there"도 확인할 수 있다.


 

🦊작업 수정

기존 젠킨스 작업을 수정하고 싶다면 대시보드로 돌아가 해당 작업 우측 드롭다운 메뉴를 클릭하여 구성 옵션을 클릭하면 된다.


🥸워크스페이스 보기

특정 작업의 워크스페이스를 보고 싶다면 대시보드에서 작업 항목을 클릭하고 좌측의 작업공간(workspace)메뉴를 선택한다.

참고로 이 워크스페이스는 따로 설정하지 않았다면 기본 jenkins_homeworkspace 폴더에서도 확인할 수 있다. 


😠워크스페이스 비우기

특정 작업의 워크스페이스를 비우려면 위 작업 공간 하위메뉴인 작업공간 초기화 메뉴를 선택한다.


🤩작업 삭제

기존 작업을 삭제하려면 대시보드에서 작업의 드롭다운 메뉴를 클릭하여 Project 삭제(Delete Project) 옵션을 선택한다.