2

将 git-slave 与 jenkins 集成的最佳方法是什么?如果不编写完整的插件,是否可以做到这一点?有什么捷径可以走吗?我最感兴趣的是复制:

(1) 根据对 git-slave git 存储库或其子项的更改轮询并启动构建。

(2) 打印出自上次构建以来所有存储库中的提交。

只是看看有没有其他人在这方面做过任何事情。我喜欢 git-slave,因为对于普通 scm 用户来说,它似乎比其他多存储库方法(即 git submodule、git subtree)更不容易出错。我看到 repo 有一个插件,但不幸的是 repo 与 gerrit 联系得太紧密了。

4

1 回答 1

2

如果没有对詹金斯的详细了解,我猜想

(1) 根据对 git-slave git 存储库或其子项的更改轮询并启动构建

您将不得不在一端或另一端编写一个插件。如果您不想编写 Jenkins 插件,则需要编写 Git post-receive hook 或类似的东西,这可能会触发 Jenkins 为 repo 构建(如果它是从属,则为它的父级)。设置 post-receive 挂钩可能会更好,因为它消除了轮询开销,并且这个问题提供了一个博客文章的链接,该文章讨论了这样做。

对于 (2) 打印出自上次构建以来所有存储库中的提交

最有可能的方法似乎是让 Jenkins 构建在gits tag完成构建时在 repo 和 slaves/children 上放置一个标签,然后使用类似的东西gits log $last_build_tag..HEAD来显示自构建以来的所有提交。我不建议回收标签,而是使用多个带时间戳的标签(例如 jenkins-build-2013-06-19-10-24)并从输出中提取 $last_build_tag git tag | sort -nr | sed '/jenkins-build/q'(无需使用gits tag可能是 Jenkins 标签集对于所有回购将是相同的)。

这些标签肯定会弄乱标签空间,理想情况下,您将在仅从其他人那里提取的存储库中制作这些标签,这样您就不会将这些标签推出并弄乱所有其他存储库。

于 2013-06-17T16:48:56.480 回答