Go CD 是属于在持续集成,持续交付过程中使用的自动化构建工具,可以执行编译,自动化测试,自动部署等等。
在此之前,已经使用过Jenkins工具了,Go CD 的功能和Jenkins差不多,但又有其特点。
Go CD中的某些概念
Task
task是要执行的一个build任务,一般是一个命令行指令
Job
- 一个Job由多个task组成,每个task按排列顺序执行。
- 当一个task执行失败,那么这个job就会被认为失败,并且没有其他特殊的设置的话,这个失败的task之后的其他task都不会被执行。
- 在一个job中的task作为独立的程序运行的,某一个task改变的环境变量不会影响后续的tasks,但是这个task对文件系统的更改在后续的tasks中可见。
Stage
- 一个Stage由多个job组成,job之间可以相互独立运行,也就是说在Stage之中的job可以并行。
- 一个job失败了,那么该stage也被认为是失败的,由于stage的job相互独立,所以其他的job还是会继续执行,不受影响。
Pipeline
一个Pipeline由多个stage组成,stage按顺序执行,若是一个stage执行失败了,那么该pipeline也被认为是失败的,并且之后的stage不会继续执行。
Materials
- Materials是pipeline跑的起因,一般是源代码仓库,例如git、SVN等。
- 当代码更新的时候,Go Server会持续的获取代码仓库的代码。
- 在某一个pipeline1中的stage也可以作为另一个pipeline2的Materials,如此在stage执行完毕后会触发pipeline2运行。
Artifacts
Artifacts一般是文件或者文件夹,当job执行完毕后会发布Artifacts,供给用户、后续执行的stage或pipeline使用。
Agent
Go Agents是tasks, jobs, stages 和 pipeline 运行的地方。
Resources
Resources指的是Agent中有的资源,它帮助jobs寻找适合的Agent,当job需要的资源在某agent中都存在的时候,才会使用该agent。
Environments
- Environments是用来分组的,把有联系agent 和 pipelines分成一组。
- 一个pipeline最多只能在一个environment中。
- 一个agent可以在多个environment中,或不属于任何一个environment。
- 一个agent只能获取到属于和该agent有联系的environment中的pipeline中的jobs;无法获取其他jobs,哪怕这些jobs不属于任何environment。
Environment Variables
- Environment Variables和Environments没有关系,它是用户在配置中自己定义的变量。这些环境变量与Task在运行时可用的其他环境变量一样。
- Environment Variables可以在 Environment ,pipelines,stages 和 jobs 中定义。并且下一层的Environment Variables可以重写上一层的,例如jobs重写Environment的变量。