1. 程式人生 > >讓Jenkins執行GitHub上的pipeline指令碼

讓Jenkins執行GitHub上的pipeline指令碼

本文是《Jenkins流水線(pipeline)實戰》系列的第二篇,上一篇搭建好了Jenkins環境並執行了一個簡單的pipeline任務,當時我們直接在Jenkins網頁上編寫pipeline指令碼,這種方式雖然簡單,但是也有不足之處:

  1. pipeline指令碼內容複雜時,在網頁上編輯和查詢都不方便;
  2. 無法對指令碼檔案做版本管理,例如提交到GitHub上;

今天的文章打算解決上述問題:將pipeline指令碼以檔案的形勢儲存在GitHub上,讓Jenkins下載該指令碼然後執行;

系列文章地址

  1. 《Jenkins流水線(pipeline)實戰之:從部署到體驗》;
  2. 《讓Jenkins執行GitHub上的pipeline指令碼》;

    環境資訊

    為了快速搭建Jenkins環境,我這裡用到了Docker,部署Jenkins的詳情請參考《Jenkins流水線(pipeline)實戰之:從部署到體驗》,今天的實戰需是在以下環境進行的:
  3. 作業系統:Ubuntu 18.04.2 LT
  4. Docker:19.03.1
  5. Jenkins: 2.176.3(執行與Docker環境)

上傳pipeline指令碼檔案到GitHub

本次實戰用的是我自己的GitHub賬號,程式碼倉庫是:https://github.com/zq2599/blog_demos

  1. 寫一個測試用的pipeline指令碼檔案,上傳到GitHub上,如下圖,檔案地址是:https://github.com/zq2599/blog_demos/blob/master/blueocean/helloworld/Jenkinsfile
  2. Jenkinsfile檔案在程式碼倉庫的相對路徑是blueocean/helloworld,如下圖:

    GitHub開放授權

    為了讓Jenkins順利地從GitHub下載到pipelien指令碼,需要在GitHub上開放授權,具體的方式:
  3. 登入GitHub後,在右上角的賬號選單中點選Settings,如下圖:
  4. 點選下圖紅框中的"Developer settings"按鈕:
  5. 點選下圖紅框中的"Personal access tokens"按鈕:
  6. 接下來就是建立授權token的頁面,這裡要選好開放授權的功能,如下圖,兩個紅框中的功能Jenkins會用到的,必須勾選:
  7. 設定完畢後,點選底部綠色的Generate token按鈕,就會生成一個字串,這就是授權token,複製下來,稍後會用到;
    至此,GitHub上的設定就完成了,接下來在Jenkins上設定流水線任務;

    Jenkins設定流水線任務

    現在我們在Jenkins上建立一個流水線任務,該任務從GitHub下載剛才上傳的pipeline指令碼;
  8. 在Jenkins的左側選單上點選開啟 Blue Ocean,進入Blue Ocean頁面,Blue Ocean頁面比起原生的Jenkins設定頁面更加適合流水線人的管理和配置:
  9. 點選下圖紅框中的建立流水線按鈕:
  10. 進入的頁面如下圖所示,這就是設定流水線的頁面,按照序號依次設定,即可完成流水線的新建:
  11. 由於Jenkinsfile檔案不在GitHub倉庫的第一級目錄下,因此沒有被Jenkins掃描到,所以我們要手動指定Jenkinsfile檔案的位置,點選下圖中的紅框按鈕,回到任務列表:
  12. 在任務列表點選剛才新建的任務,如下圖紅框所示:
  13. 點選下圖紅框中的圖示,即可跳轉到該任務的Jenkins設定頁面:
  14. 如下圖,找到Build Configuration設定項,在下圖紅框位置輸入blueocean/helloworld/Jenkinsfile,這是剛才上傳的檔案在倉庫中的相對位置:
  15. 點選底部的儲存按鈕,儲存配置:
  16. 此時Jenkins會自動開始一個掃描GitHub倉庫的任務,如果配置無誤,該任務會執行成功:
  17. 配置完畢,再次回到Blue Ocean頁面,點開該任務,按照下圖紅框進行操作,即可執行該任務:
  18. 任務啟動後,點選下圖紅框中的活動按鈕,即可檢視任務的執行情況:
  19. 點選上圖中任何一條執行記錄,可以檢視詳情,如下圖,第三次執行情況顯示成功從GitHub獲取pipeline指令碼,並且執行成功:

    修改pipeline原始碼再次執行

    接下來驗證pipeline指令碼修改後能否立即生效:
  20. 修改Jenkinsfile檔案的內容並且提交到GitHub,如下圖紅框所示,控制檯列印的內容被修改了:
  21. 再次在Blue Ocean頁面啟動任務,可見更新Jenkinsfile和執行任務都成功了:

    至此,讓Jenkins執行GitHub上的pipeline指令碼的實戰就完成了,希望能給您帶來一些參考,接下來的文章中,我們將探索更多pipeline功能;

    歡迎關注我的公眾號:程式設計師欣宸