介绍
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]
部分中,我们将指出它应该在启动时作为多用户目标的一部分开始:
[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)
,最后一行应该如下所示:
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 /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
[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)
和最后一行输出如下:
Output. . .
May 08 21:54:46 BuildBot-Install systemd[1]: Started BuildBot worker service.
最后,我们将使工作人员在启动时启动:
sudo systemctl enable buildbot-worker.service
OutputCreated 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界面 。 请注意,您需要您拥有或控制的域名才能生成证书。