如何在 Ubuntu 22.04 上安装和配置 GoCD如何在 Ubuntu 22.04 上安装和配置 GoCD如何在 Ubuntu 22.04 上安装和配置 GoCD如何在 Ubuntu 22.04 上安装和配置 GoCD
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

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

在此页

  1. 先决条件
  2. 第 1 步 - 配置防火墙
  3. 第 2 步 - 安装 GoCD
  4. 第 3 步 - 安装和配置 PostgreSQL
  5. 第 4 步 - 配置 GoCD
  6. 第 5 步 - 设置 GoCD 身份验证
  7. 第 6 步 - 安装 Nginx
  8. 第 7 步 - 安装 SSL
  9. 第 8 步 - 配置 Nginx
  10. 第 9 步 - 安装 GoCD 代理
  11. 结论

GoCD 是一个开源的持续交付和自动化系统。 GoCD 擅长对复杂的 CD 工作流程进行建模,以通过其建模构造、并行执行和依赖管理获得快速反馈。 GoCD 通过实时跟踪从提交到部署的每个更改来帮助您解决损坏的管道。 GoCD 让您轻松比较两个构建并部署您想要的应用程序的任何版本。 GoCD 生态系统由 GoCD 服务器和 GoCD 代理组成。 GoCD 控制一切,例如运行基于 Web 的用户界面以及管理和向代理提供作业。 Go 代理负责运行作业和部署。

本教程将教您在 Ubuntu 22.04 服务器上安装和配置 GoCD。

先决条件

  1. A server running Ubuntu 22.04 with a minimum of 2GB of RAM.

  2. A non-sudo user with root privileges.

  3. The uncomplicated Firewall(UFW) is enabled and running.

  4. Fully Qualified Domain Names(FQDN) pointing to your server. We will be using gocd.example.com for our tutorial.

  5. Ensure that everything is updated.

    $ sudo apt update && sudo apt upgrade
    

第 1 步 - 配置防火墙

在安装任何包之前,第一步是配置防火墙以打开 HTTP、HTTPS 和 Synapse 的端口。

检查防火墙的状态。

$ sudo ufw status

您应该会看到如下内容。

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)

在防火墙中打开 HTTP、HTTPS 和 GoCD 端口。

$ sudo ufw allow 8153
$ sudo ufw allow http
$ sudo ufw allow https

再次检查状态以确认。

$ sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
8153                       ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443                        ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
8153 (v6)                  ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
443 (v6)                   ALLOW       Anywhere (v6)

第 2 步 - 安装 GoCD

将 GoCDs GPG 密钥导入系统。

$ curl https://download.gocd.org/GOCD-GPG-KEY.asc | gpg --dearmor | sudo tee /usr/share/keyrings/gocd.gpg > /dev/null 2>&1

将 GoCD 存储库添加到系统中。

$ echo "deb [signed-by=/usr/share/keyrings/gocd.gpg] https://download.gocd.org /" | sudo tee /etc/apt/sources.list.d/gocd.list

更新系统存储库列表。

$ sudo apt update

安装 GoCD。这还将安装运行 GoCD 所需的最新兼容版本的 Java 运行时 (JRE)。

$ sudo apt install -y go-server

在继续下一步之前,我们需要创建一个目录来存储工件。工件可以存储在安装服务器的同一磁盘上,也可以存储在专用磁盘或块存储驱动器上。对于本教程,我们将把它存储在同一个磁盘上。

创建一个目录来存储工件。

$ sudo mkdir /opt/artifacts

将 GoCD 所有权授予工件目录。

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

第 3 步 - 安装和配置 PostgreSQL

GoCD 默认附带 H2 数据库,无需配置。如果您在生产环境中使用 GoCD,建议使用 PostgreSQL。

Ubuntu 22.04 附带旧版本的 PostgreSQL。我们将为我们的教程安装 Postgres 15。

安装 PostgreSQL 的存储库。

$ sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

导入 PostgreSQL GPG 密钥。

$ curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/apt.postgresql.org.gpg >/dev/null

更新系统存储库列表。

$ sudo apt update

安装 PostgreSQL 15 服务器。

$ sudo apt install -y postgresql postgresql-contrib

检查服务的状态。

$ sudo systemctl status postgresql
? postgresql.service - PostgreSQL RDBMS
     Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
     Active: active (exited) since Mon 2022-12-19 06:49:50 UTC; 2h 26min ago
   Main PID: 3536 (code=exited, status=0/SUCCESS)
        CPU: 1ms

Dec 19 06:49:50 gocd systemd[1]: Starting PostgreSQL RDBMS...
Dec 19 06:49:50 gocd systemd[1]: Finished PostgreSQL RDBMS.

登录到 PostgreSQL shell。

$ sudo -i -u postgres psql

为 GoCD 创建一个新的数据库。

postgres=# CREATE DATABASE "gocd" ENCODING="UTF8" TEMPLATE="template0";

使用强密码创建新的数据库用户。

postgres=# CREATE ROLE "gocd_database_user" PASSWORD 'gocd_database_password' NOSUPERUSER NOCREATEDB NOCREATEROLE INHERIT LOGIN;

授予用户使用数据库的权限。

postgres=# GRANT ALL PRIVILEGES ON DATABASE "gocd" TO "gocd_database_user";

授予用户超级用户权限。只有在 GoCD 服务器第一次启动时,数据库用户才需要超级用户权限。这是必须完成的,因为最初需要创建 pgcrypto 和 citext 扩展。超级用户权限可以在 GoCD 服务器第一次启动后撤销,因为不再需要它。

postgres-=# ALTER ROLE "gocd_database_user" SUPERUSER;

退出 Postgres Shell。

postgres=# \q

为 GoCD 配置 PostgreSQL 的最后一步是将数据库凭据存储在 GoCD 服务器配置目录中。

创建 db.properties 文件并打开它进行编辑。

$ sudo nano /etc/go/db.properties

将以下代码粘贴到其中。

db.driver=org.postgresql.Driver
db.url=jdbc:postgresql://localhost:5432/gocd
db.user=gocd_database_user
db.password=gocd_database_password

通过按 Ctrl + X 并在出现提示时输入 Y 来保存文件。

第 4 步 - 配置 GoCD

在配置GoCD之前,我们需要启动GoCD服务器。

启动 GoCD 服务器。

$ sudo systemctl start go-server

检查服务器的状态。

$ sudo systemctl status go-server
? go-server.service - go-server
     Loaded: loaded (/etc/systemd/system/go-server.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2022-12-15 08:53:10 UTC; 8s ago
    Process: 8475 ExecStart=/usr/share/go-server/bin/go-server start sysd (code=exited, status=0/SUCCESS)
   Main PID: 8541 (wrapper-linux-x)
      Tasks: 43 (limit: 2237)
     Memory: 566.7M
        CPU: 11.873s
     CGroup: /system.slice/go-server.service
             ??8541 /usr/share/go-server/bin/../wrapper/wrapper-linux-x86-64 /usr/share/go-server/wrapper-config/wrapper.conf wrapper.syslog.ident=go-server wrapper.pidfile=/var/lib/go-server/run/go-server.pi>
             ??8556 /usr/share/go-server/jre/bin/java --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED -Xms512m -Xmx1024m -XX:MaxMetaspaceSize=400m .....

通过访问 URL http://:8153/ 启动 GoCD 仪表板。要通过安全连接访问 GoCD 仪表板,请访问 URL https://:8154。忽略显示证书无效的错误。通过安全连接访问仪表板始终很重要。

您将获得以下页面。

在使用它之前,您应该配置 GoCD。从顶部导航栏前往管理 >> 服务器配置菜单。

在提供的字段中添加站点 URL,然后按“保存”按钮。

单击左侧菜单中的 Artifacts Management 选项,然后输入之前创建的 artifacts 目录的位置。选择选项允许自动清理工件管理空间并根据您的要求设置容量。完成后单击保存按钮。

但是,自动删除选项不会备份您的旧工件。要手动备份然后删除旧工件,请通过取消选中允许自动清理工件选项来禁用自动删除。

接下来,我们需要配置电子邮件选项以接收来自 GoCD 的电子邮件通知。

单击“发送测试电子邮件”按钮检查设置,然后单击“保存”按钮完成。

如果你想设置作业超时时间,你可以通过访问作业超时配置部分来实现。

重新启动 GoCD 服务器以应用更改。

$ sudo systemctl restart go-server

第 5 步 - 设置 GoCD 身份验证

默认情况下,任何人都可以访问 GoCD,但您可以使用密码文件或 LDAP 配置身份验证。在本教程中,我们将设置基于密码的身份验证。

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

$ sudo apt install apache2-utils

使用 Bcrypt 身份验证创建密码文件。 -c 标志创建一个新文件,-B 标志设置 Bcrypt 身份验证和 goadmin是用户名。

$ sudo htpasswd -B -c /etc/go/passwd_auth navjot

出现提示时提供密码。

New password:
Re-type new password:
Adding password for user navjot

您可以使用同一命令添加多个用户,但删除 -c 标志,因为该文件已经存在。再次使用 -c 标志将覆盖现有文件并将现有用户替换为新用户。

$ sudo htpasswd -B /etc/go/passwd_auth gouser1

身份验证的下一步是在 GoCD 后端配置密码位置。从顶部导航栏访问管理 >> 安全 >> 授权配置部分。

单击添加按钮并提供任何 ID。从下拉菜单中为插件 ID 选择 GoCD 的密码文件身份验证插件,然后输入密码文件的路径。接下来,单击检查连接按钮以验证 GoCD 是否可以访问该文件以进行身份验证。

对于第一个用户,不要选中仅允许已知用户登录选项。单击保存按钮完成。

您将很快被要求刷新 GoCD 并将被带到登录页面。

输入之前创建的凭据,然后按登录按钮继续。从顶部导航栏访问管理 >> 安全 >> 用户管理部分。

选中 SYSTEM ADMIN 框以将用户标记为管理员。现在,返回 Admin >> Security >> Authorization Configuration 部分,然后单击密码文件列表中的 Edit 按钮。

选中仅允许已知用户登录选项。从现在开始,您需要通过htpasswd 文件创建一个新用户,然后先从服务器页面导入它们。

让我们创建第二个用户。

$ sudo htpasswd -B /etc/go/passwd_auth gouser1
New password:
Re-type new password:
Adding password for user gouser1

从顶部导航菜单访问管理 >> 安全 >> 用户管理部分,然后单击导入用户按钮。输入用户名 gouser1 搜索用户。

选择用户并单击“导入”按钮以添加用户。

现在,您也可以使用第二个用户登录。对更多用户重复该过程。

第 6 步 - 安装 Nginx

Ubuntu 22.04 附带旧版本的 Nginx。要安装最新版本,您需要下载官方 Nginx 存储库。

导入 Nginx 签名密钥。

$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

添加 Nginx 稳定版本的存储库。

$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list

更新系统存储库。

$ sudo apt update

安装 Nginx。

$ sudo apt install nginx

验证安装。

$ nginx -v
nginx version: nginx/1.22.1

启动 Nginx 服务器。

$ sudo systemctl start nginx

第 7 步 - 安装 SSL

我们需要安装 Certbot 来生成 SSL 证书。您可以使用 Ubuntu 存储库安装 Certbot,也可以使用 Snapd 工具获取最新版本。我们将使用 Snapd 版本。

Ubuntu 22.04 默认安装了 Snapd。运行以下命令以确保您的 Snapd 版本是最新的。

$ sudo snap install core
$ sudo snap refresh core

安装 Certbot。

$ sudo snap install --classic certbot

使用以下命令确保可以通过创建指向 /usr/bin 目录的符号链接来运行 Certbot 命令。

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

运行以下命令以生成 SSL 证书。

$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m  -d gocd.example.com

上面的命令会将证书下载到服务器上的 /etc/letsencrypt/live/gocd.example.com 目录。

生成 Diffie-Hellman 组证书。

$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096

试运行该过程以检查 SSL 续订是否正常工作。

$ sudo certbot renew --dry-run

如果您没有看到任何错误,则一切就绪。您的证书将自动更新。

第 8 步 - 配置 Nginx

打开文件 /etc/nginx/nginx.conf 进行编辑。

$ sudo nano /etc/nginx/nginx.conf

在行 include /etc/nginx/conf.d/*.conf; 之前添加以下行。

server_names_hash_bucket_size  64;

通过按 Ctrl + X 并在出现提示时输入 Y 来保存文件。

创建并打开文件 /etc/nginx/conf.d/gocd.conf 进行编辑。

$ sudo nano /etc/nginx/conf.d/gocd.conf

将以下代码粘贴到其中。

server {
  # Redirect any http requests to https
  listen         80;
  listen         [::]:80;
  server_name    gocd.example.com;
  return 301     https://$host$request_uri;
}

map $http_upgrade $connection_upgrade {
  default upgrade;
  '' close;
}

server {
  listen                    443 ssl http2;
  listen                    [::]:443 ssl http2;
  server_name               gocd.example.com;

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

  # TLS configuration
  ssl_certificate           /etc/letsencrypt/live/gocd.example.com/fullchain.pem;
  ssl_certificate_key       /etc/letsencrypt/live/gocd.example.com/privkey.pem;
  ssl_trusted_certificate   /etc/letsencrypt/live/gocd.example.com/chain.pem;
  ssl_protocols             TLSv1.2 TLSv1.3;

  ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384';
  ssl_prefer_server_ciphers on;
  ssl_session_cache         shared:SSL:50m;
  ssl_session_timeout       1d;

  # OCSP Stapling ---
  # fetch OCSP records from URL in ssl_certificate and cache them
  ssl_stapling on;
  ssl_stapling_verify on;
  ssl_dhparam /etc/ssl/certs/dhparam.pem;

  # Proxy everything over to the GoCD server
  location / {
    proxy_set_header        Host            $host;
    proxy_set_header        X-Real-IP       $remote_addr;
    proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header        X-Forwarded-Proto $scheme;
    proxy_http_version      1.1;
    proxy_set_header        Upgrade $http_upgrade;
    proxy_set_header        Connection $connection_upgrade;
    proxy_pass              http://localhost:8153/;

    # To be able to upload artifacts larger than default size of 1mb, ensure that you set this up to a large value.
    # setting to `0` will disable checking for body size.
    # See https://nginx.org/en/docs/http/ngx_http_core_module.html#client_max_body_size
    client_max_body_size  10000m;

    # If you are intending to allow downloading of large artifacts (> 1GB) from GoCD you may need to adjust one of the
    # following two proxy buffering settings to prevent downloads failing for slow clients due to server idle timeouts.
    #
    # See https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_buffering
    #
    # 1) disable the buffering of responses entirely (enabled by default on NGINX) OR
    # proxy_buffering off;
    #
    # 2) increase the max temporary file size (setting to `0` will disable the limit)
    # proxy_max_temp_file_size 2048m;
  }
}

完成后按 Ctrl + X 并在出现提示时输入 Y 来保存文件。

验证 Nginx 配置文件语法。

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

重启 Nginx 服务。

$ sudo systemctl restart nginx

您现在可以通过 URL https://gocd.example.com 访问 GoCD 仪表板。

第 9 步 - 安装 GoCD 代理

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

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

我们已经导入了 GoCD 存储库,因此,直接安装 GoCD 代理。

$ sudo apt install go-agent

启动 GoCD 代理服务。

$ sudo systemctl start go-agent

访问 GoCD 仪表板上的“代理”选项卡,您应该会看到列出并自动启用的代理。

您可以从这里开始使用 GoCD CI/CD 服务。

结论

我们的教程到此结束,您在其中学习了如何在 Ubuntu 22.04 服务器上安装和配置 GoCD。如果您有任何问题,请在下面的评论中发表。

©2015-2025 艾丽卡 support@alaica.com