介绍
Buildbot 是一个基于 Python 的持续集成系统,用于自动化软件构建、测试和发布过程。 在先决条件教程 How To Install Buildbot on Ubuntu 16.04 中,我们创建了一个 buildbot
用户和组,在 /home/buildbot/master
中安装了 buildmaster,在 /home/buildbot/worker
中安装了 worker X180X],然后手动启动新用户的进程。
在本教程中,我们将创建 systemd 单元文件,以便服务器的 init 系统可以管理 Buildbot 进程。
先决条件
一台具有至少 1 GB RAM 的 Ubuntu 16.04 服务器,按照 Ubuntu 16.04 初始服务器设置指南 配置非 root sudo
用户和防火墙使用以下指南安装和配置 Buildbot:
完成这些要求后,您就可以开始了。
第 1 步 — 停止正在运行的服务
首先,如果您仍然以上一教程中的 buildbot
用户身份登录,请键入 exit
以返回到 sudo
用户。
作为 sudo
用户,我们将确保 Buildmaster 已停止:
sudo buildbot stop /home/buildbot/master
然后,我们将确保工人也停止:
sudo buildbot-worker stop /home/buildbot/worker
在每种情况下,我们都会收到 buildbot process 1234 is dead
(显示已停止的进程 ID)或 buildmaster not running
的反馈,这表明服务最初没有运行。
第 2 步 - 创建 Buildmaster 单元文件
接下来,我们将创建并打开一个名为 buildbot-master.service
的文件:
sudo nano /etc/systemd/system/buildbot-master.service
在 [Unit]
部分中,我们将添加描述并要求在启动服务之前网络必须可用。 在 [Service]
部分,我们将指定进程作为我们创建的 buildbot
用户和组运行,定义工作目录,并提供应该用于启动或重新加载的命令掌握。 最后,在 [Install]
部分,我们将指出它应该在启动时作为多用户目标的一部分启动:
/etc/systemd/system/buildbot-master.service
[Unit] Description=BuildBot master service After=network.target [Service] User=buildbot Group=buildbot WorkingDirectory=/home/buildbot/master ExecStart=/usr/local/bin/buildbot start --nodaemon ExecReload=/bin/kill -HUP $MAINPID [Install] WantedBy=multi-user.target
添加内容后,我们将保存并退出,然后测试我们的工作。
sudo systemctl start buildbot-master
我们将使用 systemd 的 status
命令来检查它是否正确启动:
sudo systemctl status buildbot-master
输出应包含 Active: active (running)
,最后一行应类似于:
OutputMay 08 21:01:24 BuildBot-Install systemd[1]: Started BuildBot master service.
最后,我们将启用 buildmaster 在引导时启动:
sudo systemctl enable buildbot-master
OutputCreated symlink from /etc/systemd/system/multi-user.target.wants/buildbot-master.service to /etc/systemd/system/buildbot-master.service.
现在 buildmaster 已经设置好了,我们将添加 worker。
第 3 步 - 创建工作单元文件
我们将创建并打开一个名为 buildbot-worker.service
的文件,该文件的配置类似于 buildbot-master.service
,但具有启动 worker 所需的值。 在 [Install]
部分,我们将使用 WantedBy
键设置为 buildbot-master.service
以便在 buildmaster 之后启动 worker。
sudo nano /etc/systemd/system/buildbot-worker.service
/etc/systemd/system/buildbot-worker.service
[Unit] Description=BuildBot worker service After=network.target [Service] User=buildbot Group=buildbot WorkingDirectory=/home/buildbot/worker ExecStart=/usr/local/bin/buildbot-worker start --nodaemon [Install] WantedBy=buildbot-master.service
我们将保存并退出,然后使用 systemctl
启动 worker:
sudo systemctl start buildbot-worker
我们将使用 status
命令来验证它是否成功启动:
sudo systemctl status buildbot-worker
同样,像 master 一样,我们应该看到 Active: active (running)
和最后一行输出,如下所示:
Output. . . May 08 21:54:46 BuildBot-Install systemd[1]: Started BuildBot worker service.
最后,我们将让 worker 在启动时启动:
sudo systemctl enable buildbot-worker.service
OutputCreated symlink from /etc/systemd/system/buildbot-master.service.wants/buildbot-worker.service to /etc/systemd/system/buildbot-worker.service.
上面的输出表明工作程序配置为在启动时启动,但您可能希望现在重新启动服务器以确认一切按预期启动。
结论
在本教程中,我们添加了 systemd 单元文件,以便服务器的 init 系统可以管理 Buildbot 进程,并且我们已启用 buildmaster 和 worker 在引导时启动。
在下一个教程中,我们将 使用免费的 SSL 证书服务 Let's Encrypt 使用 SSL 保护 Web 界面。 请注意,您需要一个您拥有或控制的域名才能生成证书。