我是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