Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何在Ubuntu上安装和配置GoCD

如何在Ubuntu上安装和配置GoCD

原创
作者头像
所有的酒都不如你
发布于 2018-08-07 03:03:26
发布于 2018-08-07 03:03:26
1.5K00
代码可运行
举报
运行总次数:0
代码可运行

介绍

GoCD是一个功能强大的持续集成和交付平台,旨在自动化测试和发布流程。GoCD具有许多高级功能,例如比较构建,可视化复杂工作流以及自动构建版本跟踪,是一种灵活的工具,可以帮助团队将经过良好测试的软件提供给生产环境。

在本教程中,我们将演示如何在Ubuntu 16.04上设置GoCD服务器。我们将使用项目提供的软件包安装服务器和代理以完成CI/CD工作。之后,我们将配置身份验证并修改一些基本选项来设置我们的服务器。

准备

根据GoCD项目的建议,您将需要一台至少具有2G RAM和2个CPU内核的Ubuntu 16.04服务器来完成本教程。没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后在购买服务器。此外,为了在不破坏数据的情况下处理构建工件,您的服务器将需要专用分区或磁盘作为工件存储位置。我们将在本教程中使用/mnt/artifact-storage作为工件存储的挂载点。本例通过控制台购买一块弹性普通云盘,有关如何创建云硬盘的更多内容,可以参考 创建云硬盘

1) 登录云硬盘控制台,单击【+ 新建】开始购买。

2) 在弹出框中选择【华北地区(北京)】-【北京一区】、【包年包月】、【云硬盘】、【20GB】,并选择购买一个月,单击【确定】按钮。

3) 在支付页面单击【确认支付】完成购买。您可在云硬盘列表页查看已购买的云硬盘,您刚刚购买的弹性云盘默认未命名,并显示为待挂载状态。单击编辑小图标,将它命名为“cbs-test”。

一旦您的服务器配置了在/mnt/artifact-storage上安装的附加存储,您需要在服务器上启用防火墙,您可以直接在腾讯云控制台中的安全组进行设置。完成这些步骤后,请继续阅读本教程。

安装GoCD服务器和代理

我们将从GoCD项目提供的专用存储库下载并安装服务器和代理程序包开始。首先,我们通过输入以下命令将新的存储库定义添加到APT源配置目录:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
echo "deb https://download.gocd.org /" | sudo tee /etc/apt/sources.list.d/gocd.list

我们还需要将GoCD GPG密钥添加到APT,以便可以验证GoCD包上的签名。您可以通过输入以下内容下载密钥并将其添加到系统中:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
curl https://download.gocd.org/GOCD-GPG-KEY.asc | sudo apt-key add -

现在我们可以更新本地软件包索引以下载新软件包列表并安装软件。 GoCD需要运行Java 8,因此我们将安装default-jre软件包以及CI服务器和代理。我们还将安装apache2-utils包,我们将使用它来生成身份验证文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo apt-get update
sudo apt-get install default-jre go-server go-agent apache2-utils

依赖项和持续集成软件将下载并安装在服务器上。

准备首次使用GoCD

在我们启动GoCD服务器之前,我们将在命令行上完成一些任务以准备好。首先,我们需要确保GoCD流程可以访问工件挂载点,以便它可以在那里存储文件。CI服务器将作为go用户和组运行,因此我们可以相应地分配/mnt/artifact-storage挂载点的所有权:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo chown -R go:go /mnt/artifact-storage

接下来,我们将创建并填充密码文件以获取身份验证信息。 GoCD基于文件的身份验证插件使用htpasswd程序创建的用户身份验证格式。

以下命令中的-B选项选择bcrypt加密算法。-c选项告诉htpasswd在指定的路径上创建新的身份验证文件。该命令以我们要为其创建密码的用户名结束。此用户名完全独立于操作系统的用户,因此您可以根据自己的喜好使用此用户名:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo htpasswd -B -c /etc/go/authentication sammy

系统将提示您输入并确认新用户的密码。用户名和密码的加密版本将写入文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
New password:
Re-type new password:
Adding password for user sammy

注意:您可以向文件添加多个用户名和密码组合,以允许其他登录。但是,添加第一个用户后,您将需要在不使用-c选项的情况下调用htpasswd命令: sudo htpasswd -B /etc/go/authentication next_user 在第一个用户之后使用-c选项将导致htpasswd替换所有现有凭据。

获得身份验证文件后,我们就可以启动GoCD服务器和代理进程。这可能需要一段时间才能完成:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo systemctl start go-server go-agent

首先,检查服务是否已成功启动:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo systemctl status go-*

如果您的输出看起来与此类似,则两个进程都是由systemd初始化的::

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
● go-agent.service - LSB: Go Agent
   Loaded: loaded (/etc/init.d/go-agent; bad; vendor preset: enabled)
   Active: active (exited) since Thu 2017-07-27 19:39:18 UTC; 1min 36s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 8911 ExecStart=/etc/init.d/go-agent start (code=exited, status=0/SUCCESS). . .
Jul 27 19:39:18 go5 systemd[1]: Started LSB: Go Agent.
​
● go-server.service - LSB: Go Server
   Loaded: loaded (/etc/init.d/go-server; bad; vendor preset: enabled)
   Active: active (exited) since Thu 2017-07-27 19:39:33 UTC; 1min 21s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 8867 ExecStop=/etc/init.d/go-server stop (code=exited, status=0/SUCCESS)
  Process: 8907 ExecStart=/etc/init.d/go-server start (code=exited, status=0/SUCCESS). . .
Jul 27 19:39:33 go5 systemd[1]: Started LSB: Go Server.

接下来,我们应该等待服务绑定到8153端口和8154端口。GoCD在第一个端口上侦听HTTP流量,第二个端口侦听受保护的HTTPS流量。虽然流程已经完成,但他们可能还没有开始接受网络流量。

输入以下内容,关注当前正在侦听的端口:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo watch netstat -plnt

这将检查侦听TCP端口并每2秒更新一次屏幕。当GoCD开始侦听端口81538154时,屏幕应如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Every 2.0s: netstat -plnt                                                    Thu Jul 27 20:16:20 2017
​
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1736/sshd
tcp6       0      0 :::22                   :::*                    LISTEN      1736/sshd
tcp6       0      0 :::8153                 :::*                    LISTEN      8942/java
tcp6       0      0 :::8154                 :::*                    LISTEN      8942/java

显示这些侦听端口后,按CTRL-C退出进程。

现在该软件已完全启动并运行,我们可以在UFW防火墙中打开GoCD的HTTPS端口(端口8154)。不需要打开HTTP端口,因为我们希望所有连接都是安全的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo ufw allow 8154

打开端口8154后,可以在所有接口上访问GoCD Web界面。虽然我们已准备通过使用htpasswd命令创建/etc/go/authentication文件来锁定接口,但目前GoCD中未启用密码身份验证。这是我们将在下一节中配置的第一个项目,您应该尽快完成该步骤以保护您的CI/CD服务器。

我们的服务器现已启动并运行。 我们将连接到Web界面以继续我们的配置。

设置密码验证

通过初始化和监听连接的GoCD服务器组件以及允许连接的防火墙,我们可以在Web浏览器中连接到该服务。

在浏览器中,指定https://协议,后跟服务器的域名或IP地址,并以:8154端口结束

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
https://server_domain_or_IP:8154

您的浏览器可能会显示一条警告,指示服务的SSL证书未由受信任的证书颁发机构签名:

由于GoCD自我签署了证书,所以这个显示是正常的。单击ADVANCED或浏览器中提供的任何类似选项,然后选择继续执行请求。最初连接GoCD时,您将进入定义屏幕。我们应该使用我们之前使用htpasswd创建的密码文件来启用身份验证,单击顶部导航菜单中的ADMIN,然后在Security子菜单中选择Authorization Configuration

在随后的页面上,单击右上角的“添加”按钮。将出现一个屏幕,您可以在其中填写身份验证提供程序的详细信息。

首先,在Id字段中输入新授权方法的任意名称。将插件ID选项设置为“Password File Authentication Plugin for GoCD ”。最后,在“Password file path ”框中,输入/etc/go/authentication,我们使用htpasswd创建的文件。完成后,单击“检查连接”以确保GoCD可以正确访问该文件:

如果GoCD显示“连接正常”消息,请单击“ 保存”以设置新身份验证。您将被要求使用新方案进行身份验证。使用您配置的用户名和密码登录:

您的GoCD安装现在受密码保护,以防止未经授权的访问。

设置站点URL和工件位置

现在Web界面已得到妥善保护,我们可以通过Web UI完成CI服务器的配置。重新登录Web界面后,单击顶部菜单中的ADMIN,然后从下拉菜单中选择Server Configuration

您将进入主配置页面,我们可以在其中调整一些设置。

我们应该看的第一项是页面的“服务器管理”部分中的站点URL。GoCD提供了两个确定CI服务器URL的设置:“站点URL”和“安全站点URL”。“站点URL”是大多数情况下使用的默认站点URL。当常规“站点URL”配置为使用HTTP并且GoCD需要传输敏感数据时,使用“安全站点URL”。如果“站点URL”使用HTTPS地址,则所有连接都将加密,并且不需要设置“安全站点URL”。

由于我们只允许通过防火墙访问HTTPS端口,因此我们将使用https://协议说明填写站点URL,然后填写服务器的域或IP地址,接着填写:8154。我们将安全站点URL留空,因为我们的普通URL已经安全:

接下来,向下滚动到页面的Pipeline Management部分。将Artifacts Directory Location设置为我们之前创建的/mnt/artifact-storage挂载点。如果您希望GoCD自动管理保留,您可以选择调整工件删除策略。将其保留为“从不”以手动管理工件:

完成后,单击页面底部的“ 保存”按钮以实现更改。您可能会在顶部菜单栏中看到警告:

单击警告指示器将显示完整警告消息,告知我们GoCD在重新启动之前不会使用/mnt/artifact-storage位置。

单击X以退出警告消息。在我们重新启动服务器之前,让我们检查我们的代理是否已成功注册到服务器。单击顶部菜单中的AGENTS项。您将被带到代理商列表:

我们启动的代理进程已成功注册到服务器,其状态设置为“空闲”。现在我们已经确认我们的代理存在,我们可以重新启动GoCD服务器进程以完成工件位置更改。返回命令行,输入以下命令重新启动服务:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo systemctl restart go-server

一旦服务重新启动并继续侦听端口8154上的连接,您就可以重新连接到Web UI。

结论

在本教程中,我们已经安装并配置了在Ubuntu上运行的GoCD服务器和代理。我们在单独的分区上设置专用工件存储空间,以处理生成的构建,并配置身份验证以保护Web界面。一旦GoCD启动并运行,下一步就是使用受信任的SSL证书保护您的安装。SSL证书:如何设置此证书取决于你是否拥有可解析该服务器的域名。

更多Linux教程请前往腾讯云+社区学习更多知识。

----

参考文献:《How To Install and Configure GoCD on Ubuntu 16.04》

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
如何在Ubuntu 16.04上使用Let加密SSL证书配置GoCD
GoCD是一个功能强大的持续集成和交付平台,旨在自动化测试和发布流程。GoCD具有许多高级功能,例如比较构建,可视化复杂工作流以及自动构建版本跟踪,是一种灵活的工具,可以帮助团队将经过良好测试的软件提供给生产环境。
编程男孩
2018/09/21
1.3K0
如何在Ubuntu 16.04上安装和保护phpMyAdmin
虽然许多用户需要像MySQL这样的数据库管理系统的功能,但他们可能不会仅仅通过MySQL提示与系统进行交互。
尘埃
2018/09/29
1.5K0
如何在CentOS 7上安装OpenLiteSpeed Web服务器
OpenLiteSpeed是一种优化的开源Web服务器,可用于管理和提供站点。就Linux Web服务器而言,OpenLiteSpeed具有一些有趣的功能,使其成为许多安装的可靠选择。它具有Apache兼容的重写规则,Web管理界面以及针对服务器优化的自定义PHP处理。
新巴子
2018/10/10
2.6K0
如何在Ubuntu 16.04上安装和保护phpMyAdmin
虽然许多用户需要像MySQL这样的数据库管理系统的功能,但他们可能不会仅仅通过MySQL提示与系统进行交互。
苏子晨
2018/09/29
1.2K0
如何在 Ubuntu 18.04 上安装和配置 Squid 代理
Squid 是一个功能齐全的缓存代理,支持流行的网络协议,如 HTTP , HTTPS , FTP 等。 Squid 主要用于通过缓存重复请求,过滤 Web 流量和访问地理限制内容来提高 Web 服务器的性能。
星哥玩云
2022/07/28
3.3K0
如何在 Ubuntu 18.04 上安装和配置 Squid 代理
如何在Ubuntu 16.04上安装和配置Zabbix以安全地监视远程服务器
Zabbix是用于web和应用程序的开源监控软件。它提供对从服务器,虚拟机和任何其他类型的网络设备收集的数千个指标的实时监控。这些指标可帮助确定IT基础架构的当前运行状况。有用的信息存储在数据库中,因此您可以随时分析数据并提高所提供服务的质量。
angel_郁
2018/08/10
1.3K0
如何在Ubuntu 16.04上安装和配置Zabbix以安全地监视远程服务器
使用Nagios监控你的Ubuntu服务器
Nagios是一个流行的电脑系统和网络监控程序,它检测主机和服务,当异常发生和解除时能提醒用户。它是基于GPLv2开发的开源软件,可免费获得及使用。 使用Nagios这样的监控系统是生产环境的必备工具,通过监控系统运行时间,CPU使用率或磁盘空间,您可以在问题发生之前解决用户问题。
灬半痴
2018/08/01
2.5K0
在Ubuntu 16.04上安装OpenVAS 8
OpenVAS(开放式漏洞评估系统)是一个客户端/服务器架构,它常用来评估目标主机上的漏洞。OpenVAS是Nessus项目的一个分支,它提供的产品是完全地免费。OpenVAS默认安装在标准的Kali Linux上,本教程将介绍配置及启动OpenVAS。
谢鸢
2018/08/20
2.3K0
在Ubuntu 16.04上安装OpenVAS 8
如何在Debian 9上安装和配置Nextcloud
Nextcloud是ownCloud的一个分支,它是一个文件共享服务器,允许您将个人内容(如文档和图片)存储在集中位置,就像Dropbox一样。与Nextcloud的不同之处在于它的所有功能都是开源的。它还会将敏感数据的控制权和安全性返回给您,从而无需使用第三方云托管服务。
独钓寒江雪_Ly
2018/11/08
4.8K0
如何在Ubuntu 16.04上安装和配置GitLab
GitLab CE或Community Edition是一个开源应用程序,主要用于托管Git存储库,还有其他与开发相关的功能,如问题跟踪。它旨在使用你自己的基础架构进行托管,并且可以灵活地部署为开发团队的内部存储库,公开作为与用户交互的方式,甚至可以作为贡献者托管自己项目的方式。
楠宝宝
2018/08/03
2.2K0
如何在Ubuntu 16.04上安装和配置GitLab
如何在Ubuntu 14.04上安装Elasticsearch 1.7,Logstash 1.5和Kibana 4.1(ELK Stack)
在本教程中,我们将在Ubuntu 14.04上重新安装Elasticsearch ELK Stack,即Elasticsearch 1.7.3,Logstash 1.5.4和Kibana 4.1.1。我们还将向您展示如何对其进行配置,以便在集中位置收集和可视化系统的系统日志。Logstash是一个用于收集,解析和存储日志以供将来使用的开源工具。Kibana是一个Web界面,可用于搜索和查看Logstash已编入索引的日志。这两个工具都基于Elasticsearch。
水门
2018/10/10
8490
如何在Ubuntu 14.04上安装Mailpile
在本教程中,我们将在Ubuntu 14.04上安装Mailpile,一个快速,安全,漂亮的Webmail客户端。
黑色技术
2018/10/08
2K0
如何在Ubuntu 14.04上安装OpenLiteSpeed Web服务器
OpenLiteSpeed是一种优化的开源Web服务器,可用于管理和提供站点。就Linux Web服务器而言,OpenLiteSpeed具有一些有趣的功能,使其成为许多安装的可靠选择。它具有Apache兼容的重写规则,Web管理界面以及针对服务器优化的自定义PHP处理。
挺问中原
2018/10/10
1.2K0
如何在Ubuntu 14.04上安装,配置和部署Rocket.Chat
Rocket.Chat是一个使用Meteor构建的开源消息应用程序。它支持视频会议,文件共享,语音消息,具有功能齐全的API等。Rocket.Chat非常适合那些喜欢完全控制通信的人。
灬半痴
2018/10/16
2.8K0
如何在CentOS 7上安装和配置Zabbix以安全地监视远程服务器
Zabbix是用于网络和应用程序的开源监控软件。它提供对从服务器,虚拟机和任何其他类型的网络设备收集的数千个指标的实时监控。这些指标可帮助您确定IT基础架构当前的运行状况,并在客户投诉之前检测硬件或软件组件的问题。有用的信息会被存储在数据库中,因此您可以随时分析数据并提高所提供服务的质量,或计划设备的升级。
风研雨墨
2018/09/28
1.1K0
如何在Debian 9上安装和配置ownCloud
ownCloud是一个开源文件共享服务器和协作平台,可以将您的个人内容(如文档和图片)存储在一个集中的位置。这使您可以通过不依赖Dropbox等第三方内容托管服务来控制您的内容和安全性。
一步
2018/11/06
2.3K0
如何在Ubuntu 14.04上保护Nginx
即使使用默认设置,Nginx也是一个非常安全可靠的Web服务器。但是,有很多方法可以进一步保护Nginx。
编程男孩
2018/10/15
1.7K0
如何在CentOS 7上安装Elasticsearch 1.7,Logstash 1.5和Kibana 4.1(ELK Stack)
在本教程中,我们将介绍在CentOS 7上安装Elasticsearch ELK Stack,即Elasticsearch 1.7.3,Logstash 1.5.4和Kibana 4.1.1。我们还将向您展示如何对其进行配置,以便在集中位置收集和可视化系统的系统日志。Logstash是一个用于收集,解析和存储日志以供将来使用的开源工具。Kibana是一个Web界面,可用于搜索和查看Logstash已编入索引的日志。这两个工具都基于Elasticsearch。
苏子晨
2018/10/09
1.1K0
如何在Debian 9上安装和保护phpMyAdmin
虽然许多用户需要像MariaDB这样的数据库管理系统的功能,但他们可能不会仅仅通过MariaDB提示与系统进行交互。
好烟
2018/11/05
2.2K0
如何在Ubuntu上安装Drone持续集成环境
Drone是一个流行的持续集成和交付平台。它集成了许多流行的版本控制存储库服务,如GitHub,GitLab和Bitbucket,以监视代码更改并在提交时自动构建和测试更改。
小铁匠米兰的v
2018/08/08
3K0
如何在Ubuntu上安装Drone持续集成环境
推荐阅读
相关推荐
如何在Ubuntu 16.04上使用Let加密SSL证书配置GoCD
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验