Gitlab Jenkins WebHook 持續集成配置踩坑記

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

image

本文將分別講解二者的使用方法與坑。工具

觸發遠程構建(更通用,多坑)

2.1 打開對應Gitlab項目倉庫配置,Settings-Integrations配置持續集成相關選項。
imagegitlab

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

image

去掉「防止跨站點請求僞造」前的勾,就能夠解決

返回403 Auth相關信息,提示用戶Anonymous Users 沒有Build等相關權限

這樣的狀況是Jenkins設置了權限限制,匿名用戶權限不足,此時須要登陸,在Gitlab的設置中URL填寫爲如下格式,帶上用戶名和密碼便可

1
https://foo:password@jenkins.example.com/github-webhook/build?token=

帶上明文密碼太危險了?Jenkins爲每一個用戶提供了Api Token。前往Jenkins-系統管理-管理用戶,選取你的用戶,會看到

image

點擊「show Api Token」 便可看到用戶的用戶名和對應的apiToken

image

所以在Gitlab中的持續集成URL能夠如此配置

1
https://username:apitoken@jenkins.example.com/github-webhook/build?token=

便可免去明文密碼帶來的危險性。

第二種方法(Gitlab專用)

填寫好Gitlab專用連接以後依然403 提示Anonymous Users沒有build權限等

在Jenkins-系統管理-系統設置中:

image

去掉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

相關文章
相關標籤/搜索