如果没有对詹金斯的详细了解,我猜想
(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 标签集对于所有回购将是相同的)。
这些标签肯定会弄乱标签空间,理想情况下,您将在仅从其他人那里提取的存储库中制作这些标签,这样您就不会将这些标签推出并弄乱所有其他存储库。