持续集成及部署利器:Go

简介: Go是一款先进的持续集成和发布管理系统,由ThoughtWorks开发。(不要和Google的编程语言Go混淆了!)其前身为Cruise,是ThoughtWorks在做咨询和交付交付项目时自己开发的一款开源的持续集成工具。

Go是一款先进的持续集成和发布管理系统,由ThoughtWorks开发。(不要和Google的编程语言Go混淆了!)其前身为Cruise,是ThoughtWorks在做咨询和交付交付项目时自己开发的一款开源的持续集成工具。后来随着持续集成及持续部署的火热,ThoughtWorks专门成立了一个项目组,基于Cruise开发除了Go这款工具。

Go的官方网站是http://www.thoughtworks.com/products/go-continuous-delivery/,其文档是http://www.thoughtworks.com/products/docs/go/13.3/help/welcome_to_go.html

在我目前的项目中,持续集成及部署工具使用的就是Go这款工具。使用Go来建立起一个项目的持续部署pipeline是非常快的,非常方便。

Go的架构设计

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

img_58f938a441feeac50b53185097f9935d.png

这样的好处是:

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

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

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

Agent的lifecycle

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

img_63effb2f1c5cfba753eb60914e23b758.png

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

img_1c33ec7ea46db92e33a1d2aa3a55e67d.png

在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作为开源软件,虽然免费,但是出现问题要么自己动手解决,要么等待维护社区修复。 Jenkins作为开源产品,社区比较活跃,文档资料和插件都比较多,而Go的文档或资料较少。


Go的设计思想还是挺前卫的,在别人还在做持续集成这一步时,它已经做到了持续部署这个层次。但是目前就国内而言能做到持续部署的公司真的不多,甚至很多公司连持续集成这个实践都没有达到。所以Go作为一款收费产品很难在国内打开市场。

我觉得Go可以做出一个免费版来让个人试用,提供一些基本功能。然后为企业应用定制一些高级功能,放置到收费版中,可以扩大自己的市场占用率。

目录
打赏
0
0
0
0
28
分享
相关文章
如何实现前端工程化的持续集成和持续部署?
通过以上步骤,可以建立一套完整的前端工程化 CI/CD 流程,实现前端代码从开发、测试、构建到部署的全自动化,提高开发效率、保证代码质量,快速响应用户需求和市场变化。
一键部署开源Qwen3并集成到钉钉、企业微信
Qwen3系列模型现已正式发布并开源,包含8款“混合推理模型”,其中涵盖两款MoE模型(Qwen3-235B-A22B与Qwen3-30B-A3B)及六个Dense模型。阿里云计算巢已支持Qwen3-235B-A22B和Qwen3-32B的私有化部署,用户可通过计算巢轻松完成部署,并借助AppFlow集成至钉钉机器人或企业微信。文档详细介绍了从模型部署、创建应用到配置机器人的全流程,帮助用户快速实现智能助手的接入与使用。
一键部署开源Qwen3并集成到钉钉、企业微信
NVIDIA 实现通义千问 Qwen3 的生产级应用集成和部署
阿里巴巴近期开源了通义千问Qwen3大语言模型(LLM),包含两款混合专家模型(MoE)235B-A22B与30B-A3B,以及六款稠密模型(Dense)从0.6B到32B不等。开发者可基于NVIDIA GPU使用TensorRT-LLM、Ollama、SGLang、vLLM等框架高效部署Qwen3系列模型,实现快速词元生成和生产级应用开发。
容器化AI模型的持续集成与持续交付(CI/CD):自动化模型更新与部署
在前几篇文章中,我们探讨了容器化AI模型的部署、监控、弹性伸缩及安全防护。为加速模型迭代以适应新数据和业务需求,需实现容器化AI模型的持续集成与持续交付(CI/CD)。CI/CD通过自动化构建、测试和部署流程,提高模型更新速度和质量,降低部署风险,增强团队协作。使用Jenkins和Kubernetes可构建高效CI/CD流水线,自动化模型开发和部署,确保环境一致性并提升整体效率。
DevOps实践:Jenkins在持续集成与持续部署中的价值
【10月更文挑战第27天】在快速发展的软件开发领域,DevOps实践日益重要。Jenkins作为一款流行的开源自动化服务器,在持续集成(CI)和持续部署(CD)中扮演关键角色。本文通过案例分析,探讨Jenkins在Java项目中的应用,展示其自动化构建、测试和部署的能力,提高开发效率和软件质量。
168 2
一键部署开源DeepSeek并集成到企业微信
DeepSeek近期发布了两款先进AI模型V3和R1,分别适用于通用应用和推理任务。由于官方API流量过大,建议通过阿里云的计算巢进行私有化部署,以确保稳定使用。用户无需编写代码即可完成部署,并可通过AppFlow轻松集成到钉钉、企业微信等渠道。具体步骤包括选择适合的机器资源、配置安全组、创建企业微信应用及连接流,最后完成API接收消息配置和测试应用。整个过程简单快捷,帮助用户快速搭建专属AI服务。
一键部署开源DeepSeek并集成到企业微信
一键部署开源DeepSeek并集成到钉钉
DeepSeek发布了两款先进AI模型V3和R1,分别适用于对话AI、内容生成及推理任务。由于官方API流量限制,阿里云推出了私有化部署方案,无需编写代码即可完成部署,并通过计算巢AppFlow集成到钉钉等渠道。用户可独享资源,避免服务不可用问题。部署步骤包括选择机器资源、配置安全组、创建应用与连接流,最终发布应用版本,实现稳定高效的AI服务。
一键部署开源DeepSeek并集成到钉钉
gitlab-ci 集成 k3s 部署spring boot 应用
gitlab-ci 集成 k3s 部署spring boot 应用
DevOps实践:持续集成与持续部署在现代软件开发中的作用
【10月更文挑战第42天】在快节奏的软件开发世界里,DevOps已经成为一种提升效率、确保质量和加速交付的重要方法。本文将深入探讨DevOps的核心组成部分—持续集成(CI)和持续部署(CD)—并展示它们如何通过自动化流程优化开发周期。我们将从基础概念讲起,逐步过渡到实际操作,最终通过一个简单代码示例来演示这一过程。文章旨在为读者提供清晰的指导,帮助他们理解和实现CI/CD流程,从而在软件开发领域取得竞争优势。
Jenkins在持续集成与持续部署中的价值
Jenkins在持续集成与持续部署中的价值

热门文章

最新文章