站長資訊網
最全最豐富的資訊網站

通過 CLI 管理 Jenkins Server

Jenkins 內置的命令行接口允許管理員通過命令行工具訪問并管理 Jenkins。這讓我們可以通過腳本自動化的創建配置或執行任務,也就是把 Jenkins 中的配置代碼化了。Jenkins 同時支持通過 SSH 和客戶端命令行工具 jenkins-cli.jar 進行訪問。本文主要介紹如何通過這兩種方式用命令行操作 Jenkins。說明:本文的演示環境為 Ubuntu 16.04。

通過 SSH 執行命令

在 Jenkins Server 的默認安裝中,內置的 SSH service 是沒有啟用的:

通過 CLI 管理 Jenkins Server

我們可以通過下面的配置讓 Jenkins 啟用 SSH service,Jenkins ->Configure Global Security:

通過 CLI 管理 Jenkins Server

筆者選擇讓 Jenkins 的 SSH Server 監聽 8090 端口,如果你選擇的是 Random,那么監聽的端口是隨機產生的,無論如何,我們都可以用下面的命令來獲得  Jenkins SSH Server 監聽的端口號:

$ curl -Lv http://192.168.21.145:8080/login 2>&1 | grep 'X-SSH-Endpoint'

通過 CLI 管理 Jenkins Server

說明:筆者的 Jenkins Server 部署在主機 192.168.21.145 上,監聽的端口號為 8080。用戶至少要有 Overall/Read 權限才能訪問命令行接口,但是根據執行的命令的不同還需要更高的權限。本文主要演示如何配置遠程執行命令,所以演示用的用戶具有全部權限。

為用戶添加身份驗證的秘鑰
使用 SSH 的最佳方式是通過秘鑰進行身份驗證,這里我們把遠程機器上用戶的公鑰添加到 Jenkins 用戶 jack 的 Public Keys 列表中(Jenkins -> jack):

通過 CLI 管理 Jenkins Server

現在就可以遠程調用 Jenkins Server 提供的命令了,先來問一下 “我是誰?”:
$ ssh -l jack -p 8090 192.168.21.145 who-am-i

通過 CLI 管理 Jenkins Server

help 命令
我們可以通過 help 命令來查看所有的可用命令:

$ ssh -l jack -p 8090 192.168.21.145 help

通過 CLI 管理 Jenkins Server

help 命令的輸出很長,上圖僅截取了一部分,我們還可以通過 help 命令查看其它命令的詳細用法,筆者會在后面的文章中詳細介紹常用命令,這里先一筆帶過。

build 命令
為了演示方便,我們先來簡單了解一下 build 命令,它用來觸發 job 和 pipeline 的執行。下面的是用它來觸發一個名稱為 test 的 job,這個 job 非常簡單,僅僅輸出字符串 “hello”:

$ ssh -l jack -p 8090 192.168.21.145 build test -f -v

通過 CLI 管理 Jenkins Server

還不賴,任務被成功的執行了!

到此為止,我們已經可以組織自動化腳本遠程操作 Jenkins Server 了。下面我們一起看看 Jenkins 提供的另外一種方式:客戶端命令行工具。

客戶端命令行工具

雖然基于 SSH 的 CLI 非常便捷,并且能夠滿足大多數需求,但是在某些情況下,與 Jenkins 一起發布的客戶端 CLI 工具可能更合適。例如,客戶端 CLI 工具的默認傳輸方式是 HTTP,這意味著不需要在防火墻中打開額外的端口來就可以使用。
通常不需要進行特殊的系統配置來啟用基于 HTTP 的命令行連接。如果是在 HTTP(S) 反向代理后面運行 Jenkins,一定要確保請求和響應不會被緩存。

下載客戶端命令行工具
Jenkins 自帶的命令行工具是一個 java 程序,可以通過下面的 url 下載到遠程主機上:

JENKINS_URL/jnlpJars/jenkins-cli.jar

比如:

$ wget http://192.168.21.145:8080/jnlpJars/jenkins-cli.jar

注意,這是個 java 程序,要運行它需要確保你的主機上安裝了 jre。

通過用戶名和密碼認證用戶身份
下面我們用客戶端工具來觸發 test job,先通過用戶名和密碼的方式進行認證:

$ java -jar jenkins-cli.jar -s http://192.168.21.145:8080 -auth jack:123456 build test -f -v

通過 CLI 管理 Jenkins Server

雖然命令成功執行了,但使用密碼畢竟太不安全。

使用 API Token
安全起見還是應該使用 API Token,先為用戶 jack 生成 API Token:

通過 CLI 管理 Jenkins Server

把上面命令中的密碼換成 API Token 就可以了:

$ java -jar jenkins-cli.jar -s http://192.168.21.145:8080 -auth jack:11d5ca0f9ee2dac8c47492b3e6b71c82cd build test -f -v

結果和上面是一樣的。還可以把用戶名和 API Token 保存到文件中,這樣能進一步提高安全性:

$ echo jack:11d5ca0f9ee2dac8c47492b3e6b71c82cd > .jenkins-token

然后可以使用 @ 符以下面的方式引用:

$ java -jar jenkins-cli.jar -s http://192.168.21.145:8080 -auth @/home/nick/.jenkins-token build test -f -v

執行的結果也是一樣的。注意要在 @ 后面不要用 ~ 號代替用戶的家目錄。

除此之外還可以通過環境變量來指定用戶名和 API Token:

$ export JENKINS_USER_ID=jack  $ export JENKINS_API_TOKEN=11d5ca0f9ee2dac8c47492b3e6b71c82cd  $ java -jar jenkins-cli.jar -s http://192.168.21.145:8080 build test -f -v

效果也是一樣的。

通過 SSH 進行連接
好吧,客戶端命令行工具也支持通過 SSH 進行連接。同時指定 -ssh 和 -user 選項就可以了:

$ java -jar jenkins-cli.jar -s http://192.168.21.145:8080 -ssh -user jack build test -f -v

通過 CLI 管理 Jenkins Server

總結

通過 Ansible 等工具自動化的創建 Jenkins Server(參考前文《通過 Ansible 創建 Jenkins Server》),然后再通過 Jenkins 提供的 CLI 自動化的操作 Jenkins 中的配置。這樣我們就打通了整個 Jenkins Server 的自動化過程(當然,筆者還會介紹如何自動化的創建運行 Jenkins Server 的宿主機)。好吧,這都只是些簡單的 demo,在生產環境中要做的事情可要多的多!

參考:
Jenkins CLI

贊(0)
分享到: 更多 (0)
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
国产看午夜精品理论片| 精品综合久久久久久蜜月| 国产乱人伦偷精品视频免下载| 亚洲?V无码乱码国产精品| 亚洲熟妇AV日韩熟妇在线| 国产精品蜜臂在线观看| 国产精品欧美成人| 国产精品久久一区二区三区| 亚欧在线精品免费观看一区 | 国产精品午夜无码AV天美传媒| 国产精品久久久久影院嫩草| 97精品在线视频| 精品一区二区三区在线成人| 日本伊人精品一区二区三区| 久久久精品2019中文字幕2020| 国产福利精品一区二区| 久久99精品国产99久久6男男| 一本色道久久综合亚洲精品| 中文字幕无码精品三级在线电影| 在线精品国产一区二区三区| 在线亚洲精品福利网址导航| 久热精品视频第一页| 日韩精品无码人成视频手机| 中文字幕在线精品视频入口一区| 亚洲中文久久精品无码ww16| 国产精品自在线拍国产| 麻豆精品久久精品色综合| 国产精品免费大片| 久久久久国产成人精品| 99re6这里只有精品| 亚洲国产成人久久99精品| 精品国产一区二区三区色欲| 国产精品成人观看视频国产| 久久91精品国产91| 国产精品成人久久久久久久| 成人精品国产亚洲欧洲| 六月婷婷精品视频在线观看| 日韩高清特级特黄毛片| 国产精品成人小电影在线观看| 国精品无码A区一区二区| 国语自产拍精品香蕉在线播放|