简单介绍
免费和开源的持续集成和持续交付系统(CI/CD )
云原生部署
端到端可视化,无需插件,开箱即用,
GoCD’s value stream map视图显示您的整个生产路径。轻松浏览作业、发现效率低下的地方并优化您的流程
可扩展的插件架构与许多流行的外部工具和服务集成
弹性代理
web可视化,完善的web功能,完善的安全管理
丰富的api
论坛:https://groups.google.com/g/go-cd
![](https://img-blog.csdnimg.cn/20210823162445307.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzU2Njc2MTE1,size_16,color_FFFFFF,t_70)
下载安装
服务器:CentOS Linux release 7.4.1708 (Core)
下载 安装:
https://www.gocd.org/download/#redhat
server https://download.gocd.org/binaries/21.2.0-12498/rpm/go-server-21.2.0-12498.noarch.rpm
agent https://download.gocd.org/binaries/21.2.0-12498/rpm/go-agent-21.2.0-12498.noarch.rpm
yum localinstall go-server-21.2.0-12498.noarch.rpm
yum localinstall go-agent-21.2.0-12498.noarch.rpm
#docker yum install sysvinit-tools
已配置开机启动
Created symlink from /etc/systemd/system/multi-user.target.wants/go-server.service to /etc/systemd/system/go-server.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/go-agent.service to /etc/systemd/system/go-agent.service.
ln -s /usr/share/go-server /opt/app/
ln -s /usr/share/go-agent /opt/app/
server配置文件
/var/lib/go-server/db GoCD 【wrapper.working.dir】服务器数据库
/var/lib/go-server/artifacts GoCD 【wrapper.working.dir】服务器工件
/var/lib/go-server/plugins GoCD 【wrapper.working.dir】服务器插件
/etc/go GoCD 服务器配置
/var/log/go-server GoCD 服务器日志文件
/usr/share/go-server GoCD 服务器二进制文件和启动脚本
/usr/share/go-server/wrapper-config/wrapper-properties.conf #用户可以在编辑文件时覆盖默认启动参数
agent配置文件
/var/lib/go-agent GoCD 代理配置和工作目录
/var/log/go-agent GoCD 代理日志文件
/usr/share/go-agent GoCD 代理二进制文件和启动脚本
/usr/share/go-agent/wrapper-config/wrapper-properties.conf #更改 GoCD 代理属性的配置文件
支持的数据库数据库
H2 是一个用 Java 开发的嵌入式数据库。https://www.cnblogs.com/cnjavahome/p/8995650.html
GoCD 安装程序附带 H2 数据库,无需外部配置即可将 GoCD 与 H2 数据库一起使用。
mysql GoCD 需要支持不区分大小写的标识符:https://docs.gocd.org/current/installation/configuring_database/mysql.html
选择postgreSQL
需要安装 postgresql-client 和 postgresql-contrib 包。postgresql-contrib 包包含初始模式创建所必需的 citext 和 pgcrypto 模块。
https://docs.gocd.org/current/installation/configuring_database/postgres.html
配置server
给work目录创建连接
wrapper.working.dir=/var/lib/go-server
[root@tserver121 wrapper-config]# mkdir /data/gocd
[root@tserver121 wrapper-config]# mv /var/lib/go-server /data/gocd
[root@tserver121 wrapper-config]# ln -s /data/gocd/go-server /var/lib/
日志程序有清理 可以保持默认
wrapper.conf:wrapper.java.additional.7=-Dgocd.server.log.dir=/var/log/go-server
wrapper.conf:wrapper.logfile=/var/log/go-server/go-server-wrapper.log
ln -s /var/log/go-server /data/logs/go-server #可以不做,用户习惯,习惯在/data/logs下找程序日志
ln -s /usr/share/go-server /opt/app/ #可以不做,用户习惯,
端口自定义,添加
wrapper.java.additional.10=-Dcruise.server.port=8153
原代码
public int getServerPort() {
return Integer.parseInt(getPropertyImpl(CRUISE_SERVER_PORT, "8153"));
}
错误1
wrapper.working.dir 配置修改后会报
#wrapper | ERROR: Could not write pid file /var/lib/go-server/run/go-server.pid: No such file or director
配置agent
给work目录创建连接
[root@tserver121 wrapper-config]# mkdir -p /data/gocd
[root@tserver121 wrapper-config]# mv /var/lib/go-agent /data/gocd
[root@tserver121 wrapper-config]# ln -s /data/gocd/go-agent /var/lib/
ln -s /var/log/go-agent /data/logs/
ln -s /usr/share/go-agent /opt/app/
#配置 GoCD 代理 /opt/app/go-agent/wrapper-config/wrapper-properties.conf
wrapper.app.parameter.100=-serverUrl
wrapper.app.parameter.101=http://10.3.247.121:8153/go
错误2
2021-08-23 10:33:51,146 ERROR [scheduler-2] RemotingClient:166 - Server responded to action `ping` with: status[403 Forbidden], body[]
2021-08-23 10:33:51,147 ERROR [scheduler-2] AgentHTTPClientController:114 - Error occurred when agent tried to ping server:
java.lang.RuntimeException: org.apache.http.client.ClientProtocolException: The server returned status code 403. Possible reasons include:
解决:https://docs.gocd.org/21.2.0/installation/configure-reverse-proxy.html
错误3
2021-08-23 14:21:25,375 - WARNING: An illegal reflective access operation has occurred
2021-08-23 14:21:25,376 - WARNING: Illegal reflective access by org.apache.felix.framework.ext.ClassPathExtenderFactory$DefaultClassLoaderExtender (onejar:lib/org.apache.felix.framework-5.6.10.jar) to method java.net.URLClassLoader.addURL(java.net.URL)
2021-08-23 14:21:25,376 - WARNING: Please consider reporting this to the maintainers of org.apache.felix.framework.ext.ClassPathExtenderFactory$DefaultClassLoaderExtender
2021-08-23 14:21:25,376 - WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
2021-08-23 14:21:25,376 - WARNING: All illegal access operations will be denied in a future release
# java版本不对,与本地java版本有关系
启动命令
/usr/share/go-server/bin/go-server console #前台启动 service 命令不支持前端启动
service go-server start #后台启动
service go-server stop #停止
service go-server restart #重启
(start, stop, restart, try-restart, reload, force-reload, status)
service go-agent console #前台启动
service go-agent start #后台启动
service go-agent stop #停止
service go-agent restart #重启
端口
server 8153
agent 8154
查看端口连接
[root@tserver121 wrapper-config]# netstat -nlpta|grep 815
tcp 0 0 127.0.0.1:8152 0.0.0.0:* LISTEN 9696/java
tcp 0 0 0.0.0.0:8153 0.0.0.0:* LISTEN 9237/java
tcp 0 0 10.3.247.121:8153 10.3.247.121:31171 ESTABLISHED 9237/java
tcp 1 0 10.3.247.121:31169 10.3.247.121:8153 CLOSE_WAIT 9696/java
tcp 0 0 10.3.247.121:31171 10.3.247.121:8153 ESTABLISHED 9696/java
页面注册agent
出于安全原因,所有新安装的 GoCD 代理都需要在 GoCD 服务器上启用,然后才能将工作分配给它们。这可以防止未经授权的人访问您的源代码。
要启用新安装的 GoCD 代理,请执行以下操作:
1.打开 GoCD 服务器仪表板
2.agents 找到新添加的agent并启动。GoCD 服务器现在将为此代理安排工作。
![](https://img-blog.csdnimg.cn/20210823162809280.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzU2Njc2MTE1,size_16,color_FFFFFF,t_70)
使用
添加 Admin -> Pipelines
Part 1: Material
浅克隆(推荐用于大型存储库)
仅在 webhook 或手动触发器上获取对此存储库的更新
Part 2: Pipeline Name
可以定义一下项目变量
webroot /export/www/yunwei
Part 3: Stage Details
阶段名称 是否自动
Part 4: Job and Tasks
添加任务,如果多个任务 ,需要后面追加
#创建完成可以复制
Admin -> Server Maintenance Mode
当进入维护模式时,重新启动或升级 GoCD 服务器是安全的,而无需在服务器备份时重新安排任何正在运行的作业
启用 GoCD 服务器维护模式将:
停止材质子系统,以便不轮询新材质。
停止轮询配置存储库。
停止调度子系统,以便不会触发新的管道(自动或通过计时器)。
停止代理子系统,以便任何代理在空闲时都无法接手工作。
防止用户触发管道。
防止用户修改配置。
防止用户执行修改数据库或文件系统状态的操作。