如何为 Buildbot 创建 Systemd 单元文件

介绍

Buildbot 是一个基于 Python 的连续集成系统,用于自动化软件构建、测试和发布流程. 在先决条件的教程中, 如何在 Ubuntu 16.04 上安装 Buildbot,我们创建了一个buildbot用户和组,安装了 buildmaster 在 /home/buildbot/master 和 worker 在 /home/buildbot/worker,然后手动启动了新用户的流程。

在本教程中,我们将创建 systemd 单元文件,以便服务器的 init 系统可以管理 Buildbot 流程。

前提条件

**一个具有至少 1 GB RAM 的 Ubuntu 16.04 服务器,通过遵循 Ubuntu 16.04 初始服务器设置指南与 Buildbot 安装并使用以下指南进行配置)配置。

一旦你完成了这些要求,你已经准备好开始。

步骤 1 – 停止运行服务

首先,如果您仍然在上一本教程中作为buildbot用户登录,请键入退出,以返回sudo用户。

作为sudo用户,我们将确保Buildmaster被阻止:

1sudo buildbot stop /home/buildbot/master

然后,我们将确保工人也被阻止:

1sudo buildbot-worker stop /home/buildbot/worker

在每个情况下,我们都会收到)或buildmaster 未运行的反馈,这表明该服务最初没有运行。

第2步:创建Buildmaster Unit文件

接下来,我们将创建并打开一个名为buildbot-master.service的文件:

1sudo nano /etc/systemd/system/buildbot-master.service

[服务]部分中,我们将添加一个描述,并要求在启动服务之前必须提供网络。在[服务]部分中,我们将指定该过程作为我们创建的buildbot用户和组运行,定义工作目录,并提供启动或重新加载主机的命令。

 1[label /etc/systemd/system/buildbot-master.service]
 2[Unit]
 3Description=BuildBot master service
 4After=network.target
 5
 6[Service]
 7User=buildbot
 8Group=buildbot
 9WorkingDirectory=/home/buildbot/master
10ExecStart=/usr/local/bin/buildbot start --nodaemon
11ExecReload=/bin/kill -HUP $MAINPID
12
13[Install]
14WantedBy=multi-user.target

一旦我们添加了内容,我们将保存和退出,然后测试我们的工作。

1sudo systemctl start buildbot-master

我们将使用 systemd 的状态命令来检查它是否开始适当:

1sudo systemctl status buildbot-master

输出应该包含活跃:活跃(运行),最后一行应该看起来像:

1[secondary_label Output]
2May 08 21:01:24 BuildBot-Install systemd[1]: Started BuildBot master service.

最后,我们将允许buildmaster在启动时开始:

1sudo systemctl enable buildbot-master
1[secondary_label Output]
2Created symlink from /etc/systemd/system/multi-user.target.wants/buildbot-master.service to /etc/systemd/system/buildbot-master.service.

现在 buildmaster 已经设置了,我们将添加工人。

步骤 3 – 创建 Worker Unit 文件

我们将创建并打开一个名为buildbot-worker.service的文件,该文件配置为buildbot-master.service,但具有启动工作者所需的值。

1sudo nano /etc/systemd/system/buildbot-worker.service
 1[label /etc/systemd/system/buildbot-worker.service]
 2[Unit]
 3Description=BuildBot worker service
 4After=network.target
 5
 6[Service]
 7User=buildbot
 8Group=buildbot
 9WorkingDirectory=/home/buildbot/worker
10ExecStart=/usr/local/bin/buildbot-worker start --nodaemon
11
12[Install]
13WantedBy=buildbot-master.service

我们将保存和退出,然后使用systemctl来启动工人:

1sudo systemctl start buildbot-worker

我们将使用状态命令来验证它成功启动:

1sudo systemctl status buildbot-worker

再次,就像主人一样,我们应该看到活跃:活跃(运行)和一个最终的输出线,看起来像:

1[secondary_label Output]
2. . .
3May 08 21:54:46 BuildBot-Install systemd[1]: Started BuildBot worker service.

最后,我们将允许工人从 boot 开始:

1sudo systemctl enable buildbot-worker.service
1[secondary_label Output]
2Created 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(https://andsky.com/tech/tutorials/how-to-configure-buildbot-with-ssl-using-an-nginx-reverse-proxy),一个免费的SSL证书服务。 请注意,您需要一个域名,您拥有或控制,以生成证书。

Published At
Categories with 技术
comments powered by Disqus