天天看點

Jenkins+Github持續內建

由于最近團隊代碼庫從coding遷移到github,在CI工具的選型上嘗試了travis-ci和circle-ci,最後決定自己搭建CI伺服器,而我也有幸認領了這個任務的調研,是以有了這篇文章。

之前寫過一篇文章淺談Jenkins+Node.js持續內建,那真的是淺談,Jenkins包含的東西實在太多了,作為從hudson分支出來的開源免費的版本,插件與hudson通用,有更快的疊代速度和穩定性。

為什麼選擇Jenkins

答案簡單:因為免費,學習資料多。

開始吧

安裝配置這裡就不贅述了,移步淺談Jenkins+Node.js持續內建

0. 準備

因為要與Github通信,是以需要準備一台伺服器,該伺服器能通路到Github,Github能通路到它。

為了這個測試,我特地在搬瓦工VPS買了伺服器,順便介紹一下這個高成本效益的vps供應商,$2.99約合人民币18元每個月,可一鍵搭建shadowsocks。但是記得有個坑就是購買的時候一定要選好機房,之前買過洛杉矶的卡的要死,打條指令之後要等好久才顯示,對它失去信心不想用它了,後來聽一個朋友說亞利桑那州(Arizona)的機房挺穩定的,再給它一次機會,這次買了Arizona機房的果然速度挺快的?

1. 安裝GitHub Plugin

直接安裝Github Plugin, jenkins會自動幫你解決其他插件的依賴,直接安裝該插件Jenkins會自動幫你安裝plain-credentials 、git 、 credentials 、 github-api

Jenkins+Github持續內建

2. 配置Github插件

系統管理 >> 系統設定 >> GitHub Plugin Configuration
Jenkins+Github持續內建

首先點選personal access token到github上

也就是github上使用者Settings >> personal access tokens

Jenkins+Github持續內建

勾選給Jenkins的通路權限,Github plugin的幫助資訊裡說要admin:repo_hook、repo和repo:status權限,其實repo:status是包含在repo裡的,詳見這裡。 點選Generate token建立一個token

Jenkins+Github持續內建

複制這個token,回到Jenkins點選Add按鈕

Jenkins+Github持續內建

選擇Secret text,粘貼token,添加描述,點選添加。

點選Verify credentials測試token,顯示Credentials verified for user xxx, rate limit: xxxx,說明配置完成了,這樣你的Jenkins就具有通路你的github的權限了。

3. 建立一個freestyle任務

  • 填寫GitHub project URL, 也就是你的項目首頁

    https://github.com/your_name/your_repo_name

Jenkins+Github持續內建
  • 配置源碼管理
    Jenkins+Github持續內建
    1. 填寫項目的git位址, eg. https://github.com/your_name/your_repo_name.git
    2. 添加github使用者和密碼
    3. 選擇githubweb源碼庫浏覽器,并填上你的項目URL,這樣每次建構都會生成對應的changes,可直接鍊到github上看變更詳情
  • 建構觸發器

    勾選Build when a change is pushed to GitHub,這樣該倉庫的每一次push或者pull request都會觸發build

Jenkins+Github持續內建
  • 配置建構步驟

    随後配置建構環境、建構步驟和建構後步驟

安裝了Github Plugin之後在建構步驟和建構後操作會多兩個設定,用于在建構時和建構後同步建構狀态到Github的,後面有效果圖

Jenkins+Github持續內建

4. 配置Github倉庫的Webhook

倉庫的建立人在倉庫的Settings >> Webhooos & services添加

我們隻需要push事件觸發就可以了,選中Just the push event

點選Add webhook

yes,與github內建的Jenkins CI環境就配置好了

Jenkins+Github持續內建

5. 效果

每次push都會觸發一次build,pull request的話還會在該界面直接顯示build結果

Jenkins+Github持續內建
Jenkins+Github持續內建

最後

整個環境終于搭好了,中間遇到了蠻多大坑小坑的,有些記錄了下來,後續整理好再發上來。

這段時間學習Jenkins收獲蠻多的,隻是到現在也隻學了些皮毛,寫出來的東西也頗有些晦澀。

接下來要做的實驗是通過Jenkins實作自動遠端部署。