介绍
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证书服务。 请注意,您需要一个域名,您拥有或控制,以生成证书。