由于最近團(tuán)隊(duì)代碼庫從coding遷移到github,在CI工具的選型上嘗試了travis-ci和circle-ci,最后決定自己搭建CI服務(wù)器,而我也有幸認(rèn)領(lǐng)了這個(gè)任務(wù)的調(diào)研,因此有了這篇文章。
之前寫過一篇文章淺談Jenkins+Node.js持續(xù)集成,那真的是淺談,Jenkins包含的東西實(shí)在太多了,作為從hudson分支出來的開源免費(fèi)的版本,插件與hudson通用,有更快的迭代速度和穩(wěn)定性。
為什么選擇Jenkins
答案簡單:因?yàn)槊赓M(fèi),學(xué)習(xí)資料多。
開始吧
安裝配置這里就不贅述了,移步淺談Jenkins+Node.js持續(xù)集成
0. 準(zhǔn)備
因?yàn)橐cGithub通信,所以需要準(zhǔn)備一臺(tái)服務(wù)器,該服務(wù)器能訪問到Github,Github能訪問到它。
為了這個(gè)測試,我特地在搬瓦工VPS買了服務(wù)器,順便介紹一下這個(gè)高性價(jià)比的vps供應(yīng)商,$2.99約合人民幣18元每個(gè)月,可一鍵搭建shadowsocks。但是記得有個(gè)坑就是購買的時(shí)候一定要選好機(jī)房,之前買過洛杉磯的卡的要死,打條命令之后要等好久才顯示,對它失去信心不想用它了,后來聽一個(gè)朋友說亞利桑那州(Arizona)的機(jī)房挺穩(wěn)定的,再給它一次機(jī)會(huì),這次買了Arizona機(jī)房的果然速度挺快的??
1. 安裝GitHub Plugin
直接安裝Github Plugin, jenkins會(huì)自動(dòng)幫你解決其他插件的依賴,直接安裝該插件Jenkins會(huì)自動(dòng)幫你安裝plain-credentials 、git 、 credentials 、 github-api
2. 配置Github插件
系統(tǒng)管理 >> 系統(tǒng)設(shè)置 >> GitHub Plugin Configuration
首先點(diǎn)擊personal access token到github上
也就是github上用戶Settings >> personal access tokens
勾選給Jenkins的訪問權(quán)限,Github plugin的幫助信息里說要admin:repo_hook、repo和repo:status權(quán)限,其實(shí)repo:status是包含在repo里的,詳見這里。 點(diǎn)擊Generate token創(chuàng)建一個(gè)token
復(fù)制這個(gè)token,回到Jenkins點(diǎn)擊Add按鈕
選擇Secret text,粘貼token,添加描述,點(diǎn)擊添加。
點(diǎn)擊Verify credentials測試token,顯示Credentials verified for user xxx, rate limit: xxxx,說明配置完成了,這樣你的Jenkins就具有訪問你的github的權(quán)限了。
3. 創(chuàng)建一個(gè)freestyle任務(wù)
-
填寫GitHub project URL???, 也就是你的項(xiàng)目主頁
https://github.com/your_name/your_repo_name
-
配置源碼管理
-
填寫項(xiàng)目的git地址, eg. https://github.com/your_name/your_repo_name.git
-
添加github用戶和密碼
-
選擇githubweb源碼庫瀏覽器,并填上你的項(xiàng)目URL,這樣每次構(gòu)建都會(huì)生成對應(yīng)的changes,可直接鏈到github上看變更詳情
-
-
構(gòu)建觸發(fā)器勾選Build when a change is pushed to GitHub,這樣該倉庫的每一次push或者pull request都會(huì)觸發(fā)build
-
配置構(gòu)建步驟隨后配置構(gòu)建環(huán)境、構(gòu)建步驟和構(gòu)建后步驟
安裝了Github Plugin之后在構(gòu)建步驟和構(gòu)建后操作會(huì)多兩個(gè)設(shè)置,用于在構(gòu)建時(shí)和構(gòu)建后同步構(gòu)建狀態(tài)到Github的,后面有效果圖
4. 配置Github倉庫的Webhook
倉庫的創(chuàng)建人在倉庫的Settings >> Webhooos & services添加
我們只需要push事件觸發(fā)就可以了,選中Just the push event
點(diǎn)擊Add webhook
yes,與github集成的Jenkins CI環(huán)境就配置好了
5. 效果
每次push都會(huì)觸發(fā)一次build,pull request的話還會(huì)在該界面直接顯示build結(jié)果
最后
整個(gè)環(huán)境終于搭好了,中間遇到了蠻多大坑小坑的,有些記錄了下來,后續(xù)整理好再發(fā)上來。
這段時(shí)間學(xué)習(xí)Jenkins收獲蠻多的,只是到現(xiàn)在也只學(xué)了些皮毛,寫出來的東西也頗有些晦澀。
接下來要做的實(shí)驗(yàn)是通過Jenkins實(shí)現(xiàn)自動(dòng)遠(yuǎn)程部署。
浙公網(wǎng)安備 33010602011771號(hào)