2016-05-12 26 views
1

我想設置一個配置項,只有當git提交由GitHub webhooks報告時,它纔會作出反應並構建,包含對我的回購的子文件夾中任何內容的更改。如何控制哪些github承諾在CircleCI中構建?

myRepo 
> code1.js 
> workers <-- run when this ... or anything under this changes 
    > worker1.js 

例如,我要建立一個CircleCI建立可以看看提交和運行一個腳本來決定go? or no-go?的基礎上,提交,更新日誌匹配的正則表達式在更改日誌搜索workers構建有效載荷。

我只是不知道在哪裏的,以及如何掛鉤:

  1. 應設置我的github網絡掛接更聰明莫名其妙和辨別,如果更改日誌有什麼提workers文件夾?這樣,我的CI可以保持沉默,因爲webhook決定何時將提交負載推送給CI。
  2. 我應該掛在CircleCI的yaml文件的某個地方,以辨別changelog是否有任何提及workers文件夾的內容?如果是這樣的話?

我可以編寫自己的正則表達式,但我需要知道在腳本中注入/掛鉤的位置。


事情我不要求爲:

  1. 我不要求像git的子模塊替代
  2. 我不想分裂成兩個獨立的回購

回答

4

CircleCI不支持內置的此功能。在CircleCI方面,您確定可以使用circle.yml中的某些邏輯來檢查workers目錄中的更改,但我們只會在構建過程已經啓動後纔會對其進行評估。效率不高。

就GitHub webhooks,我不知道這樣的事情可以做。如果是這樣,那真棒,請讓我知道。

我的建議

CircleCI不支持提交信息的[skip ci] or [ci skip]標誌。如果workers目錄之外的更改不頻繁,只需將該標誌添加到提交消息。如果變化經常發生,那將是乏味的,所以我會使用Git commit-msg掛鉤。您可以爲該鉤子編寫一個小腳本來檢查哪些目錄包含更改。如果workers/*內的任何內容沒有被更改,則附加(或預先)提交消息[skip ci]。 Git文檔在這裏很少,但這裏是鉤子頁面:https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks

我希望有幫助。

-Ricardo
開發傳播者,CircleCI

+2

FYI:這已經變成了一個博客文章:https://circleci.com/blog/circleci-hacks-automate-the-decision-to-skip-使用構建--A-git的掛機/ – FelicianoTech