如何在本地服务器上配置 post-receive hook

How to configure post-receive hook on local server

我正在使用 Jenkins 在本地服务器上工作,我现在的任务是 在每次 git 推送后触发测试脚本。

我尝试使用 post-commit 钩子来做到这一点,它按预期工作但它 运行 测试 进行实际更改之前(推送到回购)。好吧,它的 post-commit,所以这是意料之中的。

所以我决定使用某种 post-push 并找到 post-receive 钩子,但它根本不起作用。 运行sh post-receive做我想做的,chmod +x做的。我究竟做错了什么?我应该使用另一个挂钩吗?

当 Git 托管服务器收到推送时,post-接收挂钩是 server-side hook、运行。
它通常设置在一个裸仓库中:

myBareRepo.git/hooks/post-receive

如果您的 Jenkins 监控您的存储库,您可以:

  • 将您的 Jenkins 作业设置为监视裸仓库:

    git clone --bare myRepo myRepo.git
    
  • 在那个裸仓库中添加 post-receive 钩子

  • 从你的仓库推送到这个裸仓库

    cd myRepo
    git remote add origin ../myRepo.git
    git push -u origin master