如何为Buildbot创建Systemd单元文件

Buildbot是一个基于Python的持续集成系统,用于自动化软件构建,测试和发布流程。在本教程中,我们将创建systemd单元文件,以便服务器的init系统可以管理Buildbot进程。

介绍

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

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

先决条件

一个具有至少1 GB RAM的Ubuntu 16.04服务器 ,配置有非root用户和防火墙,遵循使用以下指南安装和配置的Buildbot的Ubuntu 16.04初始服务器设置指南:

完成这些要求后,即可开始。

第1步 - 停止正在运行的服务

首先,如果您仍然以前教程中的buildbot用户登录,请键入exit以返回到sudo用户。

作为sudo用户,我们将确保Buildmaster已停止:

sudo buildbot stop /home/buildbot/master

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

sudo buildbot-worker stop /home/buildbot/worker

在每种情况下,我们将收到反馈, buildbot process 1234 is dead, showing the Process ID that was stopped) or buildmaster不运行,这表示该服务没有运行在第一位。

第2步 - 创建Buildmaster单元文件

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

sudo nano /lib/systemd/system/buildbot-master.service

[Unit]部分中,我们将添加一个描述,并要求在开始服务之前,该网络必须可用。 [Service]部分中,我们将指定该进程作为我们创建的buildbot用户和组运行,定义工作目录,并提供应用于启动主服务器的命令。 最后,在[Install]部分中,我们将指出它应该在启动时作为多用户目标的一部分开始:

/lib/systemd/system/buildbot-master.service
[Unit]
Description=BuildBot master service
After=network.target

[Service]
User=buildbot
Group=buildbot
WorkingDirectory=/home/buildbot/master
Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin"
ExecStart=/usr/local/bin/buildbot start \
          --nodaemon

[Install]
WantedBy=multi-user.target

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

sudo systemctl start buildbot-master

我们将使用systemd的status命令检查它是否正确启动:

sudo systemctl status buildbot-master

输出应包含Active: active (running) ,最后一行应该如下所示:

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

最后,我们将启动buildmaster在启动时启动:

sudo systemctl enable buildbot-master
Created symlink from /etc/systemd/system/multi-user.target.wants/buildbot-master.service to /lib/systemd/system/buildbot-master.service.

现在buildmaster已经建立起来了,我们会添加工作人员。

第3步 - 创建工作单元文件

我们将创建并打开名为buildbot-worker.service的文件,该文件的配置类似于buildbot-master.service但具有启动该工作者所需的值。 [Install]部分,我们将使用将WantedBy键设置为buildbot-master.service ,以便在buildmaster之后启动该工作。

sudo nano /lib/systemd/system/buildbot-worker.service
/lib/systemd/system/buildbot-worker.service
[Unit]
Description=BuildBot worker service
After=network.target

[Service]
User=buildbot
Group=buildbot
WorkingDirectory=/home/buildbot/worker
Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin"
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

再次,像主人一样,我们应该看到Active: active (running)和最后一行输出如下:

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

最后,我们将使工作人员在启动时启动:

sudo systemctl enable buildbot-worker.service
Created symlink from /etc/systemd/system/buildbot-master.service.wants/buildbot-worker.service to /lib/systemd/system/buildbot-worker.service.

上面的输出表示工作人员被配置为在引导时启动,但是您可能希望立即重新启动服务器,以确保一切按预期开始。

结论

在本教程中,我们添加了systemd单元文件,以便服务器的init系统可以管理Buildbot进程,我们已经启动了buildmaster和worker。

在下一个教程中,我们将使用免费的SSL证书服务Let's Encrypt保护SSL的Web界面 请注意,您需要您拥有或控制的域名才能生成证书。