讓Jenkins執行GitHub上的pipeline腳本

  • 2019 年 10 月 3 日
  • 筆記

本文是《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功能;

    歡迎關注我的公眾號:程序員欣宸

    在這裡插入圖片描述