产品需要在多个环境部署测试,为了提高部署测试效率,故计划使用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的界面
![](https://img-blog.csdnimg.cn/img_convert/9bd40837e73e25ab046101dfeb27b28e.png)
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信息:
![](https://img-blog.csdnimg.cn/img_convert/9b94e567bcaf5986f9c106b815643b35.png)
注意: 需要手动enable来启用agent;
3.创建流水线(pipeline)
3.1 物料(material)
物料主要起触发流水线的作用; 包括git、svn等方式(服务器上需要安装git、svn命令),如果确实无法搭建仓库,可以看插件页是否有你需要的方式,我使用的是ftp方式,下载插件后放到 /var/lib/go-server/plugins/external 目录后重启go-server服务即可;
![](https://img-blog.csdnimg.cn/img_convert/59c0ef946d011beedae752ea07712635.png)
如果你选用的仓库报错: The ref refs/heads/master could not be found.
那么很可能是因为目前一些仓库将mast改名为main的原因,在高级设置里指定branch为main即可;
3.2 管道设置
主要配置流水线名称及环境变量即可;
![](https://img-blog.csdnimg.cn/img_convert/8427b5256c4c29abe957b767d81a984e.png)
3.3 阶段设置
主要配置阶段名称及环境变量即可;
![](https://img-blog.csdnimg.cn/img_convert/39c86aa1c5d8dda6dde61ffa2072738d.png)
3.4 任务设置
此阶段主要配置命令;
![](https://img-blog.csdnimg.cn/img_convert/7f398b6aeb7f7a11d630450f0e0ce8a7.png)
4. 修改流水线
![](https://img-blog.csdnimg.cn/img_convert/3502fc3eb7a60c9f85fe0c6ba8aa0a28.png)
![](https://img-blog.csdnimg.cn/img_convert/9c312f0508bcbe2b2fae249ca323aebc.png)
5.执行流水线
根据目前资料来看是1分钟轮询一次;
可以手动触发流水线;
6.用户管理
![](https://img-blog.csdnimg.cn/img_convert/b0c8aff20a3fc3c2cf0957e700d2824d.png)
htpasswd创建密码文件:
apt-get install apache2-utils
创建密码文件: htpasswd -c -B passwd user1 创建passwd文件,添加用户user1
htpasswd -B passwd user2 在passwd文件中添加用户user2
添加完毕后如下:
![](https://img-blog.csdnimg.cn/img_convert/9e144804e9ab8d53964081b8e03cf908.png)
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
![](https://img-blog.csdnimg.cn/img_convert/4bc17a098f1c15b807a909bab6e53be4.png)
注意:默认使用的用户为go,不是root,注意权限问题;
可以在/etc/sudoers文件中加上 go ALL=(ALL) NOPASSWD: ALL ,以此来达到执行sudo面输入密码的效果;
3.有多个agent执行不同的任务,应该怎么办?
1. 先添加资源,然后将agent和资源类型相关联;
![](https://img-blog.csdnimg.cn/img_convert/238be7c492fd3b2997a78f80d7522575.png)
2.在Admin > Pipelines 中配置JOB SETTINGS;
![](https://img-blog.csdnimg.cn/img_convert/0418e7453325bfd2a4996a6d3cf78aad.png)
4. 默认工作目录在哪里
pipelines\$pipename\
5. windows下执行注意事项
编写bat脚本
6. 每次执行时是在一个go-agent上执行,还是在多个go-gent上执行呢?
取决于 JOB SETTINGS
![](https://img-blog.csdnimg.cn/img_convert/776f0c30b3576947693559b249999074.png)
7.是否可以在linux arm环境上运行
默认支持x86平台(因deb、rpm包均只包含了x86平台的java及java service wrapper),但是我们可以更新java及wrapper;
8. windows下go-agent默认目录
C:\Program Files (x86)\Go Agent\