网站首页 > 开源技术 正文
GoCD概述
GoCD是由ThoughtWorks开发的一款用法更加简单的开源的CI/CD工具,使用GoCD可以轻松地实现端到端的可视化价值流程,即完整地展示整个生产作业的流水线状态,发现效率低下的步骤和瓶颈,无须初始化插件,开箱即用,而且可以很方便地集成云环境,支持如Docker和K8s等部署方式。
GoCD相比Jenkins发布更早,更擅长建立复杂的持续交付流程,可以进行依赖关系管理,并且具有更高级的故障追溯功能,通过跟踪从提交到实时部署的每个更改,可以对损坏的管道进行故障排除,从而得到更加快速和准确的反馈。
首先了解一下GoCD的工作原理,与Jenkins不同,GoCD的运行由两个部分组成:Server(服务)和Agent(代理),如图9.25所示。
在GoCD的生态系统中,服务器是控制一切的服务器。它为系统用户提供用户界面,并为代理提供工作,代理是执行由系统的用户或管理员配置的任何工作的代理。服务器本身不会执行任何用户指定的工作,它不会运行任何命令或部署,所以要安装GoCD就必须按照至少一个GoCD服务对应一个GoCD代理。
GoCD的官网(https://www.gocd.org)提供了多种环境的安装包下载,我们可以根据不同的环境下载相对应的安装包,这里以Mac OSX为例,来演示一下如何安装GoCD。
由GoCD的工作原理可知,使用GoCD需要安装Server和Agent,所以首先访问GoCD的官网(https://www.gocd.org/download),然后选择操作系统,这里使用的是OS X,分别下载Server和Agent,就会得到Server.app和Agent.app文件,将它们都拖曳到Application(应用程序文件夹)中即可,然后在应用中可以看到Go Server和Go Agent两个程序,首先启动Go Server,可以看到正在启动的小窗口,如图9.26所示。
启动成功后,会自动打开浏览器进入默认的首页(http://localhost:8153),然后通过简单的初始化用户,就能够访问GoCD的首页,如图9.27所示。
接 着 就 可 以 启 动 Go Agent , 默 认 Agent 连 接 localhost 的 GoServer,如果需要修改,也可以打开“Go Agent”的设置菜单,如图9.28所示。
我们在用一个host下启动的Server和Agent,无须修改配置,这样就算完成安装,无须插件,开箱即用。其他环境的GoCD安装同样简单,这里不再介绍,官网上有详细的教程。
接下来通过GoCD创建一个流水线任务,如果当前没有一个流水线,首页就会默认添加流水线(Add Pipeline)的页面,如图9.27所示。首先输入流水线的名称和分组,单击“NEXT”按钮后配置源码的下载地址和管理方式,这里选择Git和之前webapp的项目地址,如图9.29所示。
最后需要配置具体的管道步骤,首先可以设置管道名称和任务名称,以及触发任务的条件,这里假设我们配置的测试环境,然后任务是构建,如图9.30所示。
接着需要配置任务的执行方式,这里选择shell脚本的方式,并且GoCD需要指定脚本的名称和路径,如图9.31所示。
根据图9.31中的配置,我们需要在项目的根目录下添加gocd文件夹,在gocd文件夹中添加build-script.sh文件,由于项目使用Gradle,因此构建脚本的内容如下。
#!/usT/bin/env bashed ..
cd··
-/gradlew clean build
最后单击“FINISH”按钮即可完成配置,当然一个管道可以配置多个任务,初次添加的引导页只能添加一个任务,在添加后的配置页面中添加多个任务。接下来先验证当前配置的正确性,再来添加后续的步骤,配置完成后会自动触发流水线执行,可以在首页看到当前新添加的流水线,如图9.32所示。
流水线触发执行后会在下方展示任务的结果,如图9.32中展示的是一个“ √ ”,表示执行成功,单击“ √ ”按钮,可以快捷地进入任务的详情页面,如图9.33所示。
由图9.33可知,目前流水线只有一个任务,并且通过一个,选择“Jobs”菜单项,单击任务名称“build”可以查看当前任务的执行日志,如图9.34所示。
接下来将流水线配置完整,它能够完成一次部署。单击首页流水线右上方的设置按钮,可以快捷地进入流水线的配置页面,如图9.35所示。
选择“Stages”菜单项,如图9.36所示。
从图9.36中可以看出,一个流水线同样可以拥有多个stage,单击之前配置的“test-env”,然后选择“Jobs”菜单项,可以进入所选stage的任务列表页面,如图9.37所示。
然后通过单击列表下方的“Add new job”按钮来添加一个新的任务,任务配置页面如图9.38所示。
还是采用shell脚本的方式,不过这次的任务是构建一个Docker镜像,所以任务名称为image。使用shell脚本的方式,也可以不通过脚本文件,直接在页面上输入指令内容,如图9.39所示。
这里为了展示bash的用法,使用在页面上配置命令的方式,但我们更希望使用文件的方式将命令随代码一起被Git管理起来。最后只需配置一个运行的任务即可,配置方式和image任务相似,将其命名为run,不过在运行之前要先删除上一个正在运行的容器。GoCD的任务可以执行多个指令,首先按照之前相同的方式配置任务,然后在Jobs的配置页面单击“Add new task”按钮来添加多个任务。如图9.40所示,run的Job下添加了两个task。
配置完成后,可以执行流水线进行测试,这里可能遇到一个问题,就是我们的Agent在执行Docker指令时会报错找不到Docker命名,和之前Jenkins的问题类似,我们需要指定PATH的环境变量来加载相关的指令路径,单击系统上方的“ADMIN”菜单项,然后选择第一列的“Environments”(环境)选项,如图9.41所示。
单击“ADD A NEW ENVIRONMENT”按钮,可以看到如图9.42所示的页面。
通过添加环境变量的引导页面,我们可以设置当前环境的名称,并选择变量关联的流水线和Agent,以及变量的键和值,这里添加和之前Jenkins中所添加的环境变量相同的键值,内容如下。
SPATH:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/buildserver/Library/GrouplContainers/group.com.docker/bin)
环境变量设置页面如图9.43所示。
单击“FINISH”按钮即可完成配置,当前流水线即可正常运行,其运行结果页面如图9.44所示。
DevOps概述
DevOps是近几年很流行的一个概念,有人认为它是一种文化,有人认为它是一项软件运动,也有人认为它是一种方法,定义有很多,而且在不同的团队、不同的企业都有不同的理解。那到底DevOps是什么?
很多定义都是在讨论DevOps的实践,从字面上看,DevOps就是软件的开发人员(Dev)和运维人员(Ops)的结合,结合的方式有很多,可大可小。例如,一个小团队中可以培养一个全栈开发人员,既可以写代码,又可以做运维,可以理解它是一种新的角色或职位。又如,一个企业中可能是开发部门和运维部门的结合,不仅是技能扩展,甚至涉及公司的组织架构、工作流程、考核指标等方面的变革,那么可以理解它是一种文化、流程。再上升到整个IT行业,DevOps又可以理解为一种软件的革新运动。不论定义是什么,DevOps的目标都一致,都是通过重视开发和运维的结合,缩短开发周期,让软件交付能够更快捷、更高效、更可靠地构建、测试和发布。
可以看出,DevOps的理念十分契合敏捷方法,也算是敏捷大伞下的产物,而CI/CD也是DevOps实践中提倡的重要工具之一。所以说DevOps是文化也没错,即使在小团队,向DevOps过渡也需要思想上的转变。简单来说,DevOps的宗旨就是消除两个传统上孤立的职能之间的壁垒,通过合作,甚至是身兼两职,来达到频繁沟通、频繁验证、提高交付质量和体验。
复杂来说,DevOps还涉及大量的实践和流程的改变,如搭建CI/CD,确保可以频繁地持续集成和部署,运用各种开发方法和自动化测试的手段,保证代码可独立交付,利用容器化等技术统一部署接口和脚本,与开发代码同步版本管理,自动构建更新,采用微服务的架构方式,使服务的开发和部署更加独立和轻量。总而言之,就是让开发环节(Dev)和运维环节(Ops)的工作可以动态地结合起来,就像两个环节可以无缝互相运转一样,如图9.45所示。
本文给大家讲解的内容是GoCD概述;
- 下篇文章给大家讲解的是微服务架构在技术细节上的任务管理;
- 觉得文章不错的朋友可以转发此文关注小编;
- 感谢大家的支持!
猜你喜欢
- 2024-11-09 一位 Rust 开发者的 Go 初体验(rust 游戏开发)
- 2024-11-09 Go语言(也称为Golang(go 语言 gui)
- 2024-11-09 Go 的 Debug 工具 delve 介绍(godebug=gocacheverify=1)
- 2024-11-09 Gx:基于 IPFS 的通用包管理工具 (Go)
- 2024-11-09 推荐三个Go实战开源项目(推荐三个go实战开源项目是什么)
- 2024-11-09 盘点下我用的顺手的那些开发者工具!
- 2024-11-09 每个开发人员都应该知道的8大VR 开发工具
- 2024-11-09 「工号1024」开源项目工具推荐第14期——Go效率工具
- 2024-11-09 Golang简介(golang gio)
- 2024-11-09 Go 项目推荐之 go-admin(go项目怎么运行)
你 发表评论:
欢迎- 05-16东契奇:DFS训练时喷了我很多垃圾话 我不懂他为什么比赛不这么干
- 05-16这两球很伤!詹姆斯空篮拉杆不中 DFS接里夫斯传球空接也没放进
- 05-16湖人自媒体调查:89%球迷希望DFS回归79%希望詹姆斯回归
- 05-16Shams:湖人得到全能球员DFS 节省了1500万奢侈税&薪金空间更灵活
- 05-16G5湖人胜率更高!詹姆斯不满判罚,DFS谈5人打满下半场:这很艰难
- 05-16DFS:当东契奇进入状态 所有防守者在他面前都像个圆锥桶
- 05-16上一场9中6!DFS:不能让纳兹-里德这样的球员那么轻松地投三分
- 05-16WIDER FACE评测结果出炉:滴滴人脸检测DFS算法获世界第一
- 最近发表
-
- 东契奇:DFS训练时喷了我很多垃圾话 我不懂他为什么比赛不这么干
- 这两球很伤!詹姆斯空篮拉杆不中 DFS接里夫斯传球空接也没放进
- 湖人自媒体调查:89%球迷希望DFS回归79%希望詹姆斯回归
- Shams:湖人得到全能球员DFS 节省了1500万奢侈税&薪金空间更灵活
- G5湖人胜率更高!詹姆斯不满判罚,DFS谈5人打满下半场:这很艰难
- DFS:当东契奇进入状态 所有防守者在他面前都像个圆锥桶
- 上一场9中6!DFS:不能让纳兹-里德这样的球员那么轻松地投三分
- WIDER FACE评测结果出炉:滴滴人脸检测DFS算法获世界第一
- 湖人自媒体调查:89%球迷希望DFS回归 79%希望詹姆斯回归
- 一觉醒来湖人苦盼的纯3D终于到位 DFS能带给紫金军多少帮助
- 标签列表
-
- jdk (81)
- putty (66)
- rufus (78)
- 内网穿透 (89)
- okhttp (70)
- powertoys (74)
- windowsterminal (81)
- netcat (65)
- ghostscript (65)
- veracrypt (65)
- asp.netcore (70)
- wrk (67)
- aspose.words (80)
- itk (80)
- ajaxfileupload.js (66)
- sqlhelper (67)
- express.js (67)
- phpmailer (67)
- xjar (70)
- redisclient (78)
- wakeonlan (66)
- tinygo (85)
- startbbs (72)
- webftp (82)
- vsvim (79)
本文暂时没有评论,来添加一个吧(●'◡'●)