Home Archives Categories Tags

GoCD 使用介绍

发布时间: 更新时间: 总字数:1332 阅读时间:3m 作者: 分享

GoCD 一款先进的持续集成和发布管理系统,由ThoughtWorks开发。使用GoCD来建立起一个项目的持续部署pipeline是非常快的,非常方便。

介绍

  • 优点
  • 使用PipeLineGroup,PipeLine,Stage,Job,Task 分级分层控制任务粒度和关联性
  • 强大的用户,角色系统
  • go-server <–> go-agent 通信和管理模式
  • 除了JRE 1.6+ 以外不依赖其它组件,对系统的冲击很小,方便部署
  • 不足
  • 不支持一个PipeLine、Job在多个Agent上依次执行(对于大规模集群式部署的应用来说,这简直要命)
  • 插件比较稀少
  • 开源时间短,用户群还比较小

与Jenkins的比较

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

版本

GoCD 包括商业版和开源版本。

贡献统计参考:https://github.com/gocd/gocd/graphs/contributors (主要是ThoughtWorks人员)

架构

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

架构优点

  • 测试可以运行在不同的平台上,保证你的软件在多个平台都能良好的工作;
  • 你可以将测试划分为不同的群组并并行的运行在多个Agent上,节省运行测试时间;
  • 可以方便的管理Agent,及时响应不同的环境要求。

重要概念

  • Task:需要执行的任务,通常为一条命令
  • Job:Task的有序列表,执行时按照task的顺序执行,有依赖性,当任一个task失败时,Job终止。
  • Stage:一组相互依赖Job的有序集合。当任一个Job执行失败时,该Stage执行失败。
  • Pipeline:按顺序执行的一组Stage集合。当任一个Stage执行失败时,该Pipeline执行失败。
  • Materials and triggers:触发Pipline执行的条件。通常是git、svn相应动作或定时任务。
  • Agent:Where do these tasks, jobs, stages and pipelines run?包括Linux、windows、Mac OS X。
  • Resources:Agents and jobs can be enhanced with “Resources”.
  • Environments:将pipelines 和 agents 分组或隔离。
  • Environment Variables:用户在配置文件中定义的变量值。注意EnvironmentEnvironment Variables没有直接关系。
  • Templates:模版,开发中。

Docker 安装部署

服务端安装

# 1. 下载镜像
docker pull gocd/gocd-server:v17.3.0
# 2. 启动
docker run -d -p8153:8153 -p8154:8154 gocd/gocd-server:v17.3.0

访问地址

  • http://ip_address:8153
  • https://ip_address:8154 (与8153区别是提供 Https 协议访问)

客户端安装

# 1. 下载镜像
docker pull gocd/gocd-agent-centos-7:v17.4.0
# 2. 启动
docker run -d -e GO_SERVER_URL=https://ip_address:8154/go gocd/gocd-agent-centos-7:v17.4.0
或:
docker run -itd -e GO_SERVER_URL=https://$(docker inspect --format='{{(index (index .NetworkSettings.IPAddress))}}' prickly_goldwasser):$(docker inspect --format='{{(index (index .NetworkSettings.Ports "8154/tcp") 0).HostPort}}' prickly_goldwasser)/go gocd/gocd-agent-centos-7:v17.4.0

注意:新添加的agent默认为Pending状态,使用前需要在对他做Enable操作,之后agent的状态变为Idle

参考

  1. 开源GoCD
  2. https://docs.gocd.io/
  3. https://github.com/gocd/gocd/wiki
最新评论
加载中...