如何使用buildbot设置git一个post-commit钩子

时间:2013-07-03 16:22:20

标签: git continuous-integration buildbot

我有一个gitPoller设置运行,每60秒,但宁愿使用post-commit钩子。我很困惑如何实现这一目标。我知道我应该在某个地方复制git_buildbot.py文件,但我不确定到底在哪里 另外,我不知道在git hooks下为post-receive文件写什么。

3 个答案:

答案 0 :(得分:0)

假设您在/var/git/yourproject拥有基础Git存储库(在您的Git服务器上),那么您将在git_buildbot.py中安装/var/git/yourproject/hooks文件。将(正确编辑的)git_buildbot.py文件放入该目录后,您应chmod 755 git_buildbot.py确保它是可执行的(假设您的Git服务器是Unix / Linux的某种风格。)

完成并测试后,您应该关闭CI服务器上的gitPoller。

答案 1 :(得分:0)

@Tlu:只是为了协议:我遇到了同样的问题,最后我发现自己安装了一个客户端git hook(在in this tutorial中提到的/home/myself/project/.git/hooks中) )而不是服务器端git hook(它必须位于某个地方,如/ srv / git / project / hooks)。

所以我不小心错过了使用正确的文件夹,因为在我的buildbot中设置了同一台机器上的两个目录,也许昨天在酒吧里有一个坏酒;)

只是一个愚蠢的错误,但万一有人遇到同一个陷阱,我想让你知道。

答案 2 :(得分:0)

您可以为此使用 Buildbot 的 Change Hooks

poller 挂钩添加到 www 文件中的 master.cfg 设置:

c['www'] = {
    # ...
    'change_hook_dialects': {
        'poller': True,
    },
    # ...
}

假设您的 Git 存储库在 Buildbot 中设置如下:

GitPoller(repourl='/path/to/my-project.git',
          project='my-project',
          pollInterval=3600,
          pollAtLaunch=True)

如果您的 Buildbot URL 是 http://localhost:8010/,那么您的提交后挂钩 (.git/hooks/post-commit) 可以是:

#!/bin/bash

curl -s -F poller="$(pwd)" http://localhost:8010/change_hook/poller

(确保脚本可执行:chmod +x post-commit)。

这将通知 Buildbot 在您提交后立即轮询存储库。上面的脚本也可以用作 post-receive hook。