产品需要在多个环境部署测试,为了提高部署测试效率,故计划使用CD工具,jenkins确实足够强大,但是使用部署功能是需要安装插件的,再说自己本身只用部署功能,故决定找一个小巧的CD工具,经过一番查找,gocd就是我需要的CD工具;
该工具支持 linux 、windows、mac,也有docker镜像; 官方有详细生动的文档;
工具官网 下载页面 文档页面
以debian环境为例进行部署:
1.gocd server部署
wget https://download.gocd.org/binaries/22.3.0-15301/deb/go-server_22.3.0-15301_all.deb
dpkg -i go-server_22.3.0-15301_all.deb
systemctl start go-server
安装完成后通过: http://127.0.0.1:8153/ 访问(默认绑定在0.0.0.0上)
界面如下:
直接跳到了创建pipeline的界面

2.go-agent部署
wget https://download.gocd.org/binaries/22.3.0-15301/deb/go-agent_22.3.0-15301_all.deb
dpkg -i go-agent_22.3.0-15301_all.deb
修改配置文件配置go-server的IP:
/usr/share/go-agent/wrapper-config/wrapper-properties.conf
systemctl start go-agent
成功后即可在服务器端看到agent信息:

注意: 需要手动enable来启用agent;
3.创建流水线(pipeline)
3.1 物料(material)
物料主要起触发流水线的作用; 包括git、svn等方式(服务器上需要安装git、svn命令),如果确实无法搭建仓库,可以看插件页是否有你需要的方式,我使用的是ftp方式,下载插件后放到 /var/lib/go-server/plugins/external 目录后重启go-server服务即可;

如果你选用的仓库报错: The ref refs/heads/master could not be found.
那么很可能是因为目前一些仓库将mast改名为main的原因,在高级设置里指定branch为main即可;
3.2 管道设置
主要配置流水线名称及环境变量即可;

3.3 阶段设置
主要配置阶段名称及环境变量即可;

3.4 任务设置
此阶段主要配置命令;

4. 修改流水线


5.执行流水线
根据目前资料来看是1分钟轮询一次;
可以手动触发流水线;
6.用户管理

htpasswd创建密码文件:
apt-get install apache2-utils
创建密码文件: htpasswd -c -B passwd user1 创建passwd文件,添加用户user1
htpasswd -B passwd user2 在passwd文件中添加用户user2
添加完毕后如下:

FAQ:
如何将go-agent切换到一个新的go-server?
除了将配置文件 /usr/share/go-agent/wrapper-config/wrapper-properties.conf中的IP进行修改外,还需要删除/var/lib/go-agent/config 目录下的guid.txt和token;参考
2. 流水线执行时命令报错了,但是看不到日志怎么办?
安装script-executor插件;添加命令时选择plugin task -> script-executor

注意:默认使用的用户为go,不是root,注意权限问题;
可以在/etc/sudoers文件中加上 go ALL=(ALL) NOPASSWD: ALL ,以此来达到执行sudo面输入密码的效果;
3.有多个agent执行不同的任务,应该怎么办?
1. 先添加资源,然后将agent和资源类型相关联;

2.在Admin > Pipelines 中配置JOB SETTINGS;

4. 默认工作目录在哪里
pipelines\$pipename\
5. windows下执行注意事项
编写bat脚本
6. 每次执行时是在一个go-agent上执行,还是在多个go-gent上执行呢?
取决于 JOB SETTINGS

7.是否可以在arm环境上运行
可以,deb包和rpm包在aarch64和x86上是一致