所以我试图通过post-receive钩子来构建hudson。在我的本地git repo中,我将post-receive.sample设置为post-receive,chmod 755并添加到行中:
/usr/bin/curl -u user:secret http://localhost:8080/hudson/job/MyJob/build?token=secondsecret
如果我强制构建,hudson会更新代码,但是这里是我不理解的,那个repo中的钩子没有像他们在本地那样的.sample,以及在hudson中的post-receive repo上面没有那行代码。这里发生了什么以及如何将钩子集成到整个git进程中?我需要更改远程仓库上的这个钩子吗?我本以为在本地做这件事就足够了,所以任何从该回购中取出的人都会得到新的钩子。我无法理解另一个用户的repo如何有不同的钩子。
答案 0 :(得分:16)
您基本上有两个选择:
post-receive
挂钩放在服务器上,让服务器运行curl。post-commit
挂钩,让您的本地框运行卷曲。由于您的构建作业可能会从服务器上的repo中获取要构建的代码,因此只有选项1才有意义。在案例2中,构建作业可能必须从本地框中获取代码,这可能不是您想要的。
您无法使用git push
将挂钩放在服务器上。您(或具有适当权限的人)需要通过手动登录服务器并在本地修改钩子脚本文件来实现此目的。
答案 1 :(得分:11)
挂钩不会通过存储库共享。您需要在远程端安装挂钩。