Welcome to GoCD - an open-source Continuous Integration and Continuous Delivery system

2020-07-17 15:45:21

Install

GoCD Server requirements

Hardware

  • RAM - minimum 1GB, 2GB recommended
  • CPU - minimum 2 cores, 2GHz
  • Disk - minimum 1GB free space
GoCD Agent requirements
  • RAM - minimum 128MB, 256MB recommended
  • CPU - minimum 2GHz

Supported Source Control Tools

  • Git >= 1.9
  • Mercurial >= 2.2.2
  • Subversion >= 1.6.11
  • TFS SDK 14.0.3 (TFS 2012, 2013, 2015 and Visual Studio Team Services are supported by GoCD)
  • Perforce >= 2016.1

Java Dependencies for GoCD (Server and Agent)
This version of GoCD works with Java Runtime Environment (JRE) versions 11 and 12

1
2
3
4
5
#server
docker run -d -p8153:8153 -p8154:8154 gocd/gocd-server:v20.5.0

#agent
docker run -d -e GO_SERVER_URL=... gocd/gocd-agent-alpine-3.11:v20.5.0

Config

  • Task 基本上为一个命令,如执行一个ls系统命令,ant构建命令
  • Job 由多个Task组合而成,Task命令的执行是相互独立的.Task会按照配置顺序依次执行,但如果一个Task失败,后续task将会取消执行
    Job的成功与否取决于所有Task是否全部执行成功
  • Stage 由多个Job组合而成,成功与否由全部Task是否成功决定
  • Pipeline 由多个Stage组合而成,执行方式为依次执行,其中一个Stage执行失败,将不会执行后续Stage
  • Material 使用Git,Svn
  • Fan-out and fan-in
    Fan-out 表示一个Stage的结束可以触发多个Pipeline的Stage开始
    Fan-in 表示一个Pipeline的开始可以等待多个Stage完成后才被触发
  • VSM 数据驱动流图,即复杂的Fan-out和Fan-in的视图
  • Artifacts 在Job上配置,默认会有console.log生成(所有的Job都会在agent上执行,Artifacts存在的意义就是将文件上传到server端,再供使用)
  • Environment Variables
  • Resource 可以将Agent进行别名命名,以在配置Job的执行位置时使用,可以将多个Agent命为相同名称

以springboot项目为例,分为几部实现自动打包,参考这里

  • 实现项目自动打包,自动重启
  • 创建tasks
    Task1:执行maven打包操作,GoCD已内置了mvn命令,但是代理服务器上需要安装maven客户端
    Task2:将打包后的jar文件,复制到项目部署目录
    Task3:重启jar包,需要借助shell 命令来完成。

Once the agent is started, switching to the agents tab by clicking on the “Agents” link in the header should take you to a screen where the agent shows up and is idle

Jenkins VS GoCD

Jenkins GoCD
Jenkins是通用自动化工具, 它是为持续集成(CI)构建的 GoCD是连续交付工具
可扩展性是Jenkins的核心特征,归因于插件对于Jenkins功能至关重要 GoCD旨在支持无需安装任何插件即可立即使用的最常见的连续交付方案
可以使用任何配置设置随时启用和禁用作业 这种功能在GoCD中不可用
Jenkins专为持续集成(CI)而设计。除此之外, 还需要插件 尽管GoCD是专门为持续交付(CD)而设计的, 但它是用于持续集成的复杂功能

GoCD User Documentation