站長資訊網(wǎng)
        最全最豐富的資訊網(wǎng)站

        通過 CLI 管理 Jenkins Server

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

        通過 SSH 執(zhí)行命令

        在 Jenkins Server 的默認(rèn)安裝中,內(nèi)置的 SSH service 是沒有啟用的:

        通過 CLI 管理 Jenkins Server

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

        通過 CLI 管理 Jenkins Server

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

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

        通過 CLI 管理 Jenkins Server

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

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

        通過 CLI 管理 Jenkins Server

        現(xiàn)在就可以遠(yuǎn)程調(diào)用 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 命令查看其它命令的詳細(xì)用法,筆者會在后面的文章中詳細(xì)介紹常用命令,這里先一筆帶過。

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

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

        通過 CLI 管理 Jenkins Server

        還不賴,任務(wù)被成功的執(zhí)行了!

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

        客戶端命令行工具

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

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

        JENKINS_URL/jnlpJars/jenkins-cli.jar

        比如:

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

        注意,這是個 java 程序,要運(yùn)行它需要確保你的主機(jī)上安裝了 jre。

        通過用戶名和密碼認(rèn)證用戶身份
        下面我們用客戶端工具來觸發(fā) test job,先通過用戶名和密碼的方式進(jìn)行認(rèn)證:

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

        通過 CLI 管理 Jenkins Server

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

        使用 API Token
        安全起見還是應(yīng)該使用 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

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

        $ 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

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

        除此之外還可以通過環(huán)境變量來指定用戶名和 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 進(jìn)行連接
        好吧,客戶端命令行工具也支持通過 SSH 進(jìn)行連接。同時指定 -ssh 和 -user 選項就可以了:

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

        通過 CLI 管理 Jenkins Server

        總結(jié)

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

        參考:
        Jenkins CLI

        贊(0)
        分享到: 更多 (0)
        網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
        主站蜘蛛池模板: 欧美精品一二区| 曰韩精品无码一区二区三区| 久久久久亚洲精品男人的天堂| 精品无码一区二区三区爱欲| 精品无人区无码乱码大片国产| 1000部精品久久久久久久久| 人妻少妇精品无码专区动漫| 91国内揄拍国内精品情侣对白 | 亚洲精品欧美综合在线| 日韩精品久久久久久免费| 日韩精品无码免费视频| 国产精品婷婷午夜在线观看| 精品一区二区久久久久久久网站| 久久亚洲精精品中文字幕| 中文字幕精品亚洲无线码一区 | 国产精品无圣光一区二区| 亚洲av无码国产精品色午夜字幕| 麻豆精品| 麻豆国内精品欧美在线| 国内精品久久久久影院网站 | 中文字幕精品久久| 美女岳肉太深了使劲国产精品亚洲专一区二区三区 | 青草青草久热精品视频在线观看| 国产午夜精品一区二区三区小说| 成人午夜精品亚洲日韩 | 亚洲第一极品精品无码久久| 中文字幕亚洲精品无码| 亚洲欧洲精品成人久久奇米网| 人妻一区二区三区无码精品一区| 久久夜色撩人精品国产| 无码乱码观看精品久久| 亚洲国产精品一区二区第四页| 中文字幕九七精品乱码| 亚洲精品成人无限看| 久久久久成人精品无码中文字幕| 久久这里只有精品18| 国产精品无码一区二区三区电影| 国产成人精品男人的天堂538| 久久精品免费一区二区三区| 高清在线国产午夜精品| 国产小呦泬泬99精品|