如何为Buildbot创建Systemd单元文件

来自菜鸟教程
跳转至:导航、​搜索

介绍

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 界面。 请注意,您需要一个您拥有或控制的域名才能生成证书。