Jenkins 和 GitBlit 的集成

mac*_*coo 1 git jenkins gitblit

有没有办法配置 Jenkins 和 GitBlit,以便在将新代码推送到 git 时自动运行构建?

我听说过在 GitBlit 中使用 hook 和 post-jenknkins 脚本并在 Jenkins 中配置“Poll SCM”,但也许还有更复杂的配置?

非常感谢。

wal*_*sht 5

有两种方法可以使用 Jenkins 和 GitBlit 来构建代码。第一个是让 Jenkins 轮询您的 SCM(在本例中为 GitBlit)以了解更改,第二个是在 Gitblit 中设置一个 post-receive hook。

轮询 GitBlit 以获取更改是最简单的设置,但会在 Jenkins 运行的服务器上带来额外的开销。基本前提是 Jenkins 将克隆您的 repo 并与之前的克隆进行比较以查找更改。如果存在差异,则会触发构建。有许多作业和多个存储库,这确实会给您的 jenkins 服务器和 gitblit 服务器带来负担。要设置它,只需选中 Poll SCM 框并选择一个时间表。schedule 字段使用 cron 语法并单击 ? 旁边的字段将为您提供一个示例。

设置 post-receive hook 更复杂,但为您提供了真正的 build-on-commit 语义。现在在 Jenkins 中有两种方法可以做到这一点,Remote Trigger 或使用 Gitblit 的 jenkins hook。远程触发器要求您为每个作业创建一个令牌,然后将其发送到作业。由于此令牌特定于 Jenkins 正在构建的作业,因此您将为针对每个存储库运行的每个作业添加一个新的作业/令牌对。虽然这对 Jenkins 或 GitBlit 来说不是资源浪费,但它确实会浪费您维护这些对的时间。

GitBlit 的 jenkins 钩子很简单,您可以在全局或特定存储库中使用它。要启用此功能,请编辑 ${appserver.base}/groovy 中的 jenkins.groovy,其中 ${appserver.base} 是您在安装期间设置的位置。def jenkinsUrl = gitblit.getString('groovy.jenkinsServer', 'http://your/jenkins/url')使用 Jenkins 服务器的 URL编辑该行。您也可以在 gitblit.properties 文件中设置 groovy.jenkinsServer 。要强制所有存储库使用此钩子脚本,请将其添加到 gitblit.properties 文件中的 groovy.postReceiveScripts 行。否则,在 GitBlit Web 应用程序中编辑您的存储库,并将 jenkins 添加到其接收后挂钩列表中。