我用一个标准的bash脚本编写了一个名为post-commit
的文件(没有文件扩展名,可执行文件,由git用户拥有),以便在另一台服务器上触发Jenkins构建并将其放在目录git/ProjectName/hooks
中我们的远程仓库。当我以用户git手动执行文件时
(./post-commit
)。
Jenkins构建开始。但是当我将某些内容推送到存储库时(我看到已在远程存储库的Git日志中进行了提交),post-commit
文件未执行(我通过在文件中放置一个echo命令来检查)。 / p>
为什么post-commit
文件没有执行?
答案 0 :(得分:2)
post-commit
未在远程执行,因为未在远程进行提交。
您需要的是服务器上的post-recieve
挂钩。
https://git-scm.com/book/gr/v2/Customizing-Git-Git-Hooks
服务器端挂钩 除了客户端挂钩之外,您还可以使用几个重要的服务器端挂钩作为系统管理员来为您的项目强制执行几乎任何类型的策略。 这些脚本在推送到服务器之前和之后运行。
...
的后接收强>
接收后挂钩在整个过程完成后运行,可用于更新其他服务或通知用户。它采用与预接收挂钩相同的stdin数据。 示例包括通过电子邮件发送列表,通知持续集成服务器或更新故障单跟踪系统 - 您甚至可以解析提交消息以查看是否需要打开,修改或关闭任何故障单。此脚本无法停止推送过程,但客户端在完成之前不会断开连接,因此如果您尝试执行可能需要很长时间的任何操作,请务必小心。