有没有办法配置 Jenkins 和 GitBlit,以便在将新代码推送到 git 时自动运行构建?
我听说过在 GitBlit 中使用 hook 和 post-jenkkins 脚本并在 Jenkins 中配置“轮询 SCM”,但也许还有更复杂的配置?
非常感谢。
有两种方法可以使用 Jenkins 和 GitBlit 来构建您的代码。第一个是让 Jenkins 轮询您的 SCM(在本例中为 GitBlit)以进行更改,第二个是在 Gitblit 中设置一个接收后挂钩。
轮询 GitBlit 的更改是最简单的设置,但会在运行 Jenkins 的服务器上带来额外的开销。基本前提是 Jenkins 将克隆您的 repo 并与之前的克隆进行比较以查找更改。如果存在差异,则会触发构建。有许多工作和几个存储库,这可能会对您的 jenkins 服务器和 gitblit 服务器造成负担。要进行此设置,只需选中 Poll SCM 框并选择一个时间表。schedule 字段使用 cron 语法并单击?旁边的字段将为您提供示例。
设置 post-receive 挂钩更复杂,但为您提供了真正的 build-on-commit 语义。现在在 Jenkins 中有两种方法可以做到这一点,Remote Trigger 或者使用 Gitblit 的 jenkins hook。远程触发要求您为每个作业创建一个令牌,然后将其发送到该作业。由于此令牌特定于 Jenkins 正在构建的作业,因此您将为针对每个存储库运行的每个作业添加一个新的作业/令牌对。虽然这对 Jenkins 或 GitBlit 来说不是资源浪费,但它确实浪费了您维护这些对的时间。
GitBlit 的 jenkins 钩子很简单,您可以在全局范围内或在特定存储库中使用它。要启用此功能,请编辑 ${appserver.base}/groovy 中的 jenkins.groovy,其中 ${appserver.base} 是您在安装期间设置的位置。使用 Jenkins 服务器的 URL编辑该def jenkinsUrl = gitblit.getString('groovy.jenkinsServer', 'http://your/jenkins/url')
行。你也可以在你的 gitblit.properties 文件中设置 groovy.jenkinsServer 。要强制所有存储库使用此挂钩脚本,请将其添加到 gitblit.properties 文件中的 groovy.postReceiveScripts 行。否则,在 GitBlit Web 应用程序中编辑您的存储库,并将 jenkins 添加到其接收后挂钩列表中。