我是git的新手,我正在研究將它集成到我們的CI(Jenkins)環境時有什麼可能性。Git post-commit hook x central CI系統
基於我在這裏找到的幾個答案(主要是How to configure Git post commit hook),我明白配置git提交後掛鉤來觸發CI構建的常見願望(或實踐),而不是簡單地依賴SCM輪詢。
當用戶運行git commit
時會觸發post-commit掛鉤。由於提交(使用git術語)意味着委託您的本地存儲庫,所以這些更改在中央存儲庫中尚不可用(即,它們尚未被推送到)。
假設你有一箇中央CI服務器,我的問題是:什麼是後使用「觸發您的CI構建」的承諾,如果CI系統不能看到這些變化了嗎?
嗨@chelmertz。第一次調用'git commit -m「lala」'會觸發你的post-commit鉤子(即你的客戶端鉤子 - http://www.git-scm.com/book/en/v2/Customizing-Git -Git-Hooks#客戶端鉤子 - 在'.git/hooks/post-commit' shell腳本中定義)。然而,存儲庫並不知道你的變化(你還沒有推動它們!),所以觸發構建似乎毫無意義。一個「後推」鉤子似乎會做你所描述的,但並不存在(http://stackoverflow.com/a/1799624)。 –
Hello @ E.Z。根據我的經驗(這可能是錯誤的),我一直在本地工作,並且在每個功能的獨立分支中工作。如果可以的話,測試應該在本地運行。一旦我覺得足夠準備好分享我的代碼,我將它推送到CI服務器。 CI服務器可以使用'post-receive'。請參閱[「git-scm.com」上的「服務器端掛鉤」](https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks#Server-Side-Hooks) – chelmertz
要展開一個進一步:我玩弄代碼,並可能測試了很多不同的方法來解決問題。有時我使用TDD,有時候我會做一些小的修復,需要手動驗證。因此,在本地提交之間運行完整的測試套件對我來說聽起來不太可行。 CI的「集成」部分旨在將您的工作與其他工作結合起來,而不是「一直測試所有事情」IMO。 – chelmertz