惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Apple Machine Learning Research
Apple Machine Learning Research
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
T
Tenable Blog
P
Proofpoint News Feed
爱范儿
爱范儿
The Hacker News
The Hacker News
W
WeLiveSecurity
WordPress大学
WordPress大学
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
The Register - Security
The Register - Security
I
Intezer
S
SegmentFault 最新的问题
P
Privacy & Cybersecurity Law Blog
人人都是产品经理
人人都是产品经理
Security Archives - TechRepublic
Security Archives - TechRepublic
G
Google Developers Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
G
GRAHAM CLULEY
MongoDB | Blog
MongoDB | Blog
Blog — PlanetScale
Blog — PlanetScale
Hugging Face - Blog
Hugging Face - Blog
P
Palo Alto Networks Blog
A
About on SuperTechFans
Attack and Defense Labs
Attack and Defense Labs
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
D
Darknet – Hacking Tools, Hacker News & Cyber Security
博客园_首页
SecWiki News
SecWiki News
博客园 - 聂微东
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Hacker News - Newest:
Hacker News - Newest: "LLM"
Last Week in AI
Last Week in AI
Forbes - Security
Forbes - Security
C
Cyber Attacks, Cyber Crime and Cyber Security
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
F
Full Disclosure
Help Net Security
Help Net Security
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
P
Proofpoint News Feed
S
Schneier on Security
K
Kaspersky official blog
S
Secure Thoughts
C
Cisco Blogs
T
Tor Project blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
L
LangChain Blog
Hacker News: Ask HN
Hacker News: Ask HN
N
News and Events Feed by Topic
MyScale Blog
MyScale Blog

博客园 - 李占卫

设计 mycat服务启动{管理模块启动过程} mycat初探 zookeeper总结 rocketmq总结 分布式事务 MySQL vs. MongoDB: Choosing a Data Management Solution 持续集成及部署利器:Go IOC性能对比 云主机性能测试结论 SSD性能对比 各压缩算法对比 使用tcpcopy拷贝线上流量压测测试环境 C# 获取进程或线程的相关信息 用eclipse建立servlet工程 消息推送技术 检查表及总结 - 《代码大全》 服务治理过程演进 三大WEB服务器对比分析(apache ,lighttpd,nginx)
基于 Jenkins 快速搭建持续集成环境
李占卫 · 2015-04-30 · via 博客园 - 李占卫
什么是持续集成

随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题。尤其是近些年来,敏捷(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