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

推荐订阅源

N
News and Events Feed by Topic
V
Visual Studio Blog
Jina AI
Jina AI
云风的 BLOG
云风的 BLOG
C
Check Point Blog
M
MIT News - Artificial intelligence
罗磊的独立博客
月光博客
月光博客
阮一峰的网络日志
阮一峰的网络日志
V
V2EX
S
Secure Thoughts
酷 壳 – CoolShell
酷 壳 – CoolShell
Application and Cybersecurity Blog
Application and Cybersecurity Blog
B
Blog
N
News | PayPal Newsroom
爱范儿
爱范儿
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
P
Privacy International News Feed
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Security Archives - TechRepublic
Security Archives - TechRepublic
Scott Helme
Scott Helme
V2EX - 技术
V2EX - 技术
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Simon Willison's Weblog
Simon Willison's Weblog
H
Help Net Security
大猫的无限游戏
大猫的无限游戏
K
Kaspersky official blog
雷峰网
雷峰网
IT之家
IT之家
Vercel News
Vercel News
S
Schneier on Security
Schneier on Security
Schneier on Security
C
CERT Recently Published Vulnerability Notes
博客园_首页
T
Tailwind CSS Blog
T
The Exploit Database - CXSecurity.com
F
Full Disclosure
博客园 - 司徒正美
The Cloudflare Blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
C
Cisco Blogs
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
N
News and Events Feed by Topic
Cyberwarzone
Cyberwarzone
P
Proofpoint News Feed
F
Fortinet All Blogs
有赞技术团队
有赞技术团队
S
Security Affairs
Latest news
Latest news

博客园 - 李占卫

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

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支持多个主流的操作系统。

Server-Agent

这样的好处是:

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

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

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

Agent的lifecycle

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

AgentLifeCycle

每一台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。

GoConcepts

在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

迈出持续交付的第一步