由於最近團隊代碼庫從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
2. 配置Github插件
系統管理 >> 系統設置 >> GitHub Plugin Configuration
首先點擊personal access token到github上
也就是github上用戶Settings >> personal access tokens
勾選給Jenkins的訪問權限,Github plugin的幫助信息里說要admin:repo_hook、repo和repo:status權限,其實repo:status是包含在repo里的,詳見這里。 點擊Generate token創建一個token
復制這個token,回到Jenkins點擊Add按鈕
選擇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
-
配置源碼管理
-
填寫項目的git地址, eg. https://github.com/your_name/your_repo_name.git
-
添加github用戶和密碼
-
選擇githubweb源碼庫瀏覽器,並填上你的項目URL,這樣每次構建都會生成對應的changes,可直接鏈到github上看變更詳情
-
-
構建觸發器勾選Build when a change is pushed to GitHub,這樣該倉庫的每一次push或者pull request都會觸發build
-
配置構建步驟隨后配置構建環境、構建步驟和構建后步驟
安裝了Github Plugin之后在構建步驟和構建后操作會多兩個設置,用於在構建時和構建后同步構建狀態到Github的,后面有效果圖
4. 配置Github倉庫的Webhook
倉庫的創建人在倉庫的Settings >> Webhooos & services添加
我們只需要push事件觸發就可以了,選中Just the push event
點擊Add webhook
yes,與github集成的Jenkins CI環境就配置好了
5. 效果
每次push都會觸發一次build,pull request的話還會在該界面直接顯示build結果
最后
整個環境終於搭好了,中間遇到了蠻多大坑小坑的,有些記錄了下來,后續整理好再發上來。
這段時間學習Jenkins收獲蠻多的,只是到現在也只學了些皮毛,寫出來的東西也頗有些晦澀。
接下來要做的實驗是通過Jenkins實現自動遠程部署。