1. 程式人生 > >Jenkins+Github持續集成

Jenkins+Github持續集成

裏的 同步 lai 由於 node 自己 只需要 mit gin

由於最近團隊代碼庫從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

技術分享

  • 配置源碼管理
    技術分享

    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

技術分享

  • 配置構建步驟隨後配置構建環境、構建步驟和構建後步驟

安裝了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實現自動遠程部署。

Jenkins+Github持續集成