Jenkins CLI 필수 명령어: 작업 관리 및 제어

create-job, copy-job, delete-job, build, get-job, update-job 예제를 통해 Jenkins CLI로 작업을 관리하는 방법을 알아봅니다.

Jenkins CLI 필수 명령어: 작업 관리 및 제어

Jenkins CLI는 반복적인 작업에 웹 UI가 너무 느릴 때 작업을 관리하는 데 도움을 줍니다. 템플릿에서 작업을 생성하거나, 빌드를 트리거하거나, 스크립트에서 XML 구성을 업데이트해야 하는 경우 CLI가 직접적인 경로를 제공합니다.

이 가이드는 작업 관리 명령어인 list-jobs, get-job, create-job, copy-job, update-job, delete-job, build에 중점을 둡니다.

Jenkins CLI 설정

명령어를 실행하기 전에 Jenkins 마스터에 대한 보안 연결을 설정해야 합니다. 여기에는 CLI 클라이언트 다운로드와 적절한 인증이 포함됩니다.

1. jenkins-cli.jar 다운로드

CLI 클라이언트는 일반적으로 Jenkins 서버의 특정 엔드포인트에서 직접 찾을 수 있습니다. wget 또는 curl을 사용하여 다운로드할 수 있습니다:

wget http://your-jenkins-url:8080/jnlpJars/jenkins-cli.jar
# 또는 curl 사용
curl -O http://your-jenkins-url:8080/jnlpJars/jenkins-cli.jar

2. 인증 방법

Jenkins CLI 연결에는 인증이 필요합니다. 가장 안전하고 권장되는 방법은 일반 사용자 비밀번호 대신 API 토큰을 사용하는 것입니다.

API 토큰을 생성하려면 Jenkins 웹 UI에서 사용자 설정 > 구성 > API 토큰으로 이동합니다.

이후 모든 명령어에는 일반적으로 -s(서버 URL) 및 -auth(인증 자격 증명) 플래그를 사용한 인증이 필요합니다:

java -jar jenkins-cli.jar -s http://your-jenkins-url:8080 -auth USERNAME:API_TOKEN <command>

팁: 보안을 위해 API 토큰을 스크립트에 직접 입력하는 대신 안전한 환경 변수에 저장하거나 SSH 키 인증 방법(구성된 경우)을 사용하세요.

작업 검색을 위한 핵심 명령어

작업을 수정하기 전에 기존 작업을 나열하고 구성을 검색하는 것이 필요한 경우가 많습니다.

모든 작업 나열: list-jobs

이 명령어는 Jenkins 마스터에 구성된 모든 작업의 이름을 표시합니다.

java -jar jenkins-cli.jar -s $JENKINS_URL -auth $AUTH list-jobs

작업 구성 검색: get-job

Jenkins 작업은 XML 구성 파일로 정의됩니다. get-job 명령어를 사용하면 이 XML 정의를 검색할 수 있으며, 이는 템플릿을 기반으로 새 작업을 생성하는 데 필수적입니다.

# 'my-template-job'의 구성을 검색하여 파일에 저장
java -jar jenkins-cli.jar -s $JENKINS_URL -auth $AUTH get-job my-template-job > template-config.xml

필수 작업 관리 명령어

이 명령어들은 Jenkins 작업의 기본 라이프사이클 작업을 처리합니다.

1. 새 작업 생성: create-job

create-job 명령어는 새 작업의 이름과 해당 매개변수, 빌드 단계 및 트리거를 정의하는 XML 구성 파일이 필요합니다.

전제 조건: 먼저 유효한 XML 구성 파일(예: new-config.xml)이 있어야 하며, 일반적으로 get-job을 사용하여 검색한 템플릿을 수정하여 생성합니다.

# 예: 로컬 XML 파일을 사용하여 'project-feature-branch'라는 새 작업 생성
java -jar jenkins-cli.jar -s $JENKINS_URL -auth $AUTH create-job project-feature-branch < new-config.xml

2. 기존 작업 복사: copy-job

이것은 종종 새 작업을 생성하는 가장 빠른 방법으로, 기존 작업을 템플릿으로 사용하고 새 이름을 적용합니다. 이 명령어는 소스 작업의 구성을 효과적으로 복제합니다.

# 구문: copy-job SOURCE_JOB_NAME DESTINATION_JOB_NAME
java -jar jenkins-cli.jar -s $JENKINS_URL -auth $AUTH copy-job original-pipeline new-dev-pipeline

3. 작업 활성화 및 비활성화: enable-jobdisable-job

이 명령어들은 유지 관리, 임시 중단 또는 관리 제어에 중요하며, 빌드가 트리거되는 것을 방지하거나 허용합니다.

# 유지 관리를 위해 예약되거나 트리거된 추가 빌드를 중단하는 명령어
java -jar jenkins-cli.jar -s $JENKINS_URL -auth $AUTH disable-job legacy-project-build

# 작업을 다시 활성화하는 명령어
java -jar jenkins-cli.jar -s $JENKINS_URL -auth $AUTH enable-job legacy-project-build

4. 작업 삭제: delete-job

이 명령어는 빌드 기록 및 구성을 포함하여 Jenkins 인스턴스에서 작업을 영구적으로 제거합니다. 이 명령어는 주의해서 사용하세요.

# 작업 영구 제거
java -jar jenkins-cli.jar -s $JENKINS_URL -auth $AUTH delete-job obsolete-test-job

경고: delete-job 명령어는 CLI 환경에서 추가 확인 없이 즉시 실행됩니다. 스크립트에 이 명령어를 실행하기 전에 적절한 검증 단계를 포함해야 합니다.

빌드 트리거 및 모니터링

구성 관리 외에도 CLI는 특히 특정 매개변수가 필요한 빌드를 트리거하는 데 자주 사용됩니다.

빌드 트리거: build

build 명령어는 지정된 작업에 대한 새 빌드를 시작합니다. 작업에 매개변수가 있는 경우 -p 플래그를 사용하여 인수를 직접 전달할 수 있습니다.

# 간단한 매개변수 없는 빌드 트리거
java -jar jenkins-cli.jar -s $JENKINS_URL -auth $AUTH build nightly-deploy

# 매개변수화된 작업 트리거, 매개변수 전달
java -jar jenkins-cli.jar -s $JENKINS_URL -auth $AUTH build integration-test -p TARGET_ENV=staging -p BRANCH_NAME=hotfix-123

참고: build와 함께 -s 플래그를 사용하면 CLI는 빌드가 완료될 때까지 기다렸다가 종료 상태를 보고합니다. 그렇지 않으면 명령어는 빌드를 대기열에 넣은 후 즉시 반환됩니다.

빌드 상태 확인: get-jobconsole

CLI는 웹 UI와 같은 실시간 스트리밍을 제공하지 않지만 작업 상태를 확인하고 콘솔 출력을 검색할 수 있습니다.

특정 빌드 번호의 콘솔 출력을 보려면:

# 'my-job'의 빌드 #55에 대한 콘솔 출력 검색
java -jar jenkins-cli.jar -s $JENKINS_URL -auth $AUTH console my-job 55

CLI 스크립팅 모범 사례

Jenkins CLI를 효율적으로 활용하려면 안정성과 보안을 위한 특정 모범 사례를 채택해야 합니다:

1. 스크립팅 및 자동화

CLI는 셸 스크립트에서 가장 유용합니다. get-job을 사용하고 결과 XML을 신중하게 수정한 다음 수정된 구성을 create-job 또는 update-job을 사용하여 다시 공급합니다.

예제 워크플로(복사, 수정 및 생성):

  1. 템플릿 가져오기: get-job template-job > tmp.xml
  2. sed를 사용하여 tmp.xml의 자리 표시자(예: 프로젝트 이름, 저장소 URL)를 바꿉니다.
  3. 새 작업 생성: create-job new-job < tmp.xml

2. 구성 업데이트 처리

표준 입력에서 XML을 사용하여 기존 작업의 구성을 업데이트하려면 update-job을 사용하세요. 이는 빌드 기록을 보존하기 때문에 작업을 삭제하고 다시 생성하는 것보다 안전합니다.

# 로컬에서 수정된 구성 파일을 사용하여 'project-a' 업데이트
java -jar jenkins-cli.jar -s $JENKINS_URL -auth $AUTH update-job project-a < updated-config.xml

3. 오류 처리

스크립트에서 CLI 명령어를 실행한 후 항상 종료 코드($?)를 확인하세요. 반환 코드 0은 성공을 나타내고, 0이 아닌 코드는 오류를 나타냅니다. 이는 강력한 자동화 및 디버깅에 필수적입니다.

핵심 요점

Jenkins CLI는 반복 가능한 작업 관리를 위한 실용적인 도구입니다. get-job으로 작업 XML을 내보내고, 제어된 변경을 수행하고, update-job으로 작업을 업데이트하고, build로 빌드를 트리거하는 것으로 시작하세요. API 토큰을 스크립트에 보관하지 말고 delete-job과 같은 파괴적인 명령어를 실행하기 전에 검증하세요.