由於現在我們並沒有定義任何建置程序,所以除非我們手動操作 Jenkins,不然 Jenkins 並不會主動幫我們進行建置。因此,在建置觸發程序這個欄位內,我們可以自由設定我們希望 Jenkins 何時自動幫我們建置專案。根據專案屬性的不同,我們可以採取不同的建置時機。比較常見的有以下兩種做法:
定期建置
在 Jenkins 中,我們是採取 Cron Format 的方式來定義建置行程。簡單來說,Cron Format 共分五個欄位,欄位與欄位之間可用空白或 Tab 鍵做區隔:
舉例而言,若我們希望每隔 15 分鐘就建置一次當前專案,我們可以在定義規則裡填入 H/15 * * * *
如下:
除了上述的定義外,我們還可以點擊旁邊的 ? 標誌來查看更多較彈性的 Cron Format 寫法。
GitHub hook trigger for GITScm polling
這種觸發方式在實踐持續整合時非常實用。除了定期建置外,我們也可以讓 Jenkins 自動監控當在原始碼專案有任何 push event 發生時就進行建置。為了要使用這種方式建置,有以下幾個步驟需要設定:
新增 GitHub personal access token:
進入 GitHub 首頁,點選右上角下拉式選單,點選 Settings
點選左邊的 Developer settings
點選左邊的 Personal access tokens
點選右上角的 Generate new token
輸入 token 的描述並勾選 repo scope 後,點選 Generate token 離開
將產生的 token 複製下來
進入 Jenkins 專案組態頁面,到原始碼管理的地方將 Repository URL 從原本的 https://github.com/tsoliangwu0130/my-ansible.git
修改為 https://{github-token}@github.com/tsoliangwu0130/my-ansible.git
。其中 github-token
是在第一步建立出來的 GitHub token。接著,在下面建置觸發程序的地方勾選 GitHub hook trigger for GITScm polling 並儲存離開。
最後,在 GitHub 上整合 Jenkins
到 GitHub 被建置專案的頁面下點選 Settings 標籤
點選左邊的 Integration & services
點選右下方 Add service 下拉式選單,並選取 Jenkins (GitHub plugin)
輸入 Jenkins hook url 後點選 Add service 離開
註:由於我們現在是將 Jenkins 運行在本機端,所以 Jenkins URL 是
http://localhost:8080
。然而,GitHub 並不知道誰是 localhost,為了練習,我們可以透過 ngrok 這套簡單的小工具來暫時將localhost:8080
推送到網路上。ngrok 的使用方式非常簡單,只要將檔案下載下來後,透過 command line 切換到下載目錄,並執行:
$ ./ngrok http 8080
應該就可以看到類似以下畫面:
其中http://c84557ae.ngrok.io
就是我們這次將localhost:8080
推送網路上的網址。
如此一來,Jenkins 就可以自動監控專案的變化並自動執行建置了。讀者可以根據使用上的需求,同時搭配定時建置以及自動監測的建置模式來建置專案,來徹底實踐持續整合的概念。