将Git Slave与Jenkins集成

时间:2013-06-16 23:36:03

标签: git jenkins git-slave

将git-slave与jenkins集成的最佳方法是什么?如果没有编写完整的插件,是否可以这样做?我可以采取任何捷径?我最感兴趣的是复制:

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

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

看看是否其他人在这方面做了什么。我喜欢git-slave,因为对于普通的scm用户而言,它似乎比其他多存储库方法(即git子模块,git子树)更不容易出错。我看到repo有一个插件但不幸的是repo与gerrit关系过于紧密。

1 个答案:

答案 0 :(得分:2)

如果没有詹金斯的详细知识,我会猜测

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

你必须在一端或另一端写一个插件。如果您不想编写Jenkins插件,则需要编写一个Git post-receive挂钩或类似的东西,这可能会触发Jenkins构建repo(或者它的父节点如果它是一个slave)。设置post-receive钩子可能更好,因为它消除了轮询开销,this question提供了一个链接到博客文章,讨论这样做。

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

最可能的方法似乎是让Jenkins构建在完成构建时使用gits tag在repo和slave / children上添加标记,然后使用gits log $last_build_tag..HEAD之类的内容来显示所有内容从那个版本开始提交。我不建议回收标签,而是使用多个带时间戳的标签(例如jenkins-build-2013-06-19-10-24)并从git tag | sort -nr | sed '/jenkins-build/q'的输出中拉出$ last_build_tag(无需使用{{ 1}}大概Jenbank标签的集合对于所有的repos都是一样的。)

这些标签肯定会使标签空间变得混乱,理想情况下,你会在仅从其他标签上拉出来的回购中制作这些标签,这样你就不会将这些标签推出去并弄乱所有其他回购。