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


Jenkins相關介紹

Jenkins是一個開源軟件項目,是基於Java開發的一種持續集成工具,用於監控持續重復的工作,旨在提供一個開放易用的軟件平台,使軟件的持續集成變成可能.

目的

配置Gitlab與Jenkins,達到當Gltlab中Push代碼時,Jenkins能夠自動從Gitlab代碼庫同步代碼的最新版本,並且自動構建。

前提

安裝Gitlab Plugin、Gitlab Hook Plugin等Gitlab相關Plugins。

方法步驟

1.Jenkins中,選擇想要配置持續集成的項目,進入項目配置,勾選“觸發遠程構建”、“Build when a change is pushed to GitLab. GitLab CI Service URL”兩個選項,並配置“身份驗證令牌”

1
openssl rand -hex 12

兩個選項分別提供了兩種觸發方式來持續集成。前者適用范圍更廣,后者僅適用於Gitlab。

image

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

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

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

URL則填寫Jenkins配置中“觸發遠程構建(例如,使用腳本)”選項中所提示的URL結構組合填寫,Secret Token不填寫

1
JENKINS_URL/job/hostconf/build?token=TOKEN_NAME

勾選相應的Trigger,然后Save 保存配置即可。

還可以Test一下,如果返回200、201,則為配置成功。

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM