jenkins-cli
Jenkins 빌드 트리거링을 위한 크로스 플랫폼 CLI(Command Line Interface) 도구입니다. 높은 성능을 위해 Rust 언어로 작성되었습니다.
GitHub stars
English | 中文
기능 (Features)
- 빠르고 효율적인 Jenkins Job 배포
- 실시간 콘솔 출력이 가능한 직관적인 커맨드라인 인터페이스(CLI)
- 여러 Jenkins 서비스 및 프로젝트 필터링 지원
- 일반적인 Jenkins 작업 지원 (예: 빌드 트리거링)
- 높은 성능과 크로스 플랫폼 호환성 (Mac, Windows, Linux)
- 빠른 재실행을 위해 마지막 빌드 매개변수 기억 기능 제공
- Job당 여러 개의 재사용 가능한 매개변수 세트를 저장할 수 있는 매개변수 프리셋(parameter preset) 지원
- 현재 빌드에 의해 트리거된 다운스트림(downstream) 빌드를 선택적으로 추적
데모 (Demo)
Demo
설치 (Installation)
Jenkins CLI 도구를 설치하려면 다음 방법 중 하나를 사용하십시오:
bash <(curl -fsSL https://raw.githubusercontent.com/kairyou/jenkins-cli/main/scripts/install.sh)
또는 EdgeOne 미러를 사용하십시오 (GitHub 접속 불가 시):
bash <(curl -fsSL https://jenkins-cli.xhl.io/scripts/install.sh)
만약 Rust와 Cargo가 설치되어 있다면, crates.io에서 jenkins-cli를 직접 설치할 수 있습니다:
대안으로, Releases 페이지에서 바이너리 파일을 다운로드할 수도 있습니다.
TLS 인증서 검증은 자체 서명된(self-signed) 인증서를 사용하는 내부 Jenkins 배포 환경과의 호환성을 위해 기본적으로 비활성화됩니다.
사용법 (Usage)
설정 파일(Configuration 섹션 참조)을 설정한 후에는 단순히 다음 명령어를 실행할 수 있습니다:
이 명령어는 다음 작업을 수행합니다:
- Jenkins 서비스 선택 프롬프트 표시 (여러 개가 구성된 경우)
- 사용 가능한 프로젝트 목록 표시
- 프로젝트를 선택하고, 매개변수 프리셋(parameter preset), 마지막 빌드 매개변수, 또는 매개변수를 재입력하도록 선택
- 빌드를 트리거하고 실시간 콘솔 출력을 보여줍니다.
Ctrl+C 동작:
- 선택 중: 이전 단계로 돌아갑니다.
- 대기열/빌드 중: 취소할지 확인합니다.
- 빠르게 두 번 누르기: 강제 종료합니다.
또한 명령줄 인수를 사용할 수 있습니다:
jenkins -U http://jenkins.example.com:8081/job/My-Job/ -u username -t api_token
...
사용 가능한 명령줄 옵션:
-U, --url <URL>: Jenkins 서버 URL 또는 프로젝트 URL
-u, --user <USER>: Jenkins 사용자 이름
-t, --token <TOKEN>: Jenkins API 토큰
-c, --cookie <COOKIE>: Jenkins 인증 쿠키 (예: jwt_token=...)
--preset <PRESET>: 지정된 Jenkins 작업(job) URL에 대해 저장된 파라미터 프리셋을 사용합니다.
파라미터 프리셋은 일반적인 빌드 파라미터 세트를 위해 CLI에서 저장할 수 있습니다. history는 여전히 각 작업(Job)에 대한 가장 최근의 실제 빌드 파라미터를 자동으로 기록합니다.
런타임 데이터는 다음 위치에 저장됩니다:
~/.jenkins-cli/history.toml # 자동으로 기록된 마지막 빌드 파라미터
~/.jenkins-cli/presets.toml # 사용자가 저장한 파라미터 프리셋
구성 (Configuration)
홈 디렉터리에 .jenkins.toml이라는 파일을 다음 내용으로 생성합니다:
구성 옵션 (Configuration Options)
config: 전역 설정 섹션
locale: 언어 설정 (선택 사항). 기본값은 자동 감지하며, 예시로 "zh-CN", "en-US"가 있습니다.
enable_history: 마지막 빌드 매개변수 기억 여부 (선택 사항). 기본값은 true이며, false로 설정하면 비활성화됩니다.
check_update: 업데이트 자동 확인 여부 (선택 사항). 기본값은 true이며, false로 설정하면 비활성화됩니다.
timeout: HTTP 요청 시간 초과(Timeout) 시간 (초 단위, 선택 사항). 기본값은 30입니다.
follow_downstream: 현재 빌드에 의해 트리거되는 다운스트림(Downstream) 빌드를 추적할지 여부 (선택 사항). 기본값은 false입니다.
jenkins: 서비스 설정 섹션 (여러 서비스를 지원합니다)
name: 서비스 이름 (예: "SIT", "UAT", "PROD")
url: Jenkins 서버 URL
user: 사용자 본인의 Jenkins 사용자 ID
token: 사용자 본인의 Jenkins API 토큰
includes: 프로젝트를 포함할 문자열 또는 정규 표현식(regex) 패턴 목록 (선택 사항)
excludes: 프로젝트를 제외할 문자열 또는 정규 표현식(regex) 패턴 목록 (선택 사항)
enable_history: 빌드 매개변수 기억 여부 (선택 사항). 지정된 경우 전역 설정을 재정의합니다.
cookie: 선택 사항. Jenkins 인증 쿠키 (예: jwt_token=...). 설정 시 Cookie 헤더를 보냅니다.
cookie_refresh: 선택 사항. 쿠키 자동 업데이트 설정 (이 값을 cookie 필드에 다시 작성합니다).
url: 새로고침 엔드포인트 URL
method: HTTP 메서드. 기본값은 "POST"입니다.
request: 선택 사항. 요청 매개변수 ( ${cookie.<name>} 플레이스홀더를 cookie 필드의 값으로 대체합니다):
headers: 선택 사항. 추가 요청 헤더 (예: X-Client-Id = "your-client-id")
query: URL 쿼리 매개변수
form: x-www-form-urlencoded 본문 매개변수
json: JSON 본문 페이로드 (string/number/boolean/object/array 지원)
cookie_updates: 선택 사항. 응답에서 추출하여 쿠키를 업데이트하는 값 (다시 cookie 필드에 작성됩니다):
body.json:<path>: JSON 본문 경로, 예: body.json:data.refreshToken
header:<name>: 응답 헤더 이름, 예:
header:X-JWT-Token
- body.regex:<패턴>: 응답 본문(response body)에 대한 정규식이며, 캡처 그룹 1을 사용합니다. 예시: body.regex:token=([\w.-]+)
쿠키 인증 (선택 사항)
대부분의 사용자들은 user + token 조합을 사용해야 합니다. 쿠키 인증은 API 토큰을 허용하지 않는 설정에 대한 선택적 대체 수단(fallback)입니다.
참고: 만약 쿠키 값을 새로 고치는 별도의 엔드포인트가 있다면, cookie_refresh를 해당 엔드포인트를 호출하도록 구성하고 그 결과를 cookie에 다시 작성해야 합니다. 그렇지 않다면 cookie_refresh는 무시해도 됩니다.
[[jenkins]]
name = "Cookie-Refresh"
url = "https://jenkins.example.com"
...
로그인 API 예시 (토큰은 JSON 본문에 반환됨):
[[jenkins]]
name = "Login-Refresh"
url = "https://jenkins.example.com"
...
프로젝트 필터링
프로젝트를 필터링하기 위해 includes 또는 excludes를 사용할 수 있습니다:
includes: ["frontend", "backend", "^api-"] # [frontend, backend, api-]를 포함하는 프로젝트 포함
excludes: ["test", "dev", ".*-deprecated$"] # [test, dev, *-deprecated]를 포함하는 프로젝트 제외
참고: 정규식 패턴은 달리 지정되지 않는 한 대소문자를 구분합니다 (예: 대소문자 무시 매칭을 위해 (?i) 사용).
사용자 이름 및 API 토큰
사용자의 Jenkins 사용자 이름은 일반적으로 Jenkins 웹 인터페이스의 로그인 사용자 이름과 동일합니다.
API 토큰을 생성하려면:
- Jenkins 서버에 로그인합니다.
- 오른쪽 상단 모서리에 있는 자신의 이름을 클릭합니다.
- 왼쪽 사이드바에서
Configure를 클릭합니다.
API Token 섹션에서 Add new Token을 클릭합니다.
- 토큰에 이름을 지정하고 "Generate"를 클릭합니다.
- 생성된 토큰을 복사하여
.jenkins.toml 파일에 붙여넣습니다.
참고: API 토큰은 안전하게 보관하십시오. 공유하거나 버전 관리 시스템(version control)에 커밋하지 마십시오.
TODOs
라이선스
이 프로젝트는 MIT License에 따라 라이선스가 부여됩니다. 자세한 내용은 LICENSE 파일을 참조하십시오.