OpenStack DevStack项目:从Zuul V2迁移CI任务到V3的完整指南

OpenStack DevStack项目:从Zuul V2迁移CI任务到V3的完整指南

前言

随着OpenStack持续集成系统的演进,Zuul从V2版本升级到了V3版本。这一变化带来了更强大的功能,特别是通过Ansible角色实现的任务部分重用和任务间的继承能力。本文将详细介绍如何将DevStack相关的CI任务从Zuul V2迁移到V3原生格式。

Zuul V3任务定义的位置

在Zuul V3中,任务定义可以放在包含被测试代码的代码库中。对于OpenStack服务来说,这意味着:

  • 可以将基于DevStack的CI任务定义在服务代码所在的代码库中
  • 对于无分支的代码库(如Tempest插件),这是存放任务定义的理想位置,因为任务变更不需要向后移植

示例:

- job:
    name: myplugin-tests-tempest
    description: 运行来自MyPlugin的Tempest测试
    parent: devstack-tempest

选择基础任务

根据你的测试需求,可以选择不同的基础任务作为起点:

1. 仅需要DevStack部署的OpenStack云(不运行Tempest测试)

  • devstack任务:适用于单节点和多节点任务,包含集成门禁中使用的服务列表(keystone、glance、nova、cinder、neutron和swift)
  • devstack-base任务:类似于devstack但不指定任何必需的代码库或服务,适合需要非常精简的DevStack设置

2. 需要DevStack部署并运行Tempest测试

  • devstack-tempest任务:适用于单节点和多节点任务,可以通过切换子任务中使用的nodeset实现不同拓扑

任务自定义选项

无需编写Ansible代码即可实现的自定义:

  1. DevStack服务:添加/移除服务
  2. 配置:添加或修改DevStack和服务配置
  3. 插件:安装DevStack插件
  4. 节点扩展:增加子节点数量(仅限多节点)
  5. 日志:定义要上传的额外日志文件和目录
  6. 日志格式:定义要重写为.txt的日志文件扩展名

对于Tempest任务,还可以:

  • 定义使用的Tempest tox环境
  • 定义测试并发度
  • 定义测试正则表达式

任务变量设置

在Zuul V3中,变量可以在三个位置添加:

  1. job.vars:全局变量,对所有节点可用
  2. job.host-vars.[HOST]:仅对指定主机可用的变量
  3. job.group-vars.[GROUP]:仅对指定组可用的变量

Zuul通过任务继承合并字典变量。主机和组变量会覆盖同名的全局变量。

DevStack Gate标志迁移

原CI系统使用DevStack、Tempest和devstack-gate的组合来设置测试环境。在Zuul V3中,devstack-gate的逻辑被移到了不同的代码库中。下表展示了如何将DEVSTACK_GATE_*标志映射到新系统:

| 原标志 | 新实现方式 | |--------|------------| | OVERRIDE_ZUUL_BRANCH | 在任务定义中使用override-checkout: [branch] | | DEVSTACK_GATE_NET_OVERLAY | 使用多节点桥接角色设置br-infra桥 | | DEVSTACK_CINDER_VOLUME_CLEAR | 在job.vars的devstack_localrc中设置CINDER_VOLUME_CLEAR | | DEVSTACK_GATE_NEUTRON | 默认启用,可通过禁用devstack_services中的所有neutron服务来关闭 | | DEVSTACK_GATE_CONFIGDRIVE | 在devstack_localrc中设置FORCE_CONFIG_DRIVE | | DEVSTACK_GATE_INSTALL_TESTONLY | 在devstack_localrc中设置INSTALL_TESTONLY_PACKAGES | | DEVSTACK_GATE_VIRT_DRIVER | 在devstack_localrc中设置VIRT_DRIVER | | DEVSTACK_GATE_LIBVIRT_TYPE | 在devstack_localrc中设置LIBVIRT_TYPE |

未迁移的标志

部分标志尚未迁移或被视为遗留标志:

  • DEVSTACK_GATE_TOPOLOGY:正在开发中,拓扑取决于使用的基础任务和关联的nodeset
  • DEVSTACK_GATE_GRENADE:将在grenade代码库中实现
  • DEVSTACK_GATE_IRONIC系列标志:可能在ironic侧实现
  • DEVSTACK_GATE_POSTGRES:已通过post角色支持,被视为遗留标志
  • DEVSTACK_GATE_ZEROMQ等:在devstack-gate中无实际效果,被视为遗留标志

最佳实践

  1. 优先使用现有角色:充分利用DevStack提供的角色、play和任务
  2. 合理使用继承:通过任务继承减少重复配置
  3. 逐步迁移:先确保基本功能可用,再逐步添加高级特性
  4. 测试验证:迁移后仔细验证任务行为是否符合预期

通过遵循这些指南,你可以顺利将DevStack相关的CI任务从Zuul V2迁移到V3,并充分利用新版本提供的强大功能。

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

戴岩均Valley

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值