本文是《Jenkins流水線(pipeline)實戰》系列的第二篇,上一篇搭建好了Jenkins環境並執行了一個簡單的pipeline任務,當時我們直接在Jenkins網頁上編寫pipeline腳本,這種方式雖然簡單,但是也有不足之處:
- pipeline腳本內容復雜時,在網頁上編輯和查找都不方便;
- 無法對腳本文件做版本管理,例如提交到GitHub上;
今天的文章打算解決上述問題:將pipeline腳本以文件的形勢保存在GitHub上,讓Jenkins下載該腳本然后執行;
系列文章地址
環境信息
為了快速搭建Jenkins環境,我這里用到了Docker,部署Jenkins的詳情請參考《Jenkins流水線(pipeline)實戰之:從部署到體驗》,今天的實戰需是在以下環境進行的:
- 操作系統:Ubuntu 18.04.2 LT
- Docker:19.03.1
- Jenkins: 2.176.3(運行與Docker環境)
上傳pipeline腳本文件到GitHub
本次實戰用的是我自己的GitHub賬號,代碼倉庫是:https://github.com/zq2599/blog_demos
- 寫一個測試用的pipeline腳本文件,上傳到GitHub上,如下圖,文件地址是:https://github.com/zq2599/blog_demos/blob/master/blueocean/helloworld/Jenkinsfile
- Jenkinsfile文件在代碼倉庫的相對路徑是blueocean/helloworld,如下圖:
GitHub開放授權
為了讓Jenkins順利地從GitHub下載到pipelien腳本,需要在GitHub上開放授權,具體的方式:
- 登錄GitHub后,在右上角的賬號菜單中點擊Settings,如下圖:
- 點擊下圖紅框中的"Developer settings"按鈕:
- 點擊下圖紅框中的"Personal access tokens"按鈕:
- 接下來就是創建授權token的頁面,這里要選好開放授權的功能,如下圖,兩個紅框中的功能Jenkins會用到的,必須勾選:
- 設定完畢后,點擊底部綠色的Generate token按鈕,就會生成一個字符串,這就是授權token,復制下來,稍后會用到;
至此,GitHub上的設置就完成了,接下來在Jenkins上設置流水線任務;
Jenkins設置流水線任務
現在我們在Jenkins上創建一個流水線任務,該任務從GitHub下載剛才上傳的pipeline腳本;
- 在Jenkins的左側菜單上點擊打開 Blue Ocean,進入Blue Ocean頁面,Blue Ocean頁面比起原生的Jenkins設置頁面更加適合流水線人的管理和配置:
- 點擊下圖紅框中的創建流水線按鈕:
- 進入的頁面如下圖所示,這就是設置流水線的頁面,按照序號依次設置,即可完成流水線的新建:
- 由於Jenkinsfile文件不在GitHub倉庫的第一級目錄下,因此沒有被Jenkins掃描到,所以我們要手動指定Jenkinsfile文件的位置,點擊下圖中的紅框按鈕,回到任務列表:
- 在任務列表點擊剛才新建的任務,如下圖紅框所示:
- 點擊下圖紅框中的圖標,即可跳轉到該任務的Jenkins設置頁面:
- 如下圖,找到Build Configuration設置項,在下圖紅框位置輸入blueocean/helloworld/Jenkinsfile,這是剛才上傳的文件在倉庫中的相對位置:
- 點擊底部的保存按鈕,保存配置:
- 此時Jenkins會自動開始一個掃描GitHub倉庫的任務,如果配置無誤,該任務會執行成功:
- 配置完畢,再次回到Blue Ocean頁面,點開該任務,按照下圖紅框進行操作,即可運行該任務:
- 任務啟動后,點擊下圖紅框中的活動按鈕,即可查看任務的執行情況:
- 點擊上圖中任何一條執行記錄,可以查看詳情,如下圖,第三次執行情況顯示成功從GitHub獲取pipeline腳本,並且執行成功:
修改pipeline源碼再次執行
接下來驗證pipeline腳本修改后能否立即生效:
- 修改Jenkinsfile文件的內容並且提交到GitHub,如下圖紅框所示,控制台打印的內容被修改了:
- 再次在Blue Ocean頁面啟動任務,可見更新Jenkinsfile和執行任務都成功了:
至此,讓Jenkins執行GitHub上的pipeline腳本的實戰就完成了,希望能給您帶來一些參考,接下來的文章中,我們將探索更多pipeline功能;