Jenkins 作為一個持續整合的工具,與原始碼管理系統的整合尤其重要。在這個章節內,我們會介紹如何在 Jenkins 上透過原始碼管理 (source code management, SCM) 系統,例如 GitHub 來獲得專案的原始碼,並設置建置觸發程序 (build triggers) 來實踐持續整合。
接下來我一樣會使用這個專案來當作範例。我要利用 ansible-lint 這個語法檢查工具來自動檢查我的專案是否都有符合規範。因此,為了讓 Jenkins 可以使用 ansible-lint,我們必須在 Jenkins 運行的環境下先安裝好這個工具。如果是跟著實戰 Ansible 的方式安裝 Jenkins 的話,眼尖的讀者可能發現我在 docker-jenkins/defaults/main.yml 這裡已經先在運行的容器內安裝好 ansible-lint 了。當然,如果你希望運行的是更乾淨或更客製化的環境,可以在這裡任意刪除或增加套件。
在 Jenkins 運行環境下安裝好 ansible-lint 後,回到 Jenkins 管理首頁建立一個新的 Free-Style 專案。
建立完成後,在原始碼管理的欄位選擇 Git,並填入 repository URL:
這邊是使用 HTTPS 連線來存取專案。但如果是有存取限制的專案,例如 private repo,我們會看到類似以下連線失敗的畫面:
我們可以在下面的 Credentials 欄位選擇 Add > Jenkins
後,在 Kind 的欄位選擇 Username with password,並輸入你的 GitHub 帳號密碼:
輸入完成後,選擇剛剛建立的憑證 (credential),就可以發現剛剛的連線失敗警告已經消失了:
另外,如果今天想要透過 SSH 來存取專案,我們應該會遇到狀況如下:
這是因為我們的 Jenkins 還沒與 GitHub 做 SSH 的金鑰配對,所以 GitHub 拒絕 Jenkins 透過 SSH 存取。解決這個方式最簡單的作法就是在 Jenkins 主機下建立 SSH 金鑰,並將公開金鑰 key 加入你的 GitHub 帳戶中。在配對完成後,回到 Jenkins 專案的 Credentials 欄位下並選擇 Add > Jenkins
。這次在 Kind 的欄位選擇 SSH Username with private key,並依序填入剛剛 SSH 憑證的資料後點選 Add 離開:
選擇剛剛新建立的憑證,如果沒有意外現在就可以用 SSH 來存取專案囉!
在這裡讀者也可以自由選擇要從哪一個分支 (branch) 來進行建置。如果在 Branches to build 處留白,Jenkins 自動偵測專案下的所有 branches。更多細節可以點選旁邊的藍色小問號查看。