如何在Ubuntu 16.04上安装和配置GoCD

GoCD是一个开源的持续交付和自动化系统。它允许您使用并行和顺序执行为复杂的工作流建模。其价值流图使您可以轻松地轻松可视化复杂的工作流程。GoCD使您可以轻松比较两个版本,并部署所需版本的应用程序。GoCD生态系统由GoCD服务器和GoCD代理组成。GoCD负责控制一切,例如运行基于Web的用户界面以及管理代理并向其提供作业。Go代理负责运行作业和部署。

先决条件

  • 具有至少2GB RAM的Vultr Ubuntu 16.04服务器实例。
  • 一个 sudo的用户
  • 指向服务器的域名。

在本教程中,我们将使用192.168.1.1公共IP地址和 gocd.example.com 指向Vultr实例的域名。请确保将所有示例域名和IP地址替换为实际的域名和IP地址。

使用指南如何更新Ubuntu 16.04更新基本系统。系统更新后,继续安装Java。

安装Java

GoCD需要Java版本8,并支持Oracle Java和OpenJDK。添加适用于Oracle Java 8的Ubuntu存储库。

sudo add-apt-repository --yes ppa:webupd8team/java
sudo apt update

安装Oracle Java。

sudo apt -y install oracle-java8-installer

检查版本。

java -version

您将看到以下输出。

user@vultr:~$ java -version
java version "1.8.0_161"
Java(TM) SE Runtime Environment (build 1.8.0_161-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode)

通过安装以下软件包来设置Java的默认路径。

sudo apt -y install oracle-java8-set-default

您可以JAVA_HOME通过运行验证是否已设置。

echo $JAVA_HOME

你会看见。

user@vultr:~$ echo $JAVA_HOME
/usr/lib/jvm/java-8-oracle

如果您根本看不到任何输出,则需要从当前shell注销并重新登录。

安装GoCD

将GoCD的官方存储库安装到系统中。

echo "deb https://download.gocd.org /" | sudo tee /etc/apt/sources.list.d/gocd.list
curl https://download.gocd.org/GOCD-GPG-KEY.asc | sudo apt-key add -
sudo apt update

在系统中安装GoCD服务器。

sudo apt install -y go-server

启动GoCD并使其在启动时自动启动。

sudo systemctl start go-server
sudo systemctl enable go-server

在访问GoCD仪表板之前,让我们创建一个新目录来存储工件。工件可以存储在安装了操作系统和应用程序的同一磁盘上。或者,您可以使用专用磁盘或块存储驱动器来存储工件。

如果您希望使用相同的磁盘来存储工件,则只需创建一个新目录并将所有权提供给GoCD用户即可。

sudo mkdir /opt/artifacts
sudo chown -R go:go /opt/artifacts

配置块存储

GoCD软件建议您使用其他分区或驱动器来存储工件。在持续的集成和交付平台中,经常会生成工件。连续生成新的工件时,磁盘空间会随着时间的推移而减少。在某个阶段,您的系统将耗尽可用磁盘空间,并且系统上运行的服务将失败。为解决此问题,您可以连接新的Vultr块存储驱动器以存储工件。如果仍然希望将工件存储在同一驱动器上,请跳至“配置GoCD”部分。

部署新的块存储驱动器 并将其附加到GoCD服务器实例。现在,在块存储设备上创建一个新分区。

sudo parted -s /dev/vdb mklabel gpt
sudo parted -s /dev/vdb unit mib mkpart primary 0% 100%

在新磁盘上创建文件系统。

sudo mkfs.ext4 /dev/vdb1

安装块存储驱动器。

sudo mkdir /mnt/artifacts
sudo cp /etc/fstab /etc/fstab.backup
echo "
/dev/vdb1 /mnt/artifacts ext4 defaults,noatime 0 0" | sudo tee -a /etc/fstab
sudo mount /mnt/artifacts

现在,运行df,您将看到安装在上的新块存储驱动器 /mnt/artifacts

[user@vultr ~]$ df
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/vda1       20616252 6313892  13237464  33% /

...
/dev/vdb1       10188052   36888   9610596   1% /mnt/artifacts

向GoCD用户提供目录的所有权。

sudo chown -R go:go /mnt/artifacts

配置GoCD

现在,您可以在上访问GoCD仪表板 http://192.168.1.1:8153。要在安全连接上访问GoCD仪表板,请访问 https://192.168.1.1:8154。您将收到一条错误消息,显示证书无效。您可以放心地忽略该错误,因为证书是自签名的。为了安全起见,应始终在安全连接上使用仪表板。

设置新管道之前,请Admin >> Server Configuration从顶部导航栏中导航到“ ”。

在“ Site URL”字段中输入您的不安全站点的URL,在“ ”字段中输入安全站点的URL Secure Site URL

如何在Ubuntu 16.04上安装和配置GoCD

接下来,提供您的SMTP服务器详细信息,以从GoCD发送电子邮件通知。

如何在Ubuntu 16.04上安装和配置GoCD

最后,提供您想要存储工件的位置的路径。如果您选择将工件存储在与操作系统相同的磁盘上,请输入 /opt/artifacts;如果选择附加块存储驱动器,则可以输入 /mnt/artifacts

您还可以将GoCD配置为自动删除旧的工件。根据您的磁盘大小配置下一个选项。但是,自动删除选项不会备份您的旧工件。要手动进行备份然后删除旧的工件,请通过为“ Never”选项选择“ ”选项来禁用自动删除Auto delete old artifacts

如何在Ubuntu 16.04上安装和配置GoCD

您将需要重新启动GoCD服务器,以便应用新的更改。

sudo systemctl restart go-server

设定验证

默认情况下,GoCD仪表板未配置为使用任何类型的身份验证,但它支持使用密码文件和LDAP的身份验证。在本教程中,我们将设置基于密码的身份验证。

注意设置身份验证是可选步骤,但是强烈建议将其用于面向公众的服务器,例如Vultr。

安装Apache工具,以便我们可以使用该 htpasswd 命令创建加密的密码文件。

sudo apt -y install apache2-utils

htpasswd 使用Bcrypt加密,使用命令创建密码文件 。

sudo htpasswd -B -c /etc/go/passwd_auth goadmin

为用户提供两次密码。您将看到以下输出。

[user@vultr ~]$ sudo htpasswd -B -c /etc/go/passwd_auth goadmin
New password:
Re-type new password:
Adding password for user goadmin

您可以使用上面的相同命令添加任意数量的用户,但是删除该 -c 选项。该 -c 选项将替换现有文件,用新用户替换旧用户。

sudo htpasswd -B /etc/go/passwd_auth gouser1

现在我们已经创建了密码文件,再次访问GoCD仪表板。Admin >> Security >> Authorization Configurations从顶部导航栏中导航到“ ”。单击 Add 按钮并提供任何ID。选择“ Password File Authentication Plugin for GoCD”作为插件ID,然后将路径指向密码文件。现在,单击“ Check Connection”按钮以验证GoCD可以使用密码文件进行身份验证。

如何在Ubuntu 16.04上安装和配置GoCD

最后,保存身份验证方法。重新加载仪表板,它将自动将您注销。您现在将看到一个登录屏幕。使用之前创建的凭据登录。

您将需要手动提升管理员用户,否则,所有用户都将具有管理员权限。Admin >> User Summary从顶部导航栏中导航到“ ”。

现在,选择您创建的管理员用户,然后单击“ Roles”下拉菜单。选中“ Go System Administrator”复选框,将用户提升为唯一的管理员。

如何在Ubuntu 16.04上安装和配置GoCD

要在密码文件中创建的GoCD中添加用户,请单击“ ADD”按钮并搜索要添加的用户。用户也将在首次登录时自动添加到GoCD仪表板。显然,要使用户登录,必须将其添加到我们之前创建的密码文件中。

让我们加密SSL保护GoCD

默认情况下,GoCD侦听端口 81538154 安全连接。尽管端口 8154 提供了与应用程序的安全连接,但由于它使用自签名证书,因此它还会显示浏览器错误。在本教程的这一部分中,我们将使用“让我们加密”的免费SSL证书安装和保护Nginx。Nginx Web服务器将充当反向代理,将传入的请求转发到GoCD的 HTTP 端点。

安装Nginx。

sudo apt -y install nginx

启动Nginx并使它能够在启动时自动启动。

sudo systemctl start nginx
sudo systemctl enable nginx

添加Certbot存储库。

sudo add-apt-repository --yes ppa:certbot/certbot
sudo apt-get update

安装Certbot,这是Let's Encrypt CA的客户端应用程序。

sudo apt -y install certbot

注意要从Let's Encrypt CA获取证书,必须为其生成证书的域指向服务器。如果不是,请对域的DNS记录进行必要的更改,并在再次发出证书请求之前,等待DNS传播。Certbot在提供证书之前会检查域权限。

生成SSL证书。

sudo certbot certonly --webroot -w /var/www/html -d gocd.example.com

生成的证书可能存储在中 /etc/letsencrypt/live/gocd.example.com/。SSL证书将存储为 fullchain.pem ,私钥将存储为 privkey.pem

让我们加密证书的有效期限为90天,因此建议您使用cron作业设置证书的自动续订。

打开cron作业文件。

sudo crontab -e

将以下行添加到文件末尾。

30 5 * * * /usr/bin/certbot renew --quiet

上面的cron作业每天凌晨5:30运行。如果证书到期,它将自动更新。

为GoCD Web界面创建一个新的配置文件。

sudo nano /etc/nginx/sites-available/gocd

填充文件。

upstream gocd {
server 127.0.0.1:8153;
}

server {
    listen 80;
    server_name gocd.example.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443;
    server_name gocd.example.com;

    ssl_certificate           /etc/letsencrypt/live/gocd.example.com/fullchain.pem;
    ssl_certificate_key       /etc/letsencrypt/live/gocd.example.com/privkey.pem;

    ssl on;
    ssl_session_cache  builtin:1000  shared:SSL:10m;
    ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
    ssl_prefer_server_ciphers on;

    access_log  /var/log/nginx/gocd.access.log;

location / {
        proxy_pass http://gocd;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-NginX-Proxy true;
        proxy_redirect off;
    }
location /go {
    proxy_pass http://gocd/go;
    proxy_http_version 1.1;
    proxy_set_header Upgrade websocket;
    proxy_set_header Connection upgrade;
    proxy_read_timeout 86400;
    }
  }

激活配置文件。

sudo ln -s /etc/nginx/sites-available/gocd /etc/nginx/sites-enabled/gocd

重新启动Nginx Web服务器以实现配置更改。

sudo systemctl restart nginx

现在,您可以通过访问GoCD仪表板 https://gocd.example.com。使用管理员凭据登录到仪表板,然后Admin >> Server Configuration从顶部导航栏中导航到“ ”。

如何在Ubuntu 16.04上安装和配置GoCD

将“ Site URL”和“ Secure Site URL”设置为 https://gocd.example.com

安装GoCD代理

在GoCD持续集成环境中,GoCD代理是负责执行所有任务的工作人员。当检测到源更改时,将触发管道,并将作业分配给可用的工作程序以执行。然后,代理执行任务并在执行后报告最终状态。

要运行管道,必须至少配置一个代理。继续在GoCD服务器上安装GoCD代理。

由于我们已经将GoCD存储库导入到服务器中,因此我们可以直接安装Go Agent。

sudo apt install -y go-agent

现在,启动GoCD服务器,并使它能够在引导时自动启动。

sudo systemctl start go-agent
sudo systemctl enable go-agent

检测到本地主机上运行的GoCD代理会自动启用。



Leave a Comment

AI 能否應對越來越多的勒索軟件攻擊?

AI 能否應對越來越多的勒索軟件攻擊?

勒索軟件攻擊呈上升趨勢,但人工智能能否幫助應對最新的計算機病毒?AI 是答案嗎?在這裡閱讀知道是 AI 布恩還是禍根

ReactOS:這是 Windows 的未來嗎?

ReactOS:這是 Windows 的未來嗎?

ReactOS,一個開源和免費的操作系統,這裡有最新版本。它能否滿足現代 Windows 用戶的需求並打倒微軟?讓我們更多地了解這種老式但更新的操作系統體驗。

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

Whatsapp 終於為 Mac 和 Windows 用戶推出了桌面應用程序。現在您可以輕鬆地從 Windows 或 Mac 訪問 Whatsapp。適用於 Windows 8+ 和 Mac OS 10.9+

人工智能如何將流程自動化提升到新的水平?

人工智能如何將流程自動化提升到新的水平?

閱讀本文以了解人工智能如何在小型公司中變得流行,以及它如何增加使它們成長並為競爭對手提供優勢的可能性。

macOS Catalina 10.15.4 補充更新引發的問題多於解決

macOS Catalina 10.15.4 補充更新引發的問題多於解決

最近,Apple 發布了 macOS Catalina 10.15.4 補充更新以修復問題,但似乎該更新引起了更多問題,導致 mac 機器變磚。閱讀這篇文章以了解更多信息

大數據的13個商業數據提取工具

大數據的13個商業數據提取工具

大數據的13個商業數據提取工具

什麼是日誌文件系統,它是如何工作的?

什麼是日誌文件系統,它是如何工作的?

我們的計算機以稱為日誌文件系統的有組織的方式存儲所有數據。這是一種有效的方法,可以讓計算機在您點擊搜索時立即搜索和顯示文件。 https://wethegeek.com/?p=94116&preview=true

技術奇點:人類文明的遙遠未來?

技術奇點:人類文明的遙遠未來?

隨著科學的快速發展,接管了我們的大量工作,我們陷入無法解釋的奇點的風險也在增加。閱讀,奇點對我們意味著什麼。

洞察 26 種大數據分析技術:第 1 部分

洞察 26 種大數據分析技術:第 1 部分

洞察 26 種大數據分析技術:第 1 部分

2021 年人工智能對醫療保健的影響

2021 年人工智能對醫療保健的影響

過去幾十年,醫療保健領域的人工智能取得了巨大飛躍。因此,醫療保健中人工智能的未來仍在日益增長。