基于 Jenkins 快速搭建持续集成环境

什么是持续集成

随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题。尤其是近些年来,敏捷(Agile) 在软件工程领域越来越红火,如何能再不断变化的需求中快速适应和保证软件的质量也显得尤其的重要。

持续集成正是针对这一类问题的一种软件开发实践。它倡导团队开发成员必须经常集成他们的工作,甚至每天都可能发生多次集成。而每次的集成都是通过自动化的构建来验证,包括自动编译、发布和测试,从而尽快地发现集成错误,让团队能够更快的开发内聚的软件。

持续集成的核心价值在于:

  1. 持续集成中的任何一个环节都是自动完成的,无需太多的人工干预,有利于减少重复过程以节省时间、费用和工作量;
  2. 持续集成保障了每个时间点上团队成员提交的代码是能成功集成的。换言之,任何时间点都能第一时间发现软件的集成问题,使任意时间发布可部署的软件成为了可能;
  3. 持续集成还能利于软件本身的发展趋势,这点在需求不明确或是频繁性变更的情景中尤其重要,持续集成的质量能帮助团队进行有效决策,同时建立团队对开发产品的信心。
持续集成的原则

业界普遍认同的持续集成的原则包括:

1)需要版本控制软件保障团队成员提交的代码不会导致集成失败。常用的版本控制软件有 IBM Rational ClearCase、CVS、Subversion 等;

2)开发人员必须及时向版本控制库中提交代码,也必须经常性地从版本控制库中更新代码到本地;

3)需要有专门的集成服务器来执行集成构建。根据项目的具体实际,集成构建可以被软件的修改来直接触发,也可以定时启动,如每半个小时构建一次;

4)必须保证构建的成功。如果构建失败,修复构建过程中的错误是优先级最高的工作。一旦修复,需要手动启动一次构建。

持续集成系统的组成

由此可见,一个完整的构建系统必须包括:

  1. 一个自动构建过程,包括自动编译、分发、部署和测试等。
  2. 一个代码存储库,即需要版本控制软件来保障代码的可维护性,同时作为构建过程的素材库。
  3. 一个持续集成服务器。

Jenkins是由Sun的前员工开发的,它的根基是Java,但也可以用在非Java的项目里,比如PHP、Ruby on Rails、.NET。在.NET项目里,你除了Jenkins之外还要熟悉另一样工具:MSBuild。Visual Studio用MSBuild构建.NET项目。MSBuild所需的仅仅是一个脚本,在脚本中指定要执行的target。项目中的.csproj和.vbproj 文件都是MSBuild脚本。下面的几篇文章介绍如何使用Jenkins 快速搭建持续集成服务器。

用MSBuild和Jenkins搭建持续集成环境(1)

用MSBuild和Jenkins搭建持续集成环境(2)

Create a Mono C# Buildserver using Jenkins and GitHub

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏程序你好

Visual Studio IntelliCode引入AI辅助新功能,根据上下文智能完成代码

20010
来自专栏企鹅号快讯

CRM重构之——微服务设计导读(一)

在介入正题前,想谈一下如何阅读,因为技术类的文章虽好,但需要一定的门槛,而且会比较枯燥,读后可能很快就会忘记读了什么,只记得读过。 导读 阅 带着兴趣 带着兴趣...

29990
来自专栏爬虫技术

python3网络爬虫-破解天眼查-分布式爬虫系统-源码深度解析

Python爬虫-2018年-我破解天眼查和启信宝企业数据爬虫--破解反爬技术那些事情

2.7K20
来自专栏逸鹏说道

Red Hat与微软合作,将致力于构建企业级Linux版.NET

微软和红帽声明将在红帽企业版Linux运行的.NET纳入官方支持。经两家公司透露,“红帽企业级Linux将成为Linux下的.NET Core主要参考操作系统...

27680
来自专栏AI科技大本营的专栏

首发 | 微信成功挑战10亿人聊天记录的背后,核心技术原来是它

翻译 | AI科技大本营(rgznai100) 参与 | Shawn,周翔 作为数据库领域的顶级会议,VLDB (Very Large Data Base)是数...

50060
来自专栏林德熙的博客

win10 uwp iot 检测霜设计电路

这篇文章主要译: https://msdn.microsoft.com/magazine/mt694090 有很多都是胡说,随便喷,但我不会理。 https:/...

9010
来自专栏张善友的专栏

微软Connect(); 2017大会梳理:Azure、数据、AI开发工具

15620
来自专栏张善友的专栏

WebForms和MVC这2个模型都很棒,由相关讨论想到的

看了为WebForms说几句话,以及一些ASP.NET开发上的经验(上) 和为 MVC 和 Web Form 正名的一份“大字报” 的相关评论。 ...

21560
来自专栏FreeBuf

用中国移动手机分享热点,小心你的邮件泄露

“世界上最遥远的距离是,我在你身边,你却在找WIFI。”这句调侃正是“手机族”的真实写照。当人们越来越依赖手机,突然某一刻找不到网络时,很多人必然很抓狂。 也许...

20350
来自专栏Modeng的专栏

JavaScript 简史

「 JavaScript 」 诞生于 1995年,当时主要是用于处理由服务器负责的一些输入验证操作。

15030

扫码关注云+社区

领取腾讯云代金券