GoCD从入门到放弃 - 基础使用

GoCD,一个开源的持续集成和持续交付系统,可以在持续交付过程中执行编译,自动化测试,自动部署等等,于Jenkins类似。GoCD的基础架构由Server和Agent组成:

- Server负责控制一切(配置),轮询材料(如代码仓库)的变化,检测到材料变化需要触发Pipeline时,将Job分配给Agent去执行

- Agent接收Server分配的Job,执行Job下的Task(运行命令、部署等),并将Job的状态报告给Server,由Server整理信息判断该Job所处Stage的状态

- 每个部署业务的机器上都必须安装Agent


server和agent的关系

1. GoCD中的一些基本概念

    Task - 任务

        任务或构建任务是需要执行的操作,通常每个Task只是一个命令。

    Job - 工作

     Job由多个Task组成,每个Job将按照顺序依次运行,运行过程中如果当前Task失败,则整个Job为失败,且后续Task不再运行。

     Job中的每个Task都是作为一个独立的程序来运行的,因此,Task对其任何环境变量所做的更改都不会影响后续Task。 后续Task可以看到系统所做的任何更改。

    Stage - 阶段

    一个Stage由多个Job组成,在一个Stage里,每个Job都是独立于其他Job的,这意味着GoCD可以并行执行多个Job,如果某一个Job运行失败,则这个Stage运行失败;但是这不影响其他Job的运行。

    Pipeline - 管道

    一个Pipeline由多个Stage组成,每个Stage都将按照顺序运行,如果某一个Stage运行失败,后续的Stage则不会运行。

一个简单的Pipeline,由三个Stage组成

    Materials and triggers - 材料和触发器

    很显然如果没有水,管道妥妥是空的,通常Material是代码存储仓库,它可以支持Git、SVN、Mercurial等等。GoCD不断轮询查找是否有新的提交,如果有新的提交则重新运行Pipeline。它还支持定时触发器,多种代码仓库。

  ·  Pipeline Dependencies - 管道依赖关系

    不同Pipeline之间可以设置触发,如下图所示,Pipeline1的Stage1和Stage2都可以触发Pipeline2的运行。


    Value Stream Map - 价值流图(VSM)

    端到端的Pipeline全局图


    Artifacts - 工件

    Artifacts一般是文件或者文件夹,当job执行完毕后会发布Artifacts,供给用户、后续执行的stage或pipeline使用。

    Agent & Resources- 代理 & 资源

    Agent: 执行job的go节点。

    Resource: 标记agent的标签,标识agent上有哪些资源,用来判断再该agent上是不是可以执行某种任务。

    如下图所示,

    1.任务1可以由GoCD服务器分配给代理1或3。

    2.作业2只能分配给代理1(因为它是提供Linux资源的唯一代理)。

    3.作业3只能分配给代理1(因为它是提供这两种资源的唯一代理)。4.工作4可以分配给任何三个代理,因为这个工作不需要特殊的资源匹配。

    注意,代理3有一个Apple资源并不能阻止它被分配工作。它恰好是一种资源,它不需要任何显示的工作。


Environment  &  Environment Variables- 环境和环境变量

"Environment" 用来对对pipeline和agent进行分组. 分组规则如下:

1. 一个pipeline 最多属于一个environment。

2. 一个agent可以与任意个environments关联。

3. 一个agent可以执行与其关联的environment中的pipeline里的job。

4. 一个与environment关联的agent不能执行没有与其关联的environment中的pipeline里的job。

Environments Variables的定义优先级从高到低依次如下

Job > Stage > Pipeline > Environment

2. GoCD中的基本组件

2.1 GoCD仪表板

2.2 查看Agent

Agents页面列出了服务器可用的所有Agent和它们当前的状态。

当代理首次连接到服务器时,它是“Pending”(挂起状态)。管理员必须在GoCD将工作安排在该Agent之前启用Agent。

管理员也可以禁用Agent。GoCD不会为一个被禁用的Agent安排工作。如果在Agent被禁用时正好有一项工作正在该Agent上建立,则该工作将被完成;然后才禁用Agent。管理员在重新安排工作之前需要启用Agent。

管理员可以选择删除不再需要的Agent。在删除Agent之前,必须禁用该Agent。处于(building)状态或者(cancelled)状态的Agent不能被删除。


2.3 查看Agent详情

此界面可以查看每个Agent的详细配置信息以及运行信息



2.4 Pipeline Activity界面

Pipeline Activity界面显示了当前Pipeline所有运行情况


2.5 Stage / Job详情

选择上面任何一个颜色块都可以进入所属Stage/Job的详细界面



2.6 GoCD管理

有四种配置管道的方法

    通过管理界面来配置管道。

    通过管理界面的“Config XML”选项卡直接编辑XML。

    还可以通过调用配置API来配置管道

    通过文件系统直接进行XML编辑进行配置后。默认情况下,Go服务器每5秒对文件系统进行轮询,以更改cruise-config.xml。该文件的位置显示在Admin >配置XML选项卡的右上角。


3. 如何配置GoCD

3.1 创建新Pipeline

输入名称和所属Group


配置代码仓库,输入代码仓库地址

值得一提的是,这里有一个黑名单功能,可以指定一组GoCD在检查更改时应该忽略的文件。存储库变更集只包含这些文件不会自动触发管道。这些都在配置参考资料忽略部分详细说明。


填写Stage和Job

填写默认Stage和Job的信息,包括名称,运行命令等,之后点击finish便完成啦


3.2 管理Pipeline及其依赖

每个Pipeline都有一个设置界面,如图所示


可以修改原料的代码仓库


可以管理Stage


也可以管理Job


3.3 管理Agent

在Agent页面,可以选择Agent,之后将其关闭或启用


还可以在Job设置中配置Resources,再配置Agent的Resources,使Job运行于指定Agent上



3.4 锁定Pipeline

确保只有一个GoCD管道实例可以同时运行。

一般默认为第三种运行多个实例

第一种,只能运行一个实例(xbtest2),可以运行多个实例(xbtest3)

第二种,运行管道的单个实例并锁定失败,当Stage运行失败的时候,依然保持锁定状态,不能触发新的Pipeline运行,直到手动解除锁定方可继续重新运行

3.5 定时器&超时处理

GoCD支持定时运行Pipeline功能,在设置中找到Timer Settings即可设置


也可通过XML设置,更多信息见 < timer >

GoCD也可以自动取消超时的Job运行,在Job设置下可以配置


也可以在Pipeline下的Server Configuration配置超时设置


3.6 用户管理

GoCD允许管理员控制对GoCD的访问并授予基于角色的权限,也可以设置角色,根据角色分配权限


参考文章

https://www.jianshu.com/p/1b1de0b5441e

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,560评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,104评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,297评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,869评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,275评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,563评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,833评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,543评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,245评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,512评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,011评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,359评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,006评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,062评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,825评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,590评论 2 273
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,501评论 2 268

推荐阅读更多精彩内容