自动化仓库测试

注意

自动构建需要 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。自动构建是针对每个分支或标签启用的,您根本不需要启用它。

无论 Autotest 设置如何,仅配置为使用自动构建的分支才会将镜像推送到 Docker 存储库。

  1. 登录 Docker Hub 并选择**代码库**。

  2. 选择您要启用Autotest的代码库。

  3. 在代码库视图中,选择**构建**选项卡。

  4. 选择**配置自动构建**。

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

    您至少必须配置

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

    提供以下选项:

    • 关闭:没有额外的测试构建。测试仅在将其配置为自动构建的一部分时运行。

    • 内部拉取请求:针对与构建规则匹配的分支的任何拉取请求运行测试构建,但仅当拉取请求来自同一源存储库时。

    • 内部和外部拉取请求:针对与构建规则匹配的分支的任何拉取请求运行测试构建,包括拉取请求源自外部源存储库的情况。

    重要

    出于安全考虑,公共存储库上的外部拉取请求自动测试受到限制。不会拉取私有镜像,并且Docker Hub中定义的环境变量不可用。自动构建将照常工作。

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

检查您的测试结果

在代码库的详细信息页面中,选择**时间线**。

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

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