關於Jenkins流水線(pipeline)
Jenkins 流水線 (pipeline) 是一套插件,讓Jenkins可以實現持續交付管道的落地和實施。
關於blueocean
Blue Ocean是pipeline的可視化UI,本文中的demo暫時用不上blueocean,后續的文章中會用到;
系列文章地址
本篇實戰概覽
本文是《Jenkins流水線(pipeline)實戰》系列的第一篇,本次實戰的內容是部署好帶有pipeline插件的Jenkins環境,然后創建流水線任務並執行,全文由以下幾部分組成:
- 部署Jenkins;
- 體驗pipeline;
環境信息
為了快速完成Jenkins部署,本次實戰用到了Docker,請在實戰前准備好以下環境:
- 操作系統:Ubuntu 18.04.2 LT
- Docker:19.03.1
本次使用的Jenkins版本是2.176.3。
部署Jenkins
- 以root的身份登錄Linux,新建一個文件夾,例如我這里是/root/blueocean,進入此文件夾;
- 執行以下命令,即可創建好Jenkins環境:
docker run \
-u root \
-idt \
--name blueocean \
-p 8080:8080 \
-p 50000:50000 \
-v jenkins-data:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
jenkinsci/blueocean:1.19.0
上述命令參數中有幾處需要注意:
a. 鏡像是jenkinsci/blueocean:1.19.0:這是Jenkins官方的開源鏡像(https://github.com/jenkinsci/blueocean-plugin ),里面已經集成了pipeline和blueocean,十分方便;
b. -v jenkins-data:/var/jenkins_home:Jenkins容器在工作的時候,如果要執行Docker的命令(例如 docker ps、docker run等),需要有個途徑能連接到宿主機的docker服務,此參數就是用來建立容器和宿主機docker服務的連接的,如果您想了解這方面的詳情,請參考《docker的/var/run/docker.sock參數》;
c. -v /var/run/docker.sock:/var/run/docker.sock:將該容器的數據保留在宿主機的目錄,這樣即使容器崩潰了,里面的配置和任務都不會丟失;
3. 執行命令 docker exec blueocean cat /var/jenkins_home/secrets/initialAdminPassword,用於獲取Jenkins容器的登錄token,如下所示,控制台輸出登錄token為 a60f9aa5ebd4400e92886ca49d574198:
root@hedy:~# docker exec blueocean cat /var/jenkins_home/secrets/initialAdminPassword
a60f9aa5ebd4400e92886ca49d574198
4. 用瀏覽器訪問:http://192.168.50.75:8080 , 192.168.50.75是宿主機IP地址,頁面如下所示,在紅框中填入剛才得到的登錄token a60f9aa5ebd4400e92886ca49d574198,再點擊右下角的"繼續"按鈕:
6. 接下來的頁面是讓用戶選擇安裝哪些插件,如下圖,點擊紅框內部,安裝官方推薦插件:
7. Jenkins開始自動安裝插件,如下圖,需要您稍作等待:
8. 插件安裝完成后,會要求設置賬號和密碼,設置完畢后點擊右下角的“保存並完成”按鈕:
9. 點擊右下角的"保存並完成":
10. 至此Jenkins環境已經部署完成,查看已安裝的插件列表,發現pipeline和blueocean都已裝好:
體驗pipeline
環境准備完畢,我們來創建一個pipeline並運行試試:
- 如下圖,點擊紅框中的"新建Item":
- 在頁面表單上填寫任務名稱,再選擇"流水線",如下圖:
- 接下來會彈出詳細設置的表單,如下圖,選擇"流水線"的Tab頁,在頁面上直接輸入一段pipeline內容,再點擊左下角的"保存"按鈕:
上圖紅框3的源碼如下:
pipeline {
agent any
stages {
stage('Stage 1') {
steps {
echo 'Hello world!'
}
}
}
}
- 點擊下圖紅框中的"立即構建",即可執行剛才輸入的pipeline腳本:
- 任務執行完畢后如下圖所示,點擊紅框中的圖標,即可查看本次任務執行過程中的控制台輸出:
- 如下圖,控制台打印了pipeline的信息:
至此,Jenkins環境已經准備完畢,接下來的實戰將一起體驗流水線的更多功能。