Go是一款先进的持续集成和发布管理系统,由ThoughtWorks开发。(不要和Google的编程语言Go混淆了!)其前身为CruiseControl,是ThoughtWorks在做咨询和交付交付项目时自己开发的一款开源的持续集成工具。后来随着持续集成及持续部署的火热,ThoughtWorks专门成立了一个项目组,基于Cruise开发除了Go这款工具。ThoughtWorks开源持续交付工具Go,Go的官方网站是http://www.go.cd/,其文档是http://www.thoughtworks.com/products/docs/go/13.3/help/welcome_to_go.html。使用Go来建立起一个项目的持续部署pipeline是非常快的,非常方便。

Go的架构设计

Go使用了Server-Agent的模式。Server用来展示和配置pipeline的DashBoard,并存放构建出来的Artifacts(存档文件,比如一个war包); Agent则用来执行真正的构建操作,一个Server可以和多个Agent建立连接,Agent支持多个主流的操作系统。

这样的好处是:

  1. 测试可以运行在不同的平台上,保证你的软件在多个平台都能良好的工作;

  2. 你可以将测试划分为不同的群组并并行的运行在多个Agent上,节省运行测试时间;

  3. 可以方便的管理Agent,及时响应不同的环境要求。

Agent的lifecycle

下图是Agent工作的生命周期。

每一台Go的构建节点机器上都需要安装Go Agent软件(这个名字蛋疼,不是FQ的那个软件),其用来建立起与Go Server的连接。 Go Agent会以轮询的方式来询问Go Server是否有当前有构建工作。如果有的话,Go Server会将其分配给处于ready状态的Agent。该Agent会在自己机器目录上创建一个目录,并下载同步最新的材料(比如配置的SVN repo地址),然后执行指定的task,比如构建项目,运行单元测试或功能性测试等。如果配置了artifacts(比如构建的结果,一个war包),Agent执行完毕后将这个artifacts发布到Go Server上,这样artifacts就会被接下来的stage用到。

Go中的一些概念

Go对复杂的构建和部署活动进行了合理的抽象,并提供了GUI和XML两种方式来配置pipeline。

在Go的世界中,多个pipeline可以共同组成一个group,这叫做pipeline group。没个pipeline又由多个stage组成。假设一个pipeline需要做如下事情: 构建项目->部署到测试环境->部署到生产环境。那么每一个环节都可以设置为一个stage。而一个stage则由1个或多个job组成。比如构建项目这个stage,可能会分为编译及验证->功能性测试,每一步可以作为一个job。job则由一个或多个task组成。比如功能性测试这个job可以分为两个task来完成,先将artifacts部署到测试机上,再运行功能性测试。

Go和Jenkins的比较

Go在设计之初就是一款持续部署工具,而Jenkins其实只是一款持续集成工具,如果要实现持续部署需要安装相应的插件。 Go和Jenkins都是开源软件,虽然免费,但是出现问题要么自己动手解决,要么等待维护社区修复,Go可以向ThoughtWorks购买支持服务。 Jenkins作为开源产品,社区比较活跃,文档资料和插件都比较多,而Go的文档或资料较少。

Go as continuous delivery tool for .NET

迈出持续交付的第一步

http://www.cnblogs.com/shanyou/p/3750720.html

持续集成及部署利器:Go(不要和Google的编程语言Go混淆了!)的更多相关文章

  1. ThoughtWorks开发持续集成及部署利器:Go

    持续集成及部署利器:Go   Go是一款先进的持续集成和发布管理系统,由ThoughtWorks开发.(不要和Google的编程语言Go混淆了!)其前身为Cruise,是ThoughtWorks在做咨 ...

  2. 持续集成及部署利器:Go

    Go是一款先进的持续集成和发布管理系统,由ThoughtWorks开发.(不要和Google的编程语言Go混淆了!)其前身为CruiseControl,是ThoughtWorks在做咨询和交付交付项目 ...

  3. .NET Core 从 Github到 Nuget 持续集成、部署

    一.前言 Nuget 作为一个.NET研发人员,我想你都不会陌生,他为我们提供非常方便的程序包管理,不管是版本,还是包的依赖都能轻松应对,可以说是我们的好助手.而 Nuget 除了官方nuget.or ...

  4. 03 持续集成和部署/基础设施 - DevOps之路

    02 持续集成和部署/基础设施 - DevOps之路 文章Github地址,欢迎start:https://github.com/li-keli/DevOps-WiKi 服务的持续集成和部署这里有两套 ...

  5. vsts + XX云服务器构建netcore+docker持续集成交付部署

    持续集成交付部署是什么意思,它给我们带来什么好处? 先贴一张图 持续集成(Continuous Integration) 持续集成强调开发人员提交了新代码之后,立刻进行构建.(单元)测试(这个要看情况 ...

  6. Linux-GitLab+Jenkins持续集成+自动化部署

    GitLab+Jenkins持续集成+自动化部署 什么是持续集成? (1)Continuous integration (CI) 持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个 ...

  7. Linux环境:持续集成环境部署系列

    之前的博客介绍了Linux环境下持续集成环境部署的一些内容,这篇博客将其整理一下,算做一个index,方便自己和大家查阅... 1.linux下安装JDK Jenkins是一个java开源的持续集成工 ...

  8. 持续集成①安装部署jenkins从git获取代码

    持续集成①安装部署jenkins从git获取代码 一:持续集成的概念: 1.1:总体的概括 持续集成Continuous Integration 持续交付Continuous Delivery 持续部 ...

  9. Jenkins+Maven+Sonar系统持续集成环境部署以及配置

    一.Jenkins介绍以及安装 什么是持续集成?   随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题.尤其是近些年来,敏捷(Ag ...

随机推荐

  1. Java链接Redis时出现 “ERR Client sent AUTH, but no password is set” 异常的原因及解决办法

    Java链接Redis时出现 "ERR Client sent AUTH, but no password is set" 异常的原因及解决办法 [错误提示] redis.clie ...

  2. [Docker] Run Short-Lived Docker Containers

    Learn the benefits of running one-off, short-lived Docker containers. Short-Lived containers are use ...

  3. [Grid Layout] Use auto-fill and auto-fit if the number of repeated grid tracks is not to be def

    What about the situation in which we aren’t specifying the number of columns or rows to be repeated? ...

  4. 阿里云centos 6.5 32位安装可视化界面的方法

    http://www.dzbfsj.com/forum.php?mod=viewthread&tid=2702 http://www.mayanpeng.cn/?p=507 http://bl ...

  5. Matlab Tricks(二十五)—— plot 属性

    marker: 边缘:'MarkerEdgeColor', [],(RGB 配色) 填充:'MarkerFaceColor', [](RGB 配色)

  6. 【a901】滑雪

    Time Limit: 10 second Memory Limit: 2 MB 问题描述 滑雪是一项非常刺激的运动,为了获得速度,滑雪的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待 ...

  7. 【codeforces 768B】Code For 1

    [题目链接]:http://codeforces.com/contest/768/problem/B [题意] 一开始给你一个数字n; 让你用这个数字n根据一定的规则生成序列; (如果新生成的序列里面 ...

  8. github push出错(1)You can't push to git:// Use https://

    fatal: remote error: You can't push to git://github.com/niexiaobo/remote.git Use https://github.com/ ...

  9. ANR问题分析实例

    ANR监测机制包含三种: Service ANR,前台进程中Service生命周期不能超过20秒,后台进程中Service的生命周期不能超过200秒. 在启动Service时,抛出定时消息SERVIC ...

  10. 【Sliding Window】单调队列

    题目描述 给你一个长度为 N 的数组,一个长为 K 的滑动的窗体从最左移至最右端,你只能见到窗口的 K 个整数,每次窗体向右移动一位,如下表: