怎样在 Ubuntu 20.04 上安装和配置 Concourse CI

介绍

根据其文件,Concourse 是“基于管道的连续做事者.”

持续集成 (CI) 是一种 DevOps 软件开发实践,它使开发人员能够每天多次将代码合并到共享存储库中。 Concourse CI 执行持续集成任务,例如每次部署的自动构建和测试。

本指南解释了怎样在 Ubuntu 上安装 Concourse CI。 遵循本指南时,请替换 ci.example.org 使用您服务器的完全限定域名。

组件

ATC:Web UI、API、管道调度。 TSA:用于向 ATC 注册工作人员的自定义 SSH 服务器。 Workers: Garden:容器运行时,远程处理运行容器。 Baggageclaim:缓存和工件管理。 Fly:ATC 的 CLI 接口,用于配置管道。

先决条件

一个 Vultr Ubuntu 20.04 实例。 一个 sudo 用户。 完全限定的 DNS“A”记录,指向您的服务器在 DNS 中的 IP 地址。

1. 安装 Docker

安装 Docker 和 Docker Compose 为 Concourse 和数据库 (PostgreSQL) 创建容器。

$ sudo apt install -y docker.io docker-compose

2.安装大厅

下载 docker-compose.yml 概述要创建和启动的容器及其配置的文件。

$ curl -LO https://concourse-ci.org/docker-compose.yml
$ nano docker-compose.yml

在里面 docker-compose.yml 文件,确保更改 https://localhost:8080
https://ci.example.org, 替换 example.org 用你的域名。

其他选项(例如凭据)也可在此文件中配置。 完成后,保存并退出文件。

现在,启动容器。

$ sudo docker-compose up -d
$ rm -f docker-compose.yml

3.安装飞CLI

下载 Fly CLI 二进制文件并使其可执行。

$ sudo curl -o /usr/local/bin/fly "https://localhost:8080/api/v1/cli?arch=amd64&platform=linux"
$ sudo chmod 755 /usr/local/bin/fly

4. 试飞 CLI

测试以确保 Fly CLI 已安装并且可以连接到 ATC 服务器。

$ fly -t tutorial login -c https://localhost:8080 -u test -p test

5. Nginx 反向代理

安装 Nginx 和 Certbot。 这将允许在配置后与服务器建立安全的 HTTPS 连接。

$ sudo apt install -y nginx certbot

为您的域获取 HTTPS 证书。 这要求您的域指向您的 Vultr 实例的 IP。 有关怎样为您的实例添加 A 记录的说明,请咨询您的域提供商。 确保更换
example.org 用你的域名。

$ sudo certbot certonly --webroot -w /var/www/html -d ci.example.org

通过编辑 Crontab 文件为 Certbot 启用自动续订。

$ crontab -e

打开文件后,添加以下行。

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

完成后,保存并退出文件。

现在,配置 Nginx 虚拟主机以将域的流量代理到 Concourse ATC 服务器并使用 HTTPS 证书。

$ sudo nano /etc/nginx/sites-enabled/concourse

打开文件后,添加以下行。 代替 ci.example.org 在四个地方使用您服务器的完全限定域名。

server {
    listen 80;
    listen [::]:80;
    server_name ci.example.org;

    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    listen [::]:443 ssl;
    server_name ci.example.org;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_certificate /etc/letsencrypt/live/ci.example.org/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/ci.example.org/privkey.pem;

    location / {
        proxy_pass https://localhost:8080;
    }
}

完成后,退出并保存文件。 现在,重新加载 Nginx 配置。

$ sudo systemctl reload nginx

结论

Web UI 现在应该可以在您服务器的域名中使用。 例如: https://ci.example.org

更多信息

大厅文件 了解更多信息。

注:本教程在Vultr VPS上测试通过,如需部署请前往Vultr.com

相关阅读:

Posted in: LinuxTags: ,