热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

GoCD从入门到放弃基础使用

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

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

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

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

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

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

《GoCD从入门到放弃 - 基础使用》 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则不会运行。

《GoCD从入门到放弃 - 基础使用》 一个简单的Pipeline,由三个Stage组成

    Materials and triggers – 材料和触发器

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

  ·  Pipeline Dependencies – 管道依赖关系

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

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

    Value Stream Map – 价值流图(VSM)

    端到端的Pipeline全局图

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

    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资源并不能阻止它被分配工作。它恰好是一种资源,它不需要任何显示的工作。

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

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

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

2. GoCD中的基本组件

2.1 GoCD仪表板

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

2.2 查看Agent

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

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

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

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

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

2.3 查看Agent详情

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

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

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

2.4 Pipeline Activity界面

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

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

2.5 Stage / Job详情

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

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

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

2.6 GoCD管理

有四种配置管道的方法

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

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

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

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

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

3. 如何配置GoCD

3.1 创建新Pipeline

输入名称和所属Group

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

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

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

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

填写Stage和Job

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

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

3.2 管理Pipeline及其依赖

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

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

可以修改原料的代码仓库

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

可以管理Stage

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

也可以管理Job

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

3.3 管理Agent

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

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

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

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

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

3.4 锁定Pipeline

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

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

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

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

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

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

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

3.5 定时器&超时处理

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

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

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

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

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

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

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

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

3.6 用户管理

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

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

参考文章

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


推荐阅读
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 学习SLAM的女生,很酷
    本文介绍了学习SLAM的女生的故事,她们选择SLAM作为研究方向,面临各种学习挑战,但坚持不懈,最终获得成功。文章鼓励未来想走科研道路的女生勇敢追求自己的梦想,同时提到了一位正在英国攻读硕士学位的女生与SLAM结缘的经历。 ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
author-avatar
eric_sun2012
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有