当前位置:网站首页>搭建一套 gocd 的环境
搭建一套 gocd 的环境
2022-06-23 03:54:00 【无向弦】
gocd作为一个一体化的CICD工具在世界五百强中占有很大的分量,我的公司是 Thoughtworks 正是开发维护gocd的公司,我的日常工作中也是使用的gocd, 找了一些网站,对于gocd的介绍比较少, 恰逢最近我在学习一下gocd 的知识,因此总结一下 gocd 的使用并分享出来。
私以为,对于一个软件来说最重要的其实是使用,而后才是安装,再其次是理解其原理,debug,或者说通过debug了解其原理,进而去找看其代码。不能只顾着学习如何安装,如何理解其代码,而忘记了软件的最终目的其实是为了简化繁杂的工作。
上面虽然说的流程是先学习如何使用,再学习安装,但是现实情况似乎并不是如想象中那么理想,现实生活中,并没有一个我们可以随意测试的环境,供我们去试错,从试错中学习,因此问题又归结到了安装搭建环境上。这是一个很难绕开的地方,希望以后可以有方案来绕开,当然我们现在看到的一些 managed 的服务做到了这一点,比如managed Kubernetes managed mysql 等等都可以避免我们再不熟悉任何情况的时候手动安装所带来的打击。
我们回归正题,我们本次主要采用 Linode (我也尝试了vultr厂商,但是开了三台机器都无法ssh到机器上,遂放弃,估计是因为用vultr的太多导致的问题) 这家云服务厂商来搭建我们的 gocd 环境,因为其可以随开随用,随关随停,不会产生额外的成本,其他的云服务厂商如Linode, digitalOcean 都是云服务厂商对开发者比较友好的公司,如果您暂时没有相关的账号,可以通过我们的连接注册,您也可以得到相关的优惠,同时也相当于通过厂商赞助我,减少我的云服务的实际成本,如果您还未注册,可以通过我的链接进行注册,vultr $10 注册优惠地址,vultr $100 优惠注册地址,不过$100有14天的有效期 ,linode $100 60天有效期 。不过这里提一句,如果大家没有达到相应花费的话,并不会给我奖励云服务免费金额,不过还是希望大家有效利用云服务厂商所给的福利进行学习提升自我能力。
gocd 有一个需要首先明确的地方是,其架构为 master-slave 架构(这个与kubernetes有相似之处),master 节点主要用于管理系统, 分配任务 并且提供用户界面。
我们本次采用的策略是,一个 master 节点 两个 slave的模式进行演示,本文的主要的目的是采用CentOS系统安装运行gocd,并且连接 node节点。
gocd 官网也有这些具体的教程,我们通过实例来讲述其中的安装步骤 主要分为三个部分 1. 安装go-server 2. 安装go-agent 3. 联通go-server 和go-agent
1. 安装 go-server
首先我们ssh到机器上 具体内容 参照 https://docs.gocd.org/current/installation/install/server/linux.html
# 添加yum源
sudo curl https://download.gocd.org/gocd.repo -o /etc/yum.repos.d/gocd.repo
# 安装go-server
sudo yum install -y go-server
安装成功信息

通过以上步骤 我们的gocd server 安装完成后,下面我们开始启动 gocd-server
gocd-server 主要通过 service 进行启动 脚本如下
| Script | Description |
|---|---|
| service go-server console | 在前台启动GoCD server |
| service go-server start | 在后台作为守护进程启动 GoCD server |
| service go-server stop | 停止 GoCD server |
| service go-server restart | 重启 gocd server |
因此对于我们现在来说 直接使用 service go-server start 启动即可
# 启动 gocd-server 服务
service go-server start
# 检测服务状态
service go-server status
启动服务成功如下图所示

此时我们可以通过 http://{ {ip-address}}:8153/go 即可访问我们的 gocd-server 端
这里有一个地方需要注意一下 因为 Linode上的CentOS7 默认开启了 iptables 做端口的保护,在我们测试的阶段,可以暂时关闭 iptables 具体命令如下
# 关闭 iptables
systemctl stop firewalld
# 查看 iptables 状态
systemctl status firewalld
关闭截图如下:

我的 gocd-server 成功截图如下

此时我们成功完成了安装 gocd-server 端
2. 安装 go-agent 客户端并联通
下面我们开始 准备go-agent 客户端
安装过程和gocd-server类似
# 添加yum源
sudo curl https://download.gocd.org/gocd.repo -o /etc/yum.repos.d/gocd.repo
# 安装 gocd-agent 服务
sudo yum install -y go-agent
启动命令如下(不过在启动之前首先需要修改 gocd 的配置 让其和gocd-server进行绑定)
| Script | Description |
|---|---|
| service go-agent console | 在前台启动 GoCD agent |
| service go-agent start | 在后台作为守护进程启动 GoCD agent |
| service go-agent stop | 停止 GoCD agent |
| service go-agent restart | 重启 GoCD agent |
service utilizes the service manager (e.g systemd, upstart, init.d) used by your OS.
配置 gocd-agent 绑定 gocd-server
在配置之前我们首先关闭 firewalld 服务
# 关闭 iptables
systemctl stop firewalld
# 查看 iptables 状态
systemctl status firewalld
- 使用你的IDE打开
/usr/share/go-agent/wrapper-config/wrapper-properties.conf - 根据这个文件中的指示配置 Gocd 服务端的地址
- 保存并退出你的编译器
- 运行
service go-agent [start|restart]来 (重启) 启动你的 go-agent 服务
示例如下

修改后的内容

这样我们就可以启动 go-agent 的服务了
# 启动 go-agent 服务
service go-agent start
# 查看 go-agent 状态
service go-agent status
启动完成效果如下:

我们去在 gocd-server 检查下是否注册成功。此时还是进入 gocd-server的地址进行查看
我们点击顶部标签 agent 我们发现刚才的agent 已经在pending状态 效果如下

为什么是pending状态呢 而不是直接使用的状态呢,因为通过上述的流程我们来看,其实我们并没有什么防护性质的机制来保证其他人的 agent 不能注册到我们的server 上 如果我们的代码直接在其他人机器上运行,就很难谈安全性,因此需要我们手动启动这个服务,那如何手动启动呢?
框选这个 agent 点击 enable 即可 效果如下

启动之后 agent的状态从 pending 转换成为 Idle 状态,效果如下

如果我们想配置多个agent 重复上述代码即可
多个agent 效果图如下

至此我们的安装 go-agent 的服务并与 server 联通完成
接下来我会录制这一部分的视频上传到网络上,添加到这部分
其实到这里我们只完成了 gocd 环境的搭建,还没有进行测试,后续的文章,会添加相应运行的内容
后话:基于Linux 服务管理(比如service和systemctl)
参考文章
边栏推荐
猜你喜欢

Cloud native database is in full swing, and the future can be expected

入行软件测试5年,跳槽3次,我摸透了软件测试这一行

"Wechat applet - Basics" takes you to understand the routing system of the applet (2)

Strong push, quick start to software testing

飞桨框架v2.3发布高可复用算子库PHI!重构开发范式,降本增效
![[graph theory] - bipartite graph](/img/2d/999820edafe7294440cf1873a26084.png)
[graph theory] - bipartite graph

Less than a year after development, I dared to ask for 20k in the interview, but I didn't even want to give 8K after the interview~

VGg Chinese herbal medicine identification

618如何冲出重围?海尔智家:做好用户的数字化

UI automation positioning edge -xpath actual combat
随机推荐
强推,软件测试快速入门,一看就会
Thinkphp6 template replacement
微信小程序:凑单满减计算神器
Talk about the composite pattern in C #
In unity, how to read and write a scriptableobject object in editor and runtime
2020:VL-BERT: Pre-training of generic visual-linguistic representation
MVC三层架构
TabControl style of WPF basic control
Strong push, quick start to software testing
centos7部署docker,安装mysql
MySQL stored procedure
1183. electricity
Implementation of the rotation chart
ICER skill 02makefile script self running VCs simulation
Official download and installation of QT and QT vs tools plug-ins
Icer Skill 02makefile script Running VCS Simulation
UI automation positioning edge -xpath actual combat
Is data scientist a promising profession?
396. mine site construction
JDBC调用存储过程、MySQL触发器