【问题标题】:Git + Jenkins Builds from hooks - remote branches across multiple serversGit + Jenkins 从钩子构建 - 跨多个服务器的远程分支
【发布时间】:2015-09-08 11:16:11
【问题描述】:

我不能 100% 确定在我的情况下最佳做法是什么,以及我是否在错误的地方设置了钩子。

我的架构/工作流程如下(简化):

Git Repos - //SERVER-NAME/e$/repositories/PROJECT-NAME

然后我在自己的服务器上有两个远程分支:

DEV - //DEV-SERVER/e$/projects/PROJECT-NAME
UAT - //UAT-SERVER/e$/projects/PROJECT-NAME

因此,我们假设工作直接在 DEV 服务器上完成。完成并提交后,我希望该提交从同一服务器上的 DEV 分支触发构建(Jenkins 在 DEV 和 UAT 服务器上运行)。

在 jenkins 的配置部分,我在上面的“存储库 URL”部分中有 Git Repos URL,在“要构建的分支”中有“DEV”。

在签出/克隆的 DEV 分支中,我有一个包含以下内容的提交后挂钩:

#!/bin/sh
curl http://localhost:8080/job/PROJECT-NAME/build?delay=0sec

但是,这大概是检出/克隆尚未收到已提交更改的远程 DEV 分支?然后我尝试将挂钩更改为“接收后”,认为这将在

git push origin DEV

但这并没有触发。

然后我认为钩子可能需要位于实际远程存储库的钩子目录中,但我不确定 A)这是否正确,如果正确 B)钩子应该包含什么 - 大概是一个启动的 URL关闭开发服务器上的构建?

有点困惑...

另外,我也希望在 UAT 服务器上使用同样的方法。我希望工作流程是

  1. 提交 DEV
  2. 在 DEV 上触发构建(包括单元测试等)
  3. 将 DEV 与 UAT 合并
  4. 在 UAT 上触发构建
  5. 将 UAT 与 master 合并
  6. 标签已创建并已发布。

我不确定上述工作流程是否会更好,因为仅在将 git 合并到 master 时在 UAT 服务器上运行构建(但在合并之前,仅在成功构建时合并)?

谢谢..

【问题讨论】:

  • post-receive 钩子是远程服务器钩子,因此它应该位于远程服务器的钩子目录中(//SERVER-NAME/e$/repositories/PROJECT-NAME)。触发此挂钩时,推送的提交应该在远程服务器上可用。 push 命令将等待钩子完成,因此您应该避免在钩子中长时间运行命令(我不知道是否触发 jenkins 构建是异步的)
  • 让 Jenkins 同时用于 DEV 和 UAT 的目的是什么?
  • 好吧,它可能不需要同时出现在两者上——并且在某种程度上是我的问题的一部分,关于我的工作流程是否不是实现我想要做的事情的最佳方式?我猜我问题的后半部分是前进的方向 - 建立一个推动掌握的基础,但只是想弄清楚如何最好地做到这一点。

标签: git jenkins


【解决方案1】:

根据我的评论:post-receive 挂钩是远程服务器挂钩,因此它应该位于远程服务器的挂钩目录中 (//SERVER-NAME/e$/repositories/PROJECT-NAME)。触发此钩子时,推送的提交应该在远程服务器上可用。

什么是您项目的最佳工作流程取决于很多事情,如果您有一个可以处理并调整它,或者尝试另一种做事方式,当它开始非常痒时。

在这种情况下,另一种工作流程可能是让 Jenkins 在远程服务器上轮询您的存储库以获取新提交:

  1. Jenkins 池 DEV branch 和新提交触发构建作业(和测试)
  2. 成功后,Jenkins 将 DEV branch 推送到 UAT branch
  3. Jenkins 池 UAT branch 和新提交触发构建作业
  4. 成功后,Jenkins 将 UAT branch 推送到 master
  5. Jenkins pools master 和新的提交会触发一个标记并发布到 live 的作业

您可能有此工作流程无法满足的要求,例如在主存储库中发布所有提交,在 UAT 可用之前将其推送到开发服务器。

【讨论】:

    猜你喜欢
    • 2017-10-29
    • 2017-12-28
    • 2017-12-25
    • 2017-04-20
    • 2011-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多