Podman CI
以下是 Podman CI 支持的主要上下文和运行时“模式”的列表(不完整)。请注意,runner.sh
脚本中可能还有关于“跳过工作”的其他检查。本文档仅详细说明了 .cirrus.yml
级别的控制。
可视化
通过盯着 YAML 文件来理解任务之间的关系可能非常困难。
存在一个工具
用于生成 .cirrus.yml
文件的图形(流程图)。下面是一个(可能已过时)的输出示例:
实现注意事项
skip
条件不应用于任务。尽管它可能更容易阅读,但会导致一个混乱的状态输出,在审查 PR 时更难翻页浏览。与only_if
不同,only_if
会在运行时完全绕过任务的创建。此外,坚持使用一种条件样式,可以更容易地在多个任务之间重用 YAML 语句。可以用作条件一部分的唯一变量是由 Cirrus-CI 定义的。 列表已记录在案。对 YAML 中定义的任何变量的引用不会按您期望的方式工作,请不要使用它们!
一些由 Cirrus-CI 定义的变量在其明显的上下文之外包含非空值。例如,对于 PR 运行的任务,
$CIRRUS_BRANCH
将被设置为pull/<number>
。使用正或负正则表达式的条件具有几个“标志”设置:“多行”和“不区分大小写”。
测试
通过强制为(否则)Cirrus-CI 定义的变量设置值,可以模拟执行大多数模式。例如 $CIRRUS_TAG
。在发布本文档时,不可能覆盖 $CIRRUS_PR
的行为。
Cirrus CI 任务上下文和运行时模式
针对常规 PR 的预定任务(斜体:矩阵)
- build
- validate
- bindings
- swagger
- alt_build
- osx_alt_build
- freebsd_alt_build
- docker-py_test
- unit_test
- apiv2_test
- compose_test
- local_integration_test
- remote_integration_test
- container_integration_test
- rootless_integration_test
- local_system_test
- remote_system_test
- rootless_remote_system_test
- buildah_bud_test
- rootless_system_test
- rootless_gitlab_test
- upgrade_test
- meta
- success
- artifacts
针对标题中包含 "release" 或 "bump" 的 PR 的预定任务:
- (上述所有常规 PR 任务)
- release_test
针对标记为 [CI:DOCS]
的 PR 的预定任务:
- build
- validate
- swagger
- meta
- success
针对标记为 [CI:BUILD]
的 PR 的预定任务:
- build
- validate
- alt_build
- osx_alt_build
- freebsd_alt_build
- meta
- success
- artifacts
针对标记为 [CI:MACHINE]
的 PR 的预定任务:
如果且仅当 PR 处于 草稿模式 时,才运行以下任务。这个草稿模式检查是必要的,以消除合并可能影响 podman 未测试方面的更改的风险。
- build
- validate
- alt_build
- win_installer
- osx_alt_build
- podman_machine_task
- podman_machine_aarch64_task
- podman_machine_windows_task
- podman_machine_mac_task
- meta
- success
- artifacts
这些预定任务涵盖了 Podman CI 在处理不同类型的 PR 时所运行的各种上下文和运行时模式。每个任务都有其特定的目的和用途,以确保 Podman 的质量和稳定性。通过理解这些任务,开发人员可以更好地了解 CI 流程,并在需要时调整或添加任务来满足特定的需求。
[CI:NEXT]
的预定行为:
如果且仅当 PR 处于 草稿模式 时,在运行时更新 Fedora CI 虚拟机,以使用 podman-next COPR 仓库中可用的最新软件包。这些软件包代表了 Podman 的主要依赖项,并会定期从其上游仓库中构建。这些更改是 运行时更改,不会影响或持久化到其他 PR。
这种行为的目的是暂时支持使用最新的 Podman 代码和测试进行更新测试。为防止意外情况发生,当 PR 不处于草稿模式时,该魔法字符串(magic string)的存在将导致 VM 设置脚本失败,直到该魔法字符串被移除。
注意: 在更改 PR 的草稿状态时,您需要重新推送一个提交更改,Cirrus-CI 才会注意到草稿状态的更新(即,仅点击重新运行按钮是不够的)。
分支任务(和 Cirrus-cron 任务)的预定任务:
- build
- swagger
- alt_build
- osx_alt_build
- freebsd_alt_build
- local_system_test
- remote_system_test
- rootless_remote_system_test
- rootless_system_test
- meta
- success
- artifacts
针对新标签任务的预定任务:
- build
- swagger
- alt_build
- osx_alt_build
- freebsd_alt_build
- meta
- success
- artifacts
- release
这些预定任务旨在确保在特定情况下(如新标签的创建或特定分支的更新)时,能够执行必要的构建、验证和测试步骤。通过执行这些任务,我们可以确保 Podman 的代码在合并或发布之前达到所需的质量标准。同时,[CI:NEXT]
的特殊行为允许开发人员在需要时测试与最新依赖项的兼容性,从而进一步确保 Podman 的稳定性和可靠性。