引言

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

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

先决条件

一个 Ubuntu 16.04服务器,内存至少1gb,配置了一个非 root sudo 用户和一个防火墙,遵循 Ubuntu 16.04初始服务器安装指南,安装并配置 Buildbot,使用以下指南:

  • 如何在 Ubuntu 16.04上安装 Buildbot

一旦你完成了这些要求,你就可以开始了。

第一步ー停止运作服务

首先,如果您仍然作为上一个教程中的构建 bot 用户登录,请键入 exit 以返回到 sudo 用户。

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

  • sudo buildbot stop /home/buildbot/master

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

  • sudo buildbot-worker stop /home/buildbot/worker

在每种情况下,我们都会得到反馈,表明 buildbot 进程1234已经死亡(显示已停止的进程 ID)或 buildmaster 没有运行,这表明服务首先没有运行。

步骤2ー创建 Buildmaster 单元文件

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

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

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

/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) ,最后一行应该是:

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

最后,我们将启用 buildmaster 启动 boot:

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

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

第三步ー创建工作单元文件

我们将创建并打开一个名为 buildbot-worker 的文件。 这个服务被配置成类似于 buildbot-master。 服务,但与价值观需要启动工人。 在[ Install ]部分,我们将使用 set WantedBy 键来设置 buildbot-master。 这样工人就会在建筑师之后开始工作。

  • 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 从 boot 开始:

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

上面的输出表明工作者被配置为从引导开始,但是您可能需要现在重新引导服务器以确认一切按预期启动。

总结

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

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