Jenkins相關介紹
Jenkins是一個開源軟件項目,是基於Java開發的一種持續集成工具,用於監控持續重複的工做,旨在提供一個開放易用的軟件平臺,使軟件的持續集成變成可能.html
目的
配置Gitlab與Jenkins,達到當Gltlab中Push代碼時,Jenkins可以自動從Gitlab代碼庫同步代碼的最新版本,而且自動構建。git
前提
安裝Gitlab Plugin、Gitlab Hook Plugin等Gitlab相關Plugins。github
方法步驟
1.Jenkins中,選擇想要配置持續集成的項目,進入項目配置,勾選「觸發遠程構建」、「Build when a change is pushed to GitLab. GitLab CI Service URL」兩個選項,並配置「身份驗證令牌」web
1 |
openssl rand -hex 12 |
兩個選項分別提供了兩種觸發方式來持續集成。前者適用範圍更廣,後者僅適用於Gitlab。api
本文將分別講解二者的使用方法與坑。工具
觸發遠程構建(更通用,多坑)
2.1 打開對應Gitlab項目倉庫配置,Settings-Integrations配置持續集成相關選項。gitlab
URL則填寫Jenkins配置中「觸發遠程構建(例如,使用腳本)」選項中所提示的URL結構組合填寫,Secret Token不填寫測試
1 |
JENKINS_URL/job/hostconf/build?token=TOKEN_NAME |
勾選相應的Trigger,而後Save 保存配置便可。ui
還能夠Test一下,若是返回200、201,則爲配置成功。url
Build When a change is Pushed to gitlab(僅限Gitlab,少坑)
3.1在Jenkins中勾選Build when a change is pushed to GitLab. GitLab CI Service以後,將URL填寫到Gitlab項目的settings-Integrations中的URL,保存後進行test,若是返回20x,則測試經過。
採坑記錄
第一種方法
返回403 Crumb XXX
去掉「防止跨站點請求僞造」前的勾,就能夠解決
返回403 Auth相關信息,提示用戶Anonymous Users 沒有Build等相關權限
這樣的狀況是Jenkins設置了權限限制,匿名用戶權限不足,此時須要登陸,在Gitlab的設置中URL填寫爲如下格式,帶上用戶名和密碼便可
1 |
https://foo:password@jenkins.example.com/github-webhook/build?token= |
帶上明文密碼太危險了?Jenkins爲每一個用戶提供了Api Token。前往Jenkins-系統管理-管理用戶,選取你的用戶,會看到
點擊「show Api Token」 便可看到用戶的用戶名和對應的apiToken
所以在Gitlab中的持續集成URL能夠如此配置
1 |
https://username:apitoken@jenkins.example.com/github-webhook/build?token= |
便可免去明文密碼帶來的危險性。
第二種方法(Gitlab專用)
填寫好Gitlab專用連接以後依然403 提示Anonymous Users沒有build權限等
在Jenkins-系統管理-系統設置中:
去掉Enable authentication for ‘/project’ end-point的勾子,即不對Gitlab專用Webhook連接的/project進行權限驗證,便可進行正常持續集成。
總結
Jenkins提供了兩種方法來實現Gitlab的持續集成,前者生成了通用url,任何程序、腳本均可以調用。但若是Jenkins須要認證,則必須在url 中提供認證信息。
第二種Gitlab專用連接,配置較爲簡單,注意一下相關設置便可正常使用。
相關連接
http://www.360doc.com/content/18/0503/16/10072361_750826096.shtml
https://stackoverflow.com/questions/7427557/jenkins-and-github-webhook-http-403