欢迎大家来到IT世界,在知识的湖畔探索吧!
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概述;
- 下篇文章给大家讲解的是微服务架构在技术细节上的任务管理;
- 觉得文章不错的朋友可以转发此文关注小编;
- 感谢大家的支持!
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/36920.html