git - 将 Git Slave 与 Jenkins 集成

标签 git jenkins git-slave

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

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

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

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

最佳答案

如果没有对 Jenkins 的详细了解,我会猜测

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

您必须在一端或另一端编写一个插件。如果您不想编写 Jenkins 插件,则需要编写一个 Git post-receive hook 或类似的东西,这可能会触发存储库(或其父级,如果它是从属)的 Jenkins 构建。设置 post-receive Hook 可能会更好,因为它消除了轮询开销,并且 this question提供了有关执行此操作的博客文章的链接。

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

最有可能的方法似乎是让 Jenkins 构建使用 gits tag 在仓库和奴隶/ child 上放置标签。当它完成构建时,然后使用类似 gits log $last_build_tag..HEAD 的内容显示自该构建以来的所有提交。我不建议回收标签,而是使用多个带时间戳的标签(例如 jenkins-build-2013-06-19-10-24)并从 git tag | sort -nr | sed '/jenkins-build/q' 的输出中提取 $last_build_tag (无需使用 gits tag,因为可能所有存储库的 Jenkins 标签集都是相同的)。

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

关于git - 将 Git Slave 与 Jenkins 集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17138728/

相关文章:

git - 多个 git 存储库的最佳实践

git - 观看 github 推送并自动 pull 到远程

git - 我在池中撒尿 GIT 风格 - ftp'​​d 文件到 repo 现在 GIT 不同步

jenkins - 如何从 Jenkins 获取过去 24 小时内运行的构建列表?

windows - 用于 Windows 的 git-slave

windows - 在 Windows 中跨本地文件系统的 GIT 克隆 repo

git - 我如何撤消 Github 中的先前提交

time - Jenkins——使用 "Build Time Trend"获取 "Remote Access API"值

jenkins - 部署到生产环境以进行角度测试覆盖时如何在 jenkins 中设置 CHROME_BIN