簡體   English   中英

如何讓Jenkins在推送到BitBucket git存儲庫的基礎上構建?

[英]How do I get Jenkins to build on push to a BitBucket git repository?

我有一個托管在BitBucket上的git存儲庫,並在存儲庫和我的Jenkins服務器之間設置了SSH身份驗證。 我可以手動構建Jenkins,但無法在BitBucket上獲取Jenkins服務來觸發構建。

Jenkins configuration:  
- Project Name: [my_jenkins_job]  
- Build Triggers:  
--Trigger Builds Remotely:  
---Token: [token]

BitBucket configuration:  
- Endpoint: http://[my_jenkins_address]/job/[my_jenkins_job]/build (I've also tried build?token=[token])  
- Project Name: [my_jenkins_job]  
- Module Name: [blank]  
- Token: [token]

訪問http:// {my_jenkins_address} / job / {my_jenkins_job} / build?token = {token}正確啟動構建。

為什么不將更改推送到BitBucket導致Jenkins啟動構建?

由於Bitbucket的Jenkins Hook對我來說根本不起作用,我為不同的分支機構提供了不同的Jenkins項目,我已經找到了這個解決方案:

  • 在你的Jenkins安裝Bitbucket插件
  • 將正常的帖子作為Hook添加到您的Bitbucket存儲庫( 設置 - >掛鈎 )並使用以下URL:

https:// YOUR.JENKINS.SERVER:PORT / bitbucket-hook /

如果你在jenkins上設置了身份驗證,那么URL必須是這樣的

https:// USERNAME:PASSWORD@YOUR.JENKINS.SERVER:PORT / bitbucket-hook /

  • 按如下方式配置Jenkins項目:
  • 構建觸發器 時,在將更改推送到BitBucket時啟用構建
  • 源代碼管理下選擇GIT ; 輸入您的憑據並定義要構建的分支 (如** feature / *

通過這種方式,我有三個構建項目,一個用於所有功能,一個用於開發,一個用於發布分支。 確保在URL的末尾包含斜杠('/'),否則鈎子將不起作用。

最好的是,您不必為新的Jenkins項目添加新的鈎子。

我將Jenkins實例設置為每分鍾輪詢一次存儲庫。 這不足以滿足您的需求嗎?

我們的Jenkins配置:

構建觸發器>輪詢SCM =已選中

構建觸發器>輪詢SCM> Schedule =

# every 1 minute
*/1 * * * *

你實際上可以通過Bitbucket服務讓它在Jenkins中運行,但它需要一些游戲才能讓它運行起來。

如果使用身份驗證,則可以從可以創建構建的其中一個用戶獲取API令牌。 我為Bitbucket創建了一個單獨的帳戶。 至少需要Jenkins 1.426來使用API​​令牌。 然后,您可以使用HTTP身份驗證和API令牌作為Bitbucket服務的密碼。

這就是我的設置方式:

端點: http:// [bitbucket]:[APITOKEN] @ [www.example.com/jenkins/]

項目名稱: [NameOfMyJenkinsProject]

模塊名稱: [空]

令牌: [在Jenkins項目設置中找到的令牌]

在我這樣設置后,我能夠使用令牌和身份驗證來啟用Bitbucket的推送觸發構建。

如果您在Jenkins中使用身份驗證,則令牌內容無用。

使用Git插件,並使用一個POST掛鈎與http[s]://your.site.com[/jenkins]/git/notifyCommit?url=git@bitbucket.org:your-username/your-repo.git in它。 確保輪詢已開啟並安排在某個值,否則這將無效。

使用Poll SCM很好,但是它也有一些缺點,它會從你的GIT Repository中獲取元數據,無論如何它都使用你的bitbucket服務器和Jenkins服務器的一定比例的帶寬。

如果有任何新的更新到達,Bitbucket知道何時觸發Jenkins更好。如果您使用bitbucket最新版本,則有一個插件名稱“Stash webhooks for Jenkins”,它現在與Bitbucket兼容。

在這個插件中,你只需要指定Jenkins URL和JOB名稱,這也在Jenkins和Bitbucket之間提供了額外的安全層。 在此輸入圖像描述

這是插件(Jenkins的Stash webhooks,不稱為Jenkins的Bitbucket webhooks),可以從Atlassian Marketplace下載。

在此輸入圖像描述 以上是加載項設置,您必須指定Jenkins URL和Repo Clone URL。 使用觸發器,您還可以檢查連接等。

該插件的鏈接: Jenkins的Bitbucket webhooks

這個插件的工作原理:

  1. 在Jenkins中安裝Git插件。 配置項目以使用Git進行源代碼管理。 您需要保留用於Stash中配置的存儲庫URL。 在“構建觸發器”中啟用“輪詢SCM”選項。 這是遠程觸發構建所必需的。 由於我們實際上不需要輪詢,因此您可以將輪詢頻率設置為非常不經常輪詢。 保存項目配置。
  2. 輸入Jenkins實例的URL以及您配置Jenkins要使用的存儲庫URL。 您可以使用下拉列表獲取每個支持的協議的克隆URL。 之后,隨意更改它以匹配您的Jenkins實例。
  3. 而已!

現在配置了Jenkins和Stash,如果您提交代碼,將自動發生構建觸發器。 接收后掛鈎會向Jenkins發出一個GET請求,然后告訴它輪詢存儲庫(為什么需要打開輪詢)。 輪詢檢查是否確實存在任何更改。 既然有,它會觸發構建!

只需安裝bitbucket插件並按照插件頁面上的說明操作即可:

使用URL JENKINS_URL / bitbucket-hook(不需要憑據)使用POST掛鈎配置BitBucket存儲庫。 在每次提交時,將觸發所有具有“在將更改推送到BitBucket時生成”選項的作業。

請看: https//wiki.jenkins-ci.org/display/JENKINS/BitBucket+Plugin

我一直在努力解決這個問題,並且在Jenkins文檔中找不到解決方案,我在這里找到了Cloudbees支持網站的解決方案。

你只需要將這些拖網鈎添加到你的bitbucket repo中它就可以了:

https://JENKIN_URL/bitbucket-scmsource-hook/notify
https://JENKIN_URL/bitbucket-hook

而且我為所有管道工作,甚至是MultiBranch管道。

希望這有助於某人;)

ADA

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM