入门系列之在Ubuntu 16.04使用Buildbot建立持续集成系统

Buildbot是一个基于Python的持续集成系统,用于自动化软件构建,测试和发布过程。

在本教程中,我们将演示如何设置持续集成系统以自动测试对存储库的新更改。我们将使用一个简单的Node.js应用程序来演示测试过程和必要的配置。为了将我们的测试环境与Buildbot主机隔离,我们将创建一个Docker镜像作为Buildbot worker运行。然后,我们将配置Buildbot主服务器以观察GitHub存储库的更改,每次检测到新的更改时自动进行测试。

准备

要学习本教程,您需要:

一个具有至少1 GB的RAM的Ubuntu16.04服务器,并包括一个可以使用sudo命令的非root 用户。

另外,在开始本教程之前需要完成以下内容:

如何在Ubuntu上安装Buildbot

安装Nginx

在Ubuntu上使用SSL来保护Nginx

给Buildbot加上SSL,使用Nginx做反向代理

搭建Docker环境

在GitHub中使用fork示例存储库

在我们开始配置Buildbot之前,我们将看一下我们将用于本教程的示例存储库。

在您的Web浏览器中,访问我们将用于演示的GitHub上的hello hapi应用程序。这个应用程序是一个简单的“hello world”程序,带有一些单元和集成测试,用hapi编写的一个Node.js Web框架。

由于此示例用于演示各种持续集成系统,您可能会注意到一些文件用于为其他系统定义管道。对于Buildbot,我们将在服务器上而不是在存储库中定义构建步骤。

稍后,我们将在我们的存储库中为Buildbot设置webhook,以便更改将自动触发新测试。现在,我们需要创建自己的存储库分支。

单击屏幕右上角的Fork按钮:

img

GitHub fork 按钮

如果您是GitHub组织的成员,可能会询问您在哪里使用fork存储库:

img

哪里使用fork存储库

选择帐户或组织后,存储库的副本将添加到您的帐户中:

img

存储库的副本将添加到您的帐户

您将在Buildbot配置中使用fork的URL。现在我们有了一个存储库URL,我们可以开始配置Buildbot了。

为Buildbot设置Docker

我们将从设置Docker开始,以便Buildbot使用它来执行构建。首先,我们需要配置Docker和Buildbot之间的访问。之后,我们需要创建一个Docker镜像以用于我们的容器。

为Buildbot配置Docker访问

我们需要允许Buildbot和Docker在几个不同的级别进行通信。

首先,我们需要确保Buildbot进程可以访问Docker守护程序。我们可以通过将做到这一点buildbot用户的docker组:

$ sudo usermod -aG docker buildbot

下次重新启动Buildbot主服务器时,这个新组将可用于Buildbot,我们稍后会这样做。

我们还需要确保Buildbot知道如何与Docker通信。由于Buildbot是用Python编写的,它利用docker-py Python包而不是直接发出Docker命令。

您可以输入以下命令安装docker-py:

$ sudo -H pip install docker-py

最后,我们需要打开从容器到主机系统和外部世界的网络访问。我们可以通过在防火墙中允许docker0的接口例外来实现此目的。

通过输入以下内容允许从docker0界面访问流量:

$ sudo ufw allow in on docker0

Buildbot和Docker现在应该能够有效地相互通信。

创建一个Docker镜像以用作Buildbot Worker

接下来,我们将创建一个Docker容器,用作Buildbot worker来运行我们的测试。Buildbot可以动态启动Docker容器以用作worker,但首先需要使用包含的一些Buildbot worker组件构建容器。

幸运的是,Buildbot项目提供了一个基本的Buildbot worker映像,该镜像已经配置了所有特定于Buildbot的需求。我们只需要将此镜像用作基础并安装我们项目所需的其他依赖项。

在我们的例子中,我们将使用的示例应用程序是Node.js应用程序,因此我们需要确保Node.js在镜像上可用。

要定义我们的镜像,请创建并打开Dockerfile在主目录中调用的文件:

$ nano ~/Dockerfile

在这个文件中,我们使用了基于Buildbot worker的镜像FROM buildbot/buildbot-worker:master。之后,我们可以切换到root用户安装Node.js,然后切换回buildbot用户运行实际命令:

〜/ Dockerfile

FROM buildbot/buildbot-worker:master USER root RUN curl -sL https://deb.nodesource.com/setup_8.x | bash - RUN apt-get install -y nodejs USER buildbot

完成后保存并关闭文件。

一旦我们拥有了Dockerfile,我们就可以从中构建我们的镜像。我们将调用镜像npm-worker来明确我们安装的额外依赖项:

$ docker build -t npm-worker - < ~/Dockerfile

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsxwgp.html