Jenkins 설정 살펴보기

이준영·2025년 12월 11일

오늘은 Jenkins 설정들을 살펴 보면서 공부하기로 했다.

기본 설정

설정

일반 (General)

  1. 설명 (Description):

    • 빌드 프로젝트에 대한 자유 형식의 설명을 입력하는 공간입니다.

    • 프로젝트의 목적이나 내용을 간단히 기록하는 용도입니다.

  2. Plain text 미리보기 (Plain text Preview):

    • 입력된 설명을 미리 볼 수 있는 기능입니다.

GitHub project

  1. GitHub project (체크박스):

    • 이 빌드 프로젝트가 GitHub에 호스팅된 프로젝트와 연관되어 있음을 명시합니다. 이 옵션을 활성화하면 GitHub 관련 기능이나 플러그인 연동을 위한 설정이 가능해집니다.
  2. Project url:

    • 해당 프로젝트의 GitHub 저장소 URL을 입력합니다.

하단의 기타 옵션들

  1. Throttle builds (빌드 제한):

    • 빌드가 너무 자주 실행되는 것을 방지하기 위해 빌드 실행 횟수나 주기를 제한하는 옵션입니다.
  2. 오래된 빌드 삭제 (Discard old builds):

    • 디스크 공간을 절약하기 위해 특정 기준(예: 7일 이상 된 빌드, 최근 50개 빌드 제외 등)에 따라 오래된 빌드 기록을 자동으로 삭제하는 옵션입니다.
  3. 이 빌드는 매개변수가 있습니다 (This build is parameterized):

    • 빌드를 실행할 때 사용자가 특정 값(매개변수)을 입력하도록 설정하는 옵션입니다 (예: 빌드할 브랜치 이름, 배포 환경 등).
  4. 필요한 경우 concurrent 빌드 실행 (Execute concurrent builds if necessary):

    • 동일한 프로젝트의 빌드가 이미 진행 중일 때, 새로운 빌드 요청이 들어오면 기존 빌드가 끝날 때까지 기다리지 않고 동시에(concurrently) 새로운 빌드를 실행할 수 있도록 허용하는 옵션입니다.

소스 코드 관리

소스 코드 관리

소스 코드 관리 방식 선택

  1. None (없음):

    • 빌드를 위해 외부 소스 코드를 가져오지 않음을 의미합니다. 코드가 이미 빌드 서버 내부에 있거나, 스크립트 등을 통해 수동으로 처리할 경우 선택할 수 있습니다.
  2. Git:

    • Git 저장소에서 소스 코드를 가져와 빌드함을 의미합니다.

Repositories (저장소) 설정

  1. Repository URL:

    • 소스 코드가 저장된 Git 저장소의 URL을 입력합니다.
  2. Credentials (자격 증명):

    • 비공개(Private) 저장소에 접근하거나 Git 작업을 수행하기 위해 필요한 사용자 이름/비밀번호, SSH 키, 또는 API 토큰 등의 인증 정보를 선택하거나 추가하는 곳입니다. - none -은 자격 증명을 사용하지 않음을 의미하며, 보통 공개 저장소(Public Repository)일 경우에 해당됩니다.
  3. Add Repository (저장소 추가):

    • 하나의 프로젝트에 여러 개의 Git 저장소를 연동해야 할 경우 사용합니다.

Branches to build (빌드할 브랜치) 설정

  1. Branch Specifier (빌드할 브랜치 지정):

    • 빌드를 트리거할 특정 브랜치 이름을 지정합니다.

    • 이 필드를 비워두면 모든 브랜치에 대해 적용되거나 기본 브랜치를 사용합니다.

기타 옵션

  1. Repository browser (저장소 브라우저):

    • Jenkins 빌드 화면에서 소스 코드 변경 사항이나 커밋 정보를 볼 때 사용할 웹 인터페이스를 지정합니다. 보통 Git 선택 시 (자동)으로 설정되며, GitHub, GitLab, Bitbucket 등 저장소 서비스에 맞춰 자동으로 링크를 생성해 줍니다.
  2. Additional Behaviours (추가 동작):

    • + Add 버튼을 통해 Git 저장소 클론(Clone) 방식, 태그(Tag) 체크아웃, 서브모듈(Submodules) 처리 등 Git 관련 추가적인 동작 옵션을 설정할 수 있습니다.

Triggers

Triggers
  • 이 옵션들은 자동화된 액션을 설정하여 특정 이벤트 발생 시 빌드를 시작하도록 합니다.
  1. 빌드를 원격으로 유발 (예: 스크립트 사용) (Trigger builds remotely (e.g., from scripts)?):

    • 외부 스크립트나 시스템에서 Jenkins API를 호출하여 이 프로젝트의 빌드를 시작할 수 있도록 허용합니다. 보안 토큰을 설정하여 인증된 요청만 받도록 합니다.
  2. Build after other projects are built?:

    • 다른 Jenkins 프로젝트의 빌드가 성공적으로 완료되었을 때, 이 프로젝트의 빌드를 자동으로 시작하도록 설정합니다. 프로젝트 간의 종속성을 관리할 때 유용합니다.
  3. Build periodically?:

    • Cron 표현식을 사용하여 설정된 특정 주기 또는 시간에 이 프로젝트의 빌드를 자동으로 실행하도록 예약합니다. (예: 매일 밤 12시)
  4. GitHub Branches:

    • GitHub 플러그인과 연동하여 특정 GitHub 브랜치에 변경사항이 푸시(Push)되었을 때 빌드를 유발하도록 설정합니다.
  5. GitHub Pull Requests?:

    • GitHub 플러그인과 연동하여 해당 프로젝트에 새로운 Pull Request(PR)가 생성되거나 업데이트되었을 때 빌드를 유발하도록 설정합니다. (CI/CD 환경에서 PR 테스트에 필수적입니다.)
  6. GitHub hook trigger for GITScm polling?:

    • GitHub 저장소 설정에 Jenkins의 웹훅(Webhook)을 추가하고, 이 웹훅을 통해 GitHub에서 변경 사항이 발생했을 때 Jenkins에게 즉시 알려 빌드 유발을 확인하도록 설정합니다. (Poll SCM보다 효율적입니다.)
  7. Poll SCM?:

    • Jenkins가 일정 주기(Cron 표현식 사용)로 소스 코드 저장소(SCM)에 접속하여 코드 변경 사항이 있는지 확인하고, 변경이 감지되면 빌드를 시작하도록 설정합니다. (변경이 없으면 빌드하지 않습니다.)

Environment

Environment
  1. Delete workspace before build starts

    • 빌드를 시작하기 전에 작업 공간(Workspace)에 남아있는 이전 파일들을 모두 삭제합니다. 깨끗한 상태에서 빌드를 시작하여 이전 빌드의 잔여 파일로 인한 오류를 방지합니다.
  2. Use secret text(s) or file(s)?

    • 민감한 정보 (예: API 키, 암호, 개인 키)를 안전하게 관리하고 빌드 프로세스 중에 사용할 수 있도록 설정합니다. Jenkins의 Credentials 기능을 활용합니다.
  3. Add timestamps to the Console Output

    • 빌드 콘솔 출력 로그의 모든 라인에 타임스탬프(시간 기록)를 추가합니다. 빌드 속도를 분석하거나 특정 작업에 소요된 시간을 파악하는 데 유용합니다.
  4. Inspect build log for published build scans

    • 빌드 로그를 분석하여 "Build Scan" 정보가 있는지 확인하고, 이를 Jenkins 대시보드에 게시하거나 링크를 제공하도록 설정합니다. (주로 Gradle이나 Maven 같은 빌드 도구와 함께 사용됩니다.)
  5. Terminate a build if it's stuck

    • 빌드가 특정 시간 동안 응답이 없거나 멈춰있는 경우에 해당 빌드를 자동으로 종료(Terminate)합니다. 무한 루프나 시스템 오류로 인한 빌드 자원 낭비를 방지합니다.
  6. With Ant ?

    • 빌드 과정에 Apache Ant 빌드 도구를 통합하고 설정하여 실행할 수 있도록 합니다. (Ant 관련 옵션이 활성화됩니다.)

Build Steps

Build Steps
  1. Execute Windows batch command

    • Windows 환경에서 배치 스크립트(.bat) 명령을 실행합니다.
  2. Execute shell

    • Linux, macOS와 같은 Unix 계열 환경에서 셸 스크립트 명령을 실행합니다.
  3. GitHub PR: set 'pending' status

    • GitHub Pull Request에 빌드 상태를 pending으로 설정하여 빌드 시작을 표시합니다.
  4. Invoke Ant

    • Apache Ant 빌드 도구를 사용하여 빌드를 실행합니다.
  5. Invoke Gradle script

    • Gradle 빌드 도구를 사용하여 빌드를 실행합니다.
  6. Invoke Unity3d Editor

    • 유니티 에디터 관련 빌드 및 설정을 위한 전용 플러그인 기능입니다.
  7. Invoke top-level Maven targets

    • Apache Maven 빌드 도구를 사용하여 빌드를 실행합니다.
  8. Run with timeout

    • 특정 빌드 단계를 실행할 최대 시간을 설정하여, 시간이 초과되면 해당 단계를 강제 종료합니다.
  9. Set build status to "pending" on GitHub commit

    • Git 커밋에 빌드 상태를 pending으로 설정합니다.

빌드 후 조치

빌드 후 조치
  1. Archive the artifacts

    • 빌드 결과물(Artifacts, 예: 컴파일된 실행 파일, JAR, 빌드 로그)을 Jenkins 서버에 저장하여 나중에 다운로드하거나 배포에 사용할 수 있게 합니다.
  2. Publish JUnit test result report

    • 빌드된 코드를 실행하며 얻은 JUnit 형식의 테스트 결과를 Jenkins 대시보드에 게시하여 그래프나 상세 보고서로 보여줍니다.
  3. Record fingerprints of files to track usage

    • 파일의 지문(Fingerprint)을 기록하여, 이 파일이 다른 빌드에서 사용되는지 추적하고 빌드 간의 종속성을 파악하는 데 사용합니다.
  4. Build other projects

    • 현재 빌드가 완료되면(성공, 실패 등 특정 조건에 따라) 다른 Jenkins 프로젝트의 빌드를 자동으로 유발합니다. (파이프라인 구축에 사용)
  5. Aggregate downstream test results

    • 연쇄적으로 빌드된 후속 프로젝트(downstream)들의 테스트 결과를 모아서 통합 보고서를 생성합니다.
  6. E-mail Notification

    • 빌드 결과에 따라 미리 설정된 주소로 이메일 알림을 보냅니다 (기본 포맷 사용).
  7. Editable Email Notification

    • 이메일의 내용, 제목, 수신자 등을 더 유연하게 커스터마이징할 수 있는 확장된 이메일 알림 기능입니다.
  8. Git Publisher

    • 빌드 과정에서 발생한 변경 사항(예: 버전 태그 추가, 빌드 번호 업데이트)을 Git 저장소에 다시 푸시(Push)합니다.
  9. Set GitHub commit status (universal)

    • GitHub 커밋에 빌드 상태(성공/실패/진행 중)를 표시합니다.
  10. Set build status on GitHub commit [deprecated]

    • (사용 중단된 기능) GitHub 커밋에 빌드 상태를 설정합니다.
  11. GitHub PR: set PR status

    • GitHub Pull Request에 대한 빌드 상태(성공/실패 등)를 직접 설정하여 표시합니다.
  12. GitHub PR: add labels, close PR, post comment, remove labels

    • GitHub Pull Request에 라벨을 추가하거나 제거, 코멘트를 작성, 또는 PR을 닫는 등의 다양한 GitHub 액션을 수행합니다.
  13. Delete workspace when build is done

    • 빌드가 완료된 후 디스크 공간 확보를 위해 빌드 작업 공간(Workspace)을 자동으로 삭제합니다. (이전 Delete workspace before build starts 옵션과 대조적)

소감

옵션이 너무 많아서 상세하게 리뷰하긴 힘드네

profile
게임 개발자가 되기 위해서 공부하는 중입니다.

0개의 댓글