Jenkins 截至2015年初,持续集成与功能分支的技术水平如何?

Jenkins 截至2015年初,持续集成与功能分支的技术水平如何?,jenkins,continuous-integration,branch,teamcity,continuous-deployment,Jenkins,Continuous Integration,Branch,Teamcity,Continuous Deployment,我对不断融合的世界有点陌生 因为我想正确地练习CI/CD,所以我试图阅读有关最佳实践的内容,但这对我来说是一个难题 我想知道,从今天起,是否有经验的人可以让我知道以下事项的实践情况: “要素分支/要素分支”和CI 我的意思是,我发现人们最挣扎的部分实际上是: 需要频繁集成的CI实践(主线) 以及鼓励特性驱动的开发实践 发展 从我看到的情况来看,在特性隔离和集成特性之间存在一种紧张关系,即使还没有完成 因此,我想知道,今天的情况如何 我看到了一些东西,比如抽象分支和功能切换,还有其他解决方案,我还

我对不断融合的世界有点陌生

因为我想正确地练习CI/CD,所以我试图阅读有关最佳实践的内容,但这对我来说是一个难题

我想知道,从今天起,是否有经验的人可以让我知道以下事项的实践情况:

“要素分支/要素分支”和CI

我的意思是,我发现人们最挣扎的部分实际上是:

需要频繁集成的CI实践(主线) 以及鼓励特性驱动的开发实践 发展

从我看到的情况来看,在特性隔离和集成特性之间存在一种紧张关系,即使还没有完成

因此,我想知道,今天的情况如何

我看到了一些东西,比如抽象分支和功能切换,还有其他解决方案,我还不清楚,但他们似乎依赖工具来管理一些自动合并,首先合并并测试分支,然后将其合并回主线

听起来像Teamcity和Bomboo这样的工具都支持这一点。詹金斯的理由不太清楚


因此,如果有人能帮助我们了解这一特定问题的最新技术,我将非常感激强制披露:我是一家(主要)面向移动应用程序开发人员的CI/CD服务的CTO和联合创始人

我们通常建议(以及我们用于内部应用程序开发的实践)测试每一个代码推送,不管是哪个分支。始终尝试推送能够工作/通过单元测试的代码,当然也要编写单元测试

在大多数CI/CD服务中,您可以定义一个通用的测试生成,该测试生成将针对每个代码推送执行,并为部署定义一个单独的生成配置/过程。您应该有一个基本的测试构建配置,它将测试每一个代码推送,并且无论您在哪个分支上工作,您都应该尝试实现绿色构建

有两个CI/CD服务提供拉请求测试,而不实际合并拉请求,因此当您检查拉请求时,可以确保合并后测试仍然通过。尽管这相当复杂(主分支的状态可能会在您阅读pull请求时发生变化),为此,我们的团队不依赖于这些测试,只需进行合并,如果合并失败,我们会立即修复

对于这样的开发设置,您至少需要两个主分支,并且始终使用功能分支。这两个主要分支是:

  • 开发主分支:这是开发人员用来创建新功能分支的分支。在gitflow中,它通常被称为develop
  • 稳定/生产分支:该分支仅包含稳定的、经过测试的代码,仅合并自开发主分支,且仅当其为绿色/通过所有测试时。在gitflow中,这个分支称为master

这种分支策略适用于大多数CI/CD服务,是移动应用程序和SaaS服务的良好选择,在这些应用程序和SaaS服务中,您可以并且希望经常发布(至少对于您的测试人员/登台服务器而言)。

除了将功能划分为分支之外,我还看到越来越多(半)自动代码审查。它基本上是在推送代码以检查其是否破坏测试等之后的自动构建。。Gerrit是一个常用的开源工具(Gerrit在很多情况下使用Jenkins)。但也有其他工具和服务。