eclipse - 使用 Jenkins/Hudson 的集成管理器 Git 工作流

标签 eclipse git hudson jenkins junit4

我正在尝试实现修改后的 Integration-Manager 工作流程,类似于 ProGit 中描述的内容.

Diagram of the Integration-Manager workflow

我希望开发人员在发布他们的代码之前在本地 merge ,而不是执行 merge 的集成管理器,并且我想要一个执行我们的持续集成标准的Quality Gateway,例如最低水平的代码覆盖率和 100% 的测试通过,然后才允许代码进入 blessed 存储库以供其他开发人员检查。这个想法是 blessed 存储库中的代码始终满足我们定义和构建的最低标准。

我希望 Jenkins 扮演质量网关的角色,只在构建成功时才将代码推送到受祝福的存储库。

到目前为止,我已经设置了系统,以便有以下公共(public)存储库:blessed 存储库,Jenkins 构建服务器上的存储库,这是一个通过 gitosis 访问的裸存储库,当然还有开发人员自己的存储库。

我让开发人员从 blessed 仓库中 pull 并推送到集成仓库。现在我正试图让 Jenkins 将成功的构建从集成仓库推送到 blessed 仓库。

到目前为止,我所看到的唯一与我试图实现的类似的选项是“Push Only If Build Succeeds”选项,在 Post Build 的 Git Publisher 设置中Jenkins 项目配置中的操作。但是,该选项不允许您指定要推送到的推送 URL 或远程。

据我了解,Git Publisher 设置会将 repo Jenkins 的克隆推送到其工作区中,并返回到 Jenkins 的公共(public) repo 中,但我想推送到不同的远程仓库。

有没有人对我如何让 Jenkins 推送到 blessed repo 有任何建议?

编辑 0: 我尝试放置一个 Post Step 来执行推送命令到我的祝福存储库。这似乎有效,因为没有错误。然而,没有推送任何更改,日志显示 git 认为一切都是最新的:

[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESSFUL 
[INFO]     ------------------------------------------------------------------------ 
[INFO] Total time: 1 minute 7 seconds 
[INFO] Finished at: Fri Nov 18 16:10:50 UTC 2011 
[INFO] Final Memory: 19M/45M 
[INFO] ------------------------------------------------------------------------ 
channel stopped 
[My Project] $ /bin/sh -xe /tmp/hudson5604254372179801803.sh + git push git@example.com:my-project.git --all
Everything up-to-date

我不知道为什么 git 认为没有什么可推送的,因为肯定有。

最佳答案

如何使用 Jenkins 的“仅在构建成功时推送”操作,在集成存储库上使用提交后或接收后 Hook ,以便在 Jenkins 成功构建后推送时推送到受祝福的存储库?

关于eclipse - 使用 Jenkins/Hudson 的集成管理器 Git 工作流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8183511/

相关文章:

java - 如果您在开发模式下运行 GAE 项目,实体会保存在哪里?

c - 将自定义 Makefile 与 Eclipse/CDT 结合使用

git - 什么 git 函数允许我批准/拒绝提交将进行的每个更改?

git - 如何编辑过去的 git 提交以从提交日志中删除我的密码?

git - 将 Git 存储库迁移到新的 TFVC 存储库

grails - 用于 Hudson/Jenkins 的 Grails 中的自定义环境

java - 无法在 Windows 64 位上部署 SWT WebStart 应用程序

eclipse - 如何使文件在 Eclipse 中的特定编辑器中打开?

hudson - 如何在 Hudson-CI 中指定多种可能的结果?

continuous-integration - 使用 PSEXEC 从 hudson 服务器在远程机器上运行批处理文件