> 文章列表 > gocd部署应用

gocd部署应用

gocd部署应用

产品需要在多个环境部署测试,为了提高部署测试效率,故计划使用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的界面

gocd部署应用

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信息:

gocd部署应用

注意: 需要手动enable来启用agent;

3.创建流水线(pipeline)

3.1 物料(material)

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

gocd部署应用

如果你选用的仓库报错: The ref refs/heads/master could not be found.

那么很可能是因为目前一些仓库将mast改名为main的原因,在高级设置里指定branch为main即可;

3.2 管道设置

主要配置流水线名称及环境变量即可;

gocd部署应用

3.3 阶段设置

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

gocd部署应用

3.4 任务设置

此阶段主要配置命令;

gocd部署应用

4. 修改流水线

gocd部署应用
gocd部署应用

5.执行流水线

根据目前资料来看是1分钟轮询一次;

可以手动触发流水线;

6.用户管理

gocd部署应用

htpasswd创建密码文件:

apt-get install apache2-utils

创建密码文件: htpasswd -c -B passwd user1 创建passwd文件,添加用户user1

htpasswd -B passwd user2 在passwd文件中添加用户user2

添加完毕后如下:

gocd部署应用

FAQ:

  1. 如何将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

gocd部署应用

注意:默认使用的用户为go,不是root,注意权限问题;

可以在/etc/sudoers文件中加上 go ALL=(ALL) NOPASSWD: ALL ,以此来达到执行sudo面输入密码的效果;

3.有多个agent执行不同的任务,应该怎么办?

1. 先添加资源,然后将agent和资源类型相关联;
gocd部署应用
2.在Admin > Pipelines 中配置JOB SETTINGS;
gocd部署应用
4. 默认工作目录在哪里

pipelines\\$pipename\\

5. windows下执行注意事项

编写bat脚本

6. 每次执行时是在一个go-agent上执行,还是在多个go-gent上执行呢?

取决于 JOB SETTINGS

gocd部署应用
7.是否可以在arm环境上运行

可以,deb包和rpm包在aarch64和x86上是一致