2015-07-10 41 views
5

我的要求是,無論何時開發人員推送到github,那麼在推送CI構建之前應該在Jenkins服務器上觸發。如果構建失敗,那麼推送給github應該被拒絕。 我需要爲此編寫鉤子,但我不想編寫客戶端鉤子,因爲它們可以被開發人員禁用。我想要服務器端的github webhooks或預先接收鉤子。Github webhooks - 預推鉤

現在,這甚至有可能實現嗎? 如果是,那麼從哪裏開始?我需要Rest API的知識嗎?我需要編寫shell腳本嗎?

回答

5

這通常不是GitHub可能的工作流程。
你寧願使用「守衛提交」模型2 GitHub庫:


在是必要條件是什麼我的項目,這是不能被改變

在這種情況下,最好是遵循Building a CI server將:

  • 檢測推動和引發編譯
  • 推回到專門的分支上(例如可能是主分支)

這意味着開發人員應該只推送到由您的服務器監控的「開發」分支,並且您的CI工程師如果編譯通過,e會將這些提交推送到主分支。

+0

我同意我的工作流程不常用,但這是我的項目的要求,這是我無法改變的項目。所以,我只想知道webhooks解決方案是否可行。 –

+0

@GaurangaRathod然後總的想法保持不變,只有一個GitHub倉庫,但有兩個分支:我已經編輯了我的答案。 – VonC

+0

您正在改變我的工作流程。我必須使用Github webhooks,並且我需要這些。 –

1

經過一番研究,我發現可以使用github的webhook來觸發jenkins構建,但如果jenkins的構建失敗,則無法拒絕github推送請求。所以,基本上,我們無法控制github的推動,至少不是免費的github賬戶。

如果我錯了,有人會糾正我。

+0

這就是爲什麼我在我的答案中提出了一個不同的工作流:一旦在GitHub上完成推送(並觸發webhook),您確實無法「拒絕」GitHub上的推送。 – VonC

+0

@VonC不同的工作流程絕對是一個更好的解決方案,但是你知道是否有可能拒絕推動Github企業或github的私有存儲庫? –

+0

是的,如果你控制Git repos託管服務器,那麼你可以添加鉤子(而不是webhooks),這意味着如果策略沒有被強制執行,你可以拒絕推送。 – VonC