integration-aliases
集成测试由 ansible-test 执行,并位于 test/integration/targets/ 下的目录中。每个测试必须有一个 aliases 文件来控制测试执行。
别名将在以下部分中解释。每个别名必须在 aliases 文件中单独一行。
组
必须配置测试以在一个组中运行。这是通过将适当的组添加到 aliases 文件中来完成的。
以下是一些可用组的示例
shippable/posix/group1shippable/windows/group2shippable/azure/group3shippable/aws/group1shippable/cloud/group1
组用于在多个 CI 作业中平衡测试,以最大限度地缩短测试运行时间。它们还通过将具有相似要求的测试保持在一起运行来提高效率。
为新测试选择组时,请使用与要添加的测试相似的现有测试相同的组。如果有多个组可用,请随机选择一个。
设置
别名可用于在运行测试之前执行设置目标
setup/once/TARGET- 在第一个需要它的目标之前运行目标TARGET。setup/always/TARGET- 在每个需要它的目标之前运行目标TARGET。
要求
别名可用于表达一些测试要求
needs/privileged- 使用--docker运行测试时,需要--docker-privileged。needs/root- 需要以root身份或使用--docker运行测试。needs/ssh- 需要到 localhost(或使用--docker的测试容器)的 SSH 连接,无需密码。needs/httptester- 需要使用 http-test-container 运行测试。
依赖项
一些测试依赖项会自动发现
在
meta/main.yml文件中定义的 Ansible 角色依赖项。使用
setup/*别名定义的目标。从一个目标到另一个目标中文件的符号链接。
别名可用于声明未自动处理的依赖项
needs/target/TARGET- 需要使用测试目标TARGET。needs/file/PATH- 需要使用相对于 Git 根目录的文件PATH。
跳过
别名可用于使用以下方法之一跳过平台
skip/freebsd- 跳过在 FreeBSD 上的测试。skip/macos- 跳过在 macOS 上的测试。skip/rhel- 跳过在 RHEL 上的测试。skip/docker- 在 Docker 容器中运行时跳过测试。
平台版本(使用 --remote 选项指定并删除了 /)也可以跳过
skip/freebsd11.1- 跳过在 FreeBSD 11.1 上的测试。skip/rhel7.6- 跳过在 RHEL 7.6 上的测试。
Windows 版本(使用 --windows 选项指定)也可以跳过
skip/windows/2016- 跳过在 Windows Server 2016 上的测试。skip/windows/2019- 跳过在 Windows Server 2019 上的测试。skip/windows/2022- 跳过在 Windows Server 2022 上的测试。
别名可用于使用以下方法之一跳过 Python 主要版本
skip/python2- 跳过在 Python 2.x 上的测试。skip/python3- 跳过在 Python 3.x 上的测试。
要进行更精细的跳过,请在集成测试 Playbook 中使用条件,例如
when: ansible_distribution in ('Ubuntu')
杂项
还有其他几个可用的别名
destructive- 需要--allow-destructive才能在没有--docker或--remote的情况下运行。hidden- 目标被忽略。可用作依赖项。自动用于以setup_和prepare_开头的目标。retry/never- 目标不包括在由--retry-on-error选项启用的重试中。gather_facts/yes- 启用在运行目标之前收集 facts(默认选项)。gather_facts/no- 禁用在运行目标之前收集 facts。
不稳定
有时会失败的测试应使用 unstable 别名进行标记,直到不稳定性得到修复。这些测试将继续为修改测试或被测模块的拉取请求运行。
这避免了其他拉取请求的不必要的测试失败,以及合并运行和夜间 CI 作业中的测试。
有两种方法可以手动运行不稳定测试
对
ansible-test使用--allow-unstable选项将传递给
ansible-test的测试名称加上前缀unstable/。
测试将由 Ansible Core 团队的成员标记为不稳定。将创建 GitHub 问题来跟踪每个不稳定测试。
禁用
始终失败的测试应使用 disabled 别名标记,直到它们可以修复为止。
禁用的测试会自动跳过。
有两种方法可以手动运行禁用的测试
对
ansible-test使用--allow-disabled选项当将测试传递给
ansible-test时,请在测试名称前加上disabled/。
测试将被 Ansible 核心团队的成员标记为禁用。将会创建 GitHub 问题 来跟踪每个被禁用的测试。
不支持
无法在 CI 中运行的测试应使用 unsupported 别名进行标记。大多数测试可以通过使用模拟器和/或云插件来支持。
但是,如果无法做到这一点,则将测试标记为不支持将阻止其在 CI 中运行。
有两种方法可以手动运行不支持的测试
对
ansible-test使用--allow-unsupported选项当将测试传递给
ansible-test时,请在测试名称前加上unsupported/。
测试将由测试的贡献者标记为不支持。
云
云服务和其他需要访问外部 API 的模块的测试通常需要特殊的 CI 测试支持。
这些需要额外的别名来指示所需的测试插件。
一些可用的别名是
cloud/awscloud/azurecloud/cscloud/digitaloceancloud/openshiftcloud/vcenter
未经测试
每个模块和插件都应该有集成测试,即使测试无法在 CI 中运行。
问题
问题
对于有关集成测试的问题,请通过创建带有 ansible-test,testing 和其他适当标签的主题,在 Ansible 论坛 上联系社区。