持续集成和几种工作流

学习有关在软件开发周期中采用持续集成的收益,以及如何使用 jenkins 和 maven 插件去实现。

在一个典型组织中,一个定义明确的 SDLC 实践通常具有与用户和角色一起运行的项目。 这些用户根据业务需求/要求设计,开发,测试和部署作业。但是你有没有想过:

  • 那之后的代码会发生什么?
  • 如果多个开发者想从事相同的工作怎么办?
  • 您将如何存储这些代码,以及如何确保其他开发人员始终选择正确的版本?

那么欢迎来到“持续集成”的世界。

在本博客中,我将强调持续集成(CI)的过程,连续性的重要性以及如何使用 Talend CI 构建工具结合 Jenkins 和 Maven 插件去实现目的。

首先让我们熟悉一些基本术语

  • 持续集成:CI 是一种开发实践,要求团队成员频繁的集成他们的工作,每一次集成都由自动化构建来验证,以便尽可能快的发现错误
  • 持续测试:CT 意味着每次集成完成后,都会运行预定义的测试用例,以确保新的代码不会破坏现有系统
  • 持续部署:CD 意味着你交付软件是基于连续递增的方式,并经常部署,在这里,可以部署到测试环境或者是预生产环境。

所以,作为一个组织变得持续性应该是由 CI,CT,CD 驱动的,并且他必须融合在软件开发周期中,下面的图显示了从 SDLC 生命周期到 CI,CT,CD 阶段的融合。

因此,持续性的好处是什么?如果正确实现了并且定期进行实践,持续性有助于减少集成的问题,这些会使你交付作业/代码/软件更加迅速。

另外,通过定期集成,你能快速检测错误,并且很容易的定位它们。通过使用正确的工具,在集成代码的时可以减少冲突和更容易解决冲突。最重要的一点是,你没有机会打破已经存在的东西,即使他坏了,也更容易解决/恢复。

持续工作流概述

为了进行持续集成,需要有一个仓库,可以保存、检索和维护代码。这个仓库必须足够的好,可以提供开发人员一个强大的版本控制系统。

虽然有许多 CI 工具可以用,但是我建议尝试 Git,Git 是一种版本控制软件,用于跟踪代码变化和协调许多人之间的代码工作。

它主要用于软件开发中的源代码管理,但是它能用来追踪任何一组文件的改变,它提供了少量的常见工作流模型

集中式工作流

此流程使用中央仓库作为项目所有更改的单点入口。默认的开发分支为主干,所有的更改都要提交到这个分支。除了主干以外,这个工作流不需要任何其他分支。典型的集中式工作流生命周期如下:

  • 开发人员首先将中心仓库克隆到自己本地的项目副本中,他们编辑作业并在本地提交更改,一旦更改被测试通过,开发人员将本地主干分支推到中央仓库。
  • 管理冲突:中央仓库代表官方的项目,因此如果本地工作与上游提交发生冲突,Git 将暂停处理并提供手动解决冲突的机会。这使得开发人员更容易管理合并。

你可能注意到了这个集中式工作流更像是具有很少 Git 特性的 SVN。这对 SVN 转型团队来说非常好,不过他并没有使用 Git 的分布式特性。

特性分支工作流

特性分支工作流的核心思想是,所有的功能开发都应该在专用分支中进行而不是主干,Git 不会在主干分支和特性分支之间进行技术上的区别。因此,开发人员可以像在集中式工作流中一样编辑,分段和提交。这里,一个典型的工作流如下所示:

  • 每当开始新功能开发工作时,开发人员就创建一个新的分支。
  • 特性分支应具有描述性名称,如问题#1061,Jira-190。这是为了给每个分支提供一个清晰的、高度集中的目标。

Gitflow工作流

定义了围绕项目发布设计的严格分支模型。这为管理大型项目提供了一个健壮的框架,和特性分支工作流类似,只是他分配了非常具体的角色给不同的分支,并定义了他们应该如何以及何时进行交互。

它还使用了各个独立的分支来准备,维护和记录发布。像前面的工作流一样,开发人员在本地工作并推送分支到中央仓库,唯一的区别是项目的分支结构,你定义了历史分支,特性分支,发布分支和维护分支

作者:Rekha Sree 原文:https://dzone.com/articles/an-introduction-to-continuous-integration-and-work 译者:one day

END

原文发布于微信公众号 - DevOps时代(DevOpsTimes)

原文发表时间:2017-10-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Netkiller

打破软件自动化测试的格局

打破软件自动化测试的格局 自动化测试的误区 自动化测试仅仅被认为是替代人工,所以我们看到很多企业实施自动化测试仅仅是将现有的 Test Case 转换成自动化脚...

42250
来自专栏用户画像

6.3.3 异步定时方式

在异步定时方式中,没有统一的时钟,也没有固定的时间间隔,完全依靠双方相互制约的“握手”信号来实现定时控制。通常,把交换信息的两个部件或设备分为主设备和从设备。主...

11830
来自专栏PhpZendo

网购秒杀系统架构设计

本文是「大型网站技术架构 - 核心原理与案例分析」 第 12 章的学习笔记,感兴趣的朋友可以去购买

73510
来自专栏魏艾斯博客www.vpsss.net

腾讯云服务器 CVM(免费 30 天使用)申请过程

3.3K50
来自专栏xingoo, 一个梦想做发明家的程序员

如何构建高扩展性网站?

本篇通过阅读《高扩展性网站的50条原则》,总结出以下内容。 一方面博主没有实际的架构经验,另一方面知识面也不够宽阔,所以只能系统的总结书中的要点,并根据自己...

25650
来自专栏MobileLine

零代码三步快速集成腾讯移动分析(MTA)(iOS)

腾讯移动分析有专业的移动应用数据分析能力,为您的应用提供实时数据统计分析服务,监控版本质量、渠道状况、用户画像属性及用户细分行为,通过数据可视化展现,协助产品运...

543140
来自专栏Java进阶架构师

「架构技术专题」作为java程序员的你还不知道网站架构的演化(2)?

CDN和反向代理的基本原理都是缓存,区别在于CDN部署在网络提供商的机房,而反向代理是部署在网站的中心机房,当用户请求到达中心机房后,首先访问的反向代理,如果反...

11640
来自专栏云计算D1net

如何确保应用程序在公共云中的可用性

采用云计算的注意事项是一种很好的建议。云计算服务提供商(CSP)都会承诺在其基础设施中提供“高可用性”,其服务水平协议(SLA)通常提供95%至99.99%的正...

11330
来自专栏PhpZendo

大型网站架构演化

1.1 高并发,大流量 1.2 海量数据 存储及管理海量数据,需要大量服务器 1.3 高可用: 7 * 24 小时服务 1.4 用户分布广泛,网络环境复杂 1....

15010
来自专栏技术翻译

如何可视化和理解MongoDB数据

为应用程序选择数据库可能是一个真正的挑战。不同的数据库设计服务于不同的目的,在这种情况下,由于他们的僵化模式和对数据类型的约束,关系数据库不能完全满足开发人员的...

34900

扫码关注云+社区

领取腾讯云代金券