惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

W
WeLiveSecurity
博客园 - 【当耐特】
Microsoft Azure Blog
Microsoft Azure Blog
WordPress大学
WordPress大学
Stack Overflow Blog
Stack Overflow Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
IT之家
IT之家
Cloudbric
Cloudbric
The Register - Security
The Register - Security
小众软件
小众软件
PCI Perspectives
PCI Perspectives
G
Google Developers Blog
AI
AI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Google DeepMind News
Google DeepMind News
Google DeepMind News
Google DeepMind News
宝玉的分享
宝玉的分享
Recent Commits to openclaw:main
Recent Commits to openclaw:main
量子位
TaoSecurity Blog
TaoSecurity Blog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
F
Full Disclosure
N
Netflix TechBlog - Medium
博客园_首页
Last Week in AI
Last Week in AI
A
Arctic Wolf
B
Blog RSS Feed
J
Java Code Geeks
C
Cybersecurity and Infrastructure Security Agency CISA
I
InfoQ
aimingoo的专栏
aimingoo的专栏
云风的 BLOG
云风的 BLOG
NISL@THU
NISL@THU
MyScale Blog
MyScale Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Jina AI
Jina AI
有赞技术团队
有赞技术团队
S
Schneier on Security
L
Lohrmann on Cybersecurity
P
Privacy & Cybersecurity Law Blog
T
Threat Research - Cisco Blogs
P
Palo Alto Networks Blog
S
Security @ Cisco Blogs
Security Archives - TechRepublic
Security Archives - TechRepublic
Security Latest
Security Latest
Vercel News
Vercel News
博客园 - 司徒正美
Webroot Blog
Webroot Blog
Hacker News: Ask HN
Hacker News: Ask HN
A
About on SuperTechFans

Li Hui Blog

工作流调研与实践经验 如何搭建私有仓库 Nexus 并配置 SSL 证书 从零开始搭建单节点 ELK 浅谈一个产品的用户引导 归档 GoCD 加入基础密码验证 如何使用 gitbook cli工具 React JSX语法再实践 React 组件示例 如何搭建第一个 React 程序 [SpringBoot 指南] 连接 mysql 数据库并进行增删改查测试 [SpringBoot 指南] 如何开始 Springboot 之旅 实现自己第一个接口 LeetCode刷题笔记 VPC笔记 读书的目的 [人文书籍] 把时间当作朋友 Docker基础命令 [技术书籍]JSON必知必会 Docker原理研究 使用Ubuntu 及宝塔搭建Ghost平台 [Linux]Ubuntu安装宝塔面板 2020年年终总结 CURL学习教程 2020年度计划记录 [安全系列]生成ssh证书 [CLI应用学习]时间使用GitHub CLI [linux系列] 修改主机用户名 轻松学CLI应用总章节 [Shell编程系列]基础教程2 [Shell编程系列]基础教程1 [安全相关]使用腾讯云子账号提高账号安全性 [Git教程系列]基础教程5 解决修改错分支的问题 [博客优化]为Wordpress加入伪静态 2020年的12本书籍 [Git系列教程]基本使用4 Git log的使用 [Git系列教程]Git基础操作3 [Git教程系列]基础操作2 [Git教程系列]Git初次配置 [周年总结]脉脉深情,深思志远,周年总结计划 [博客优化]为网站添加SSL证书 [博客优化]Wordpress加入redis服务器提高速度 开篇词 Posts Archive Li Hui Blog
搭建一套 gocd 的环境
2022-06-09 · via Li Hui Blog

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

1# 添加yum源
2sudo curl https://download.gocd.org/gocd.repo -o /etc/yum.repos.d/gocd.repo
3# 安装go-server
4sudo yum install -y go-server

安装成功信息

image-20220609003435010

通过以上步骤 我们的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 启动即可

1# 启动 gocd-server 服务
2service go-server start
3# 检测服务状态
4service go-server status

启动服务成功如下图所示

image-20220609003652565

此时我们可以通过 http://{{ip-address}}:8153/go 即可访问我们的 gocd-server 端

这里有一个地方需要注意一下 因为 Linode上的CentOS7 默认开启了 iptables 做端口的保护,在我们测试的阶段,可以暂时关闭 iptables 具体命令如下

1# 关闭 iptables
2systemctl stop firewalld
3# 查看 iptables 状态
4systemctl status firewalld

关闭截图如下:

image-20220609005201766

我的 gocd-server 成功截图如下

image-20220609005323497

此时我们成功完成了安装 gocd-server 端

2. 安装 go-agent 客户端并联通

下面我们开始 准备go-agent 客户端

安装过程和gocd-server类似

1# 添加yum源
2sudo curl https://download.gocd.org/gocd.repo -o /etc/yum.repos.d/gocd.repo
3# 安装 gocd-agent 服务
4sudo 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

在配置之前我们首先关闭防火墙

1# 关闭 iptables
2systemctl stop firewalld
3# 查看 iptables 状态
4systemctl status firewalld
  • 使用你的IDE打开 /usr/share/go-agent/wrapper-config/wrapper-properties.conf
  • 根据这个文件中的指示配置 Gocd 服务端的地址
  • 保存并退出你的编译器
  • 运行 service go-agent [start|restart] 来 (重启) 启动你的 go-agent 服务

示例如下

image-20220609084643580

修改后的内容

image-20220609084858716

这样我们就可以启动 go-agent 的服务了

1# 启动 go-agent 服务
2service go-agent start
3# 查看 go-agent 状态
4service go-agent status

启动完成效果如下:

image-20220609085121868

我们去在 gocd-server 检查下是否注册成功。此时还是进入 gocd-server的地址进行查看

我们点击顶部标签 agent 我们发现刚才的agent 已经在pending状态 效果如下

check-go-agent-in-server

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

框选这个 agent 点击 enable 即可 效果如下

enable-go-agent-in-server

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

enabled-go-agent-in-server

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

多个agent 效果图如下

check-two-go-agent-in-server

至此我们的安装 go-agent 的服务并与 server 联通完成

接下来我会录制这一部分的视频上传到网络上,添加到这部分

其实到这里我们只完成了 gocd 环境的搭建,还没有进行测试,后续的文章,会添加相应运行的内容


后话:基于Linux 服务管理(比如service和systemctl)

参考文章

  1. https://kishore-devaraj.github.io/curio/gocd-101/
  2. https://docs.gocd.org/current/installation/install/server/linux.html
  3. https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-gocd-on-ubuntu-16-04#preparing-gocd-for-first-use