Jenkins和GitLab的Git Flow

本文介绍了如何在工作中从TFS过渡到使用Git,并结合Jenkins和GitLab实现Git Flow工作流。内容包括Git分支策略、在Jenkins和GitLab上运行git-flow的步骤,如配置Jenkins作业、设置GitLab Webhooks和轮询,以及讨论了替代的触发构建方法。
摘要由CSDN通过智能技术生成

在工作中,我最近从TFS过渡到使用Git作为我们的源代码管理管理。 在将团队介绍给Git之后,我们还建立了一个通用的工作流程,说明如何使Git与Jenkins和GitLab集成。 以下是我们当前的实现。

Git分支策略

Git分支策略是有关如何在开发中使用git分支机制的指南。 建立这样的共享约定对于在团队中拥有共同的愿景特别有用,以便使每个人都朝着正确的方向发展。

有几种git分支策略,我现在不想围绕它们进行详细介绍。 感兴趣的人可能需要考虑以下一些链接

在Jenkins和GitLab上运行git-flow

在工作中,我们的一个团队最近从TFS转到了Git,我们决定采用类似git-flow的工作方式,

  • master是主要的开发部门
  • production是包含生产版本的产品,
  • story/<storyname>是每个用户story/<storyname>功能分支
  • …以及其他一些准备发布,修补程序等的支持分支。

这些分支将发布到由GitLab支持的内部Git服务器上。 我们显然也希望将这种策略与我们的Jenkins构建服务器集成,

  • master上的每个签入都将自动部署到登台/开发环境中
  • 每个story/分支的签入将针对.Net和JavaScript单元测试进行构建和验证(希望在将来的集成测试中也是如此)
  • 每次签入production/要构建,测试和自动部署到“类生产”环境中,该环境目前仅对客户端可见,但将来打算供所有用户访问

Jenkins职位

基于以上假设,我们目前在每个环境中创建一个Jenkins作业 ,一个用于主控,一个用于用户故事分支,以及一个用于生产(尽管我觉得Jenkin的构建参数化可以在这里帮助避免构建配置之间的冗余……但是尚未调查)。 让我们看一下master配置,因为其他配置很容易从该配置中推导出来。

1.源代码管理– Git配置

开始之前,请确保您具有Jenkins Git插件 。 然后创建一个新的Jenkins作业,并在“源代码管理”部分中配置您的Git存储库,如下面的img示例中所示。

Git配置

Git配置

在“ 分支说明符”字段中,根据要在当前作业中构建的分支,输入所需的分支。 对于master,只需输入*/master ,以构建功能部件/用户故事分支(并以story/<name>开头),输入*/story/* ,依此类推。

2. GitLab Webhook

下一步是向GitLab添加一个Web钩子 。 这是必需的,因为GitLab能够向Jenkins发送有关已“推送”到存储库的新提交的信号。 这是一种替代方法,但更有效的方法是进行连续轮询。

只需转到存储库设置,然后转到Web Hooks

用于与Jenkins通信的Gitlab挂钩

用于与Jenkins通信的Gitlab挂钩

输入格式为http://myjenkins.com/git/notifyCommit?url=git@mygitlabserver.com:myrepo.git

3.设置轮询

最后一步是设置轮询。 哈? 抱歉,您刚才是否提到我们不需要轮询,因为在新提交的情况下GitLab会调用Jenkins? 是的,没错,但这是“安全”措施的一部分, 创建引入Git插件要确保您(您控制Jenkins作业)和您(您添加了Web Hook)都同意执行基于在新的提交。

这将扫描所有配置为检出指定URL,可选分支的作业,如果它们也配置有轮询,它将立即触发轮询(如果发现值得构建的更改,则构建为我们需要对作业进行轮询配置,以便仅触发应该从源树的更改中踢出的作业。 资源

但是,在轮询配置中,您不必指定任何间隔,这意味着它不会自己开始。 您只需勾选“轮询SCM”复选框即可表示同意(以某种方式)。

Git轮询配置

Git轮询配置

就是这样,现在,您的Jenkins作业应该基于您在作业中配置的分支以及被推送到GitLab的分支开始,就像我们想要的那样。

替代方法

如果您只需要从GitLab触发分支的构建,还可以简单地配置Jenkin的远程触发器 ,并将其作为Web Hook添加到您的GitLab存储库中

远程触发配置

远程触发配置

这种方法的缺点是您无法基于某些分支上的提交来有选择地启动构建。

最终,我还找到了一个名为GitLab Hook的插件,由于上述方法非常简单(并且不需要安装插件),因此我没有尝试过。 他们在他们的页面上写道

对于GitLab […]对于Gitlab,有一个可能适合您的现有解决方案。 您可以像这样在Git插件上使用notifyCommit钩子。 […]但是,由于大量的项目大部分都在轮询(没有钩子),因此该项目的构建实际上可能会延迟很长时间(5至20分钟)。 您可以在此处找到有关notifyCommit和此问题的更多详细信息。 GitLab Hook插件页面

到目前为止,我还没有遇到过任何此类延误,但是我们会看到的。

参考:Juri Strumpflohner的TechBlog博客上,我们的JCG合作伙伴 Juri Strumpflohner 与Jenkins和GitLab进行了Git flow

翻译自: https://www.javacodegeeks.com/2014/01/git-flow-with-jenkins-and-gitlab.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值