自动化仓库测试

注意

自动化构建需要 Docker Pro、Team 或 Business 订阅。

Docker Hub 可以自动使用容器测试对源代码仓库的更改。您可以在任何 Docker Hub 仓库上启用 Autotest,以便在每次拉取请求时运行测试,从而创建一个持续集成测试服务。

启用Autotest会构建一个用于测试的镜像,但不会自动将构建的镜像推送到Docker仓库。如果您想将构建的镜像推送到您的Docker Hub仓库,请启用自动构建

设置自动化测试文件

要设置您的自动化测试,请创建一个docker-compose.test.yml文件,该文件定义了一个sut服务,列出了要运行的测试。docker-compose.test.yml文件应位于包含用于构建镜像的Dockerfile的同一目录中。

例如:

services:
  sut:
    build: .
    command: run_tests.sh

上面的示例构建了存储库,并使用构建的镜像在容器内运行run_tests.sh文件。

您可以在此文件中定义任意数量的链接服务。唯一的要求是定义了sut。它的返回代码决定了测试是否通过。如果sut服务返回0,则测试通过,否则失败。

注意

只有sut服务和所有在 depends_on中列出的其他服务 会被启动。如果你有服务会轮询其他服务的变化,请确保 将轮询服务包含在 depends_on 列表中,以确保所有服务都能启动。

如果需要,您可以定义多个docker-compose.test.yml文件。任何以.test.yml结尾的文件都用于测试,并且测试按顺序运行。您还可以使用 自定义构建钩子 来进一步自定义您的测试行为。

注意

如果您启用自动构建,它们还会运行在test.yml文件中定义的任何测试。

在仓库上启用自动化测试

要在源代码仓库上启用测试,您必须首先在Docker Hub中创建一个关联的构建仓库。您的Autotest设置在与自动构建相同的页面上配置,但是您不需要启用自动构建来使用Autotest。自动构建是按分支或标签启用的,您根本不需要启用它。

只有配置为使用Autobuild的分支才会将镜像推送到Docker仓库,无论Autotest设置如何。

  1. 登录到Docker Hub并选择仓库

  2. 选择您想要启用Autotest的仓库。

  3. 从仓库视图中,选择构建标签。

  4. 选择配置自动构建

  5. 按照自动化构建中的说明配置自动化构建设置。

    至少您必须配置:

    • The source code repository
    • The build location
    • At least one build rule
  6. 选择您的自动测试选项。

    以下选项可用:

    • Off: 不进行额外的测试构建。只有在配置为自动化构建的一部分时,测试才会运行。

    • Internal pull requests: 对任何匹配构建规则的分支的拉取请求运行测试构建,但仅当拉取请求来自同一源仓库时。

    • Internal and external pull requests: 对任何匹配构建规则的分支的拉取请求运行测试构建,包括当拉取请求源自外部源仓库时。

    重要

    出于安全考虑,外部拉取请求的自动测试在公共仓库上是受限的。私有镜像不会被拉取,Docker Hub中定义的环境变量也不可用。自动构建功能仍照常工作。

  7. 选择保存以保存设置,或选择保存并构建以保存并运行初始测试。

检查你的测试结果

从仓库的详细信息页面中,选择时间线

从这个标签页中,您可以查看存储库的任何待处理、进行中、成功和失败的构建和测试运行。

您可以选择任何时间线条目来查看每次测试运行的日志。