自动化仓库测试

注意

自动化构建需要 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. 按照自动构建中的说明配置自动构建设置。

    您至少必须配置:

    • 源代码仓库
    • 构建位置
    • 至少一条构建规则
  6. 选择您的 Autotest 选项。

    以下选项可用:

    • Off:无额外测试构建。仅当测试作为自动化构建的一部分被配置时才运行测试。

    • Internal pull requests: 为符合构建规则的分支所关联的任何拉取请求运行一次测试构建,但仅当该拉取请求源自同一源代码仓库时才执行。

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

    重要

    出于安全考虑,外部拉取请求(pull requests)的自动测试在公共代码仓库中受到限制。私有镜像不会被拉取,Docker Hub 中定义的环境变量也无法使用。自动化构建仍可正常运行。

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

检查您的测试结果

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

从此选项卡中,您可以查看该仓库的任何待处理、进行中、成功和失败的构建及测试运行。

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