文章目錄
使用指令 (jenkins cli) 來執行 Jenkins 動作:安裝 plugin、重新啟動
一般情境我們都是使用 Jenkins GUI 來操作來安裝套件或是其他動作,可說是簡單又方便幾乎沒有進入門檻,對於想要學習 Jenkins 的人非常友善,也是推薦做法,今天則是要來介紹在無法使用 GUI 的情境 - 全自動化 script 安裝或是 docker 安裝時只能透過指令來執行 Jenkins 動作
下載 Jenkins CLI
Jenkins CLI 是跟著 Jenkins 版本而有不同的,如果 Jenkins 有更新就需要重路下載,載點就是在 Jenkins 中
下載連結格式
https://{jenkis_url}/jnlpJars/jenkins-cli.jar
下載連結範例
https://localhost:8080/jnlpJars/jenkins-cli.jar
Jenkins CLI 指令介紹頁面
說明 URL 格式
http://{jenkins_url}/cli/
說明 URL 範例
http://localhost:8081/cli/
說明實例
執行 Jenkins CLI 指令
需要安裝 java 並加入環境變數中
在 Jenkins 安裝機器上,安裝 Jenkins 時即會預設安裝 Java
指令格式
java -jar jenkins-cli.jar [-s JENKINS_URL] command [options...] [arguments...]
指令範例
java -jar jenkins-cli.jar -s http://localhost:8081 version
指令實例
Jenkins CLI 特定指令說明
說明指令格式
java -jar jenkins-cli.jar -s {jenkins_url} help {command}
說明指令範例
java -jar jenkins-cli.jar -s http://localhost:8081 help install-plugin
設明指令實例
執行 Jenkins CLI 指令需認證
因為 Jenkins 重要性很高,一般都會有認驗證檢查做第一層保護,避免重要資訊外洩或是惡意操作造成問題,Jenkins CLI 也有相同機制
錯誤訊息
一般指令
ERROR: anonymous is missing the Overall/Read permission
help 指令
ERROR: You must authenticate to access this Jenkins. Jenkins CLI Usage: java -jar jenkins-cli.jar [-s URL] command [opts...] args... Options: -s URL : the server URL (defaults to the JENKINS_URL env var) -http : use a plain CLI protocol over HTTP(S) (the default; mutually exclusive with -ssh and -remoting) -ssh : use SSH protocol (requires -user; SSH port must be open on server, and user must have registered a public key) -remoting : use deprecated Remoting channel protocol (if enabled on server; for compatibility with legacy commands or command modes only) -i KEY : SSH private key file used for authentication (for use with -ssh or -remoting) -p HOST:PORT : HTTP proxy host and port for HTTPS proxy tunneling. See https://jenkins.io/redirect/cli-https-proxy-tunnel -noCertificateCheck : bypass HTTPS certificate check entirely. Use with caution -noKeyAuth : dont try to load the SSH authentication private key. Conflicts with -i -user : specify user (for use with -ssh) -strictHostKey : request strict host key checking (for use with -ssh) -logger FINE : enable detailed logging from the client -auth [ USER:SECRET | @FILE ] : specify username and either password or API token (or load from them both from a file); for use with -http, or -remoting but only when the JNLP agent port is disabled The available commands depend on the server. Run the help command to see the list.
錯誤畫面
一般指令
help 指令
解決方式 > 我個人使用指定帳號密碼的方式示範,但文件上較推薦使用 ssh 方式
說明指令格式
java -jar jenkins-cli.jar -s {jenkins_url} {command} --username {username} --password {password}
說明指令範例
java -jar jenkins-cli.jar -s http://localhost:8081 help install-plugin --username yowko --password pass.123
設明指令實例
心得
因為想要透過 docker 來建立 Jenkins 服務,為了完全自動化作業所以想到利用 command script 來安裝需要的 plugin,進而發現原來 Jenkins 提供非常完整的 CLI 支援,順手紀錄一下。
想到一個 Jenkins 就有這麼多東西要學習,真的是學無止盡呀
參考資訊
文章作者 Yowko Tsai
上次更新 2021-11-02
授權合約
本部落格 (Yowko's Notes) 所有的文章內容(包含圖片),任何轉載行為,必須通知並獲本部落格作者 (Yowko Tsai) 的同意始得轉載,且轉載皆須註明出處與作者。
Yowko's Notes 由 Yowko Tsai 製作,以創用CC 姓名標示-非商業性-相同方式分享 3.0 台灣 授權條款 釋出。