grenade/.zuul.yaml

402 lines
14 KiB
YAML

- project:
templates:
- publish-openstack-docs-pti
check:
jobs:
- grenade
- grenade-multinode
- grenade-heat-multinode
- octavia-grenade
- ironic-grenade:
voting: false
- grenade-skip-level:
voting: false
gate:
jobs:
- grenade
- grenade-multinode
- grenade-heat-multinode
- octavia-grenade
experimental:
jobs:
- grenade-postgresql
- job:
name: grenade-base
parent: multinode
abstract: true
description: |
Base grenade job
This is the base grenade job for both single and multi node grenade
tests. It does not define any service to be used, so that this can
be used to build an upgrade test with a minimal number of services.
required-projects:
- opendev.org/openstack/devstack
- opendev.org/openstack/grenade
- opendev.org/openstack/requirements
- opendev.org/openstack/tempest
roles:
- zuul: opendev.org/openstack/openstack-zuul-jobs
- zuul: opendev.org/openstack/devstack
- zuul: opendev.org/openstack/tempest
- zuul: opendev.org/openstack/neutron-tempest-plugin
vars:
devstack_bases:
shared: /opt/stack
old: /opt/stack/old
new: /opt/stack/new
logs_old: /opt/stack/logs/old
logs_new: /opt/stack/logs/new
grenade_devstack_localrc: &grenade_base_devstack_localrc
old:
DEST: "{{ devstack_bases.old }}"
LOGFILE: "{{ devstack_bases.old }}/logs/devstacklog.txt"
new:
DEST: "{{ devstack_bases.new }}"
LOGFILE: "{{ devstack_bases.new }}/logs/devstacklog.txt"
shared:
USE_PYTHON3: true
# Common settings for OpenStack CI
DATABASE_PASSWORD: secretdatabase
# FIXME: temporarily define MYSQL_PASSWORD too,
# because some code in devstack and in grenade
# still requires it to be defined.
MYSQL_PASSWORD: secretdatabase
RABBIT_PASSWORD: secretrabbit
ADMIN_PASSWORD: secretadmin
SERVICE_PASSWORD: secretservice
NETWORK_GATEWAY: 10.1.0.1
FIXED_RANGE: 10.1.0.0/20
IPV4_ADDRS_SAFE_TO_USE: 10.1.0.0/20
FLOATING_RANGE: 172.24.5.0/24
PUBLIC_NETWORK_GATEWAY: 172.24.5.1
FIXED_NETWORK_SIZE: 4096
LOG_COLOR: false
VERBOSE: true
VERBOSE_NO_TIMESTAMP: true
NOVNC_FROM_PACKAGE: true
ERROR_ON_CLONE: true
# Gate jobs can't deal with nested virt. Disable it.
LIBVIRT_TYPE: qemu
# TODO(slaweq): It can be removed when devstack patch
# https://review.opendev.org/c/openstack/devstack/+/849145 will be
# merged in master and last stable branch
NEUTRON_ENDPOINT_SERVICE_NAME: ""
grenade_localrc:
SAVE_DIR: "{{ devstack_bases.shared }}/save"
# from tempest playbooks
devstack_local_conf:
test-config:
$TEMPEST_CONFIG:
compute:
min_compute_nodes: "{{ groups['compute'] | default(['controller']) | length }}"
test_results_stage_name: test_results
zuul_copy_output:
'{{ devstack_bases.logs_old }}': logs
'{{ devstack_bases.logs_new }}': logs
'{{ grenade_save_dir }}': logs
'{{ grenade_log_dir }}/grenade.sh.log': logs
'{{ grenade_log_dir }}/grenade.sh.log.summary': logs
'{{ grenade_conf_dir }}/grenade_localrc': logs_txt
'{{ grenade_conf_dir }}/grenade_pluginrc': logs_txt
'{{ stage_dir }}/{{ test_results_stage_name }}.subunit': logs
'{{ stage_dir }}/{{ test_results_stage_name }}.html': logs
'{{ stage_dir }}/stackviz': logs
'{{ stage_dir }}/apache': logs
'{{ stage_dir }}/apache_config': logs
'{{ stage_dir }}/etc': logs
'/var/log/rabbitmq': logs
'/var/log/postgresql': logs
'/var/log/mysql': logs
'/var/log/libvirt': logs
'/etc/sudoers': logs
'/etc/sudoers.d': logs
'{{ stage_dir }}/iptables.txt': logs
'{{ stage_dir }}/df.txt': logs
'{{ stage_dir }}/pip2-freeze.txt': logs
'{{ stage_dir }}/pip3-freeze.txt': logs
'{{ stage_dir }}/dpkg-l.txt': logs
'{{ stage_dir }}/rpm-qa.txt': logs
'{{ stage_dir }}/core': logs
'{{ stage_dir }}/listen53.txt': logs
'{{ stage_dir }}/deprecations.log': logs
'/var/log/ceph': logs
'/var/log/openvswitch': logs
'/var/log/glusterfs': logs
'/etc/glusterfs/glusterd.vol': logs
'/etc/resolv.conf': logs
'/var/log/unbound.log': logs
extensions_to_txt:
auto: True
conf: True
log: True
localrc: True
stackenv: True
summary: True
group-vars:
subnode:
grenade_devstack_localrc:
<<: *grenade_base_devstack_localrc
pre-run: playbooks/pre.yaml
run: playbooks/grenade.yaml
post-run: playbooks/post.yaml
irrelevant-files: &grenade-irrelevant-files
# Documentation related
- ^.*\.rst$
- ^api-ref/.*$
- ^doc/.*$
- ^releasenotes/.*$
- ^.git.*$
# Translations
- ^.*/locale/.*po$
- job:
name: grenade
parent: grenade-base
description: |
Default grenade job
Usually grenade jobs should inherit from this job.
nodeset: openstack-single-node-focal
required-projects:
# NOTE(andreaf) The devstack and grenade roles take care of setting up
# repos on the right branch for this job.
- opendev.org/openstack/cinder
- opendev.org/openstack/glance
- opendev.org/openstack/keystone
- opendev.org/openstack/neutron
- opendev.org/openstack/nova
- opendev.org/openstack/placement
- opendev.org/openstack/swift
timeout: 10800
vars:
grenade_devstack_localrc:
shared:
# Common OpenStack services settings
SWIFT_REPLICAS: 1
SWIFT_START_ALL_SERVICES: false
SWIFT_HASH: 1234123412341234
CINDER_PERIODIC_INTERVAL: 10
DEBUG_LIBVIRT_COREDUMPS: True
# Multinode specific settings
SERVICE_HOST: "{{ hostvars['controller']['nodepool']['private_ipv4'] }}"
HOST_IP: "{{ hostvars['controller']['nodepool']['private_ipv4'] }}"
PUBLIC_BRIDGE_MTU: "{{ external_bridge_mtu }}"
CELLSV2_SETUP: "singleconductor"
# Node specific settings
DATABASE_TYPE: mysql
# Glance should always be non-standalone
GLANCE_STANDALONE: False
devstack_local_conf:
post-config:
$NEUTRON_CONF:
DEFAULT:
global_physnet_mtu: "{{ external_bridge_mtu }}"
grenade_localrc:
# enable the execution of the base smoke tests by default
BASE_RUN_SMOKE: True
devstack_plugins:
neutron: https://opendev.org/openstack/neutron
devstack_services:
# Core services enabled for this branch.
# This list replaces the test-matrix.
# Shared services
dstat: true
etcd3: true
mysql: true
memory_tracker: true
rabbit: true
# TODO: tls-proxy is not tested by legacy jobs;
# enable this after testing.
tls-proxy: false
# Keystone services
key: true
# Glance services
g-api: true
g-reg: true
# Nova services
n-api: true
n-api-meta: true
n-cauth: true
n-cond: true
n-cpu: true
n-novnc: true
n-obj: true
n-sch: true
placement-api: true
# Neutron services
# We need to keep using the neutron-legacy based services for
# now until all issues with the new lib/neutron code are solved
q-svc: true
q-agt: false
q-dhcp: false
q-l3: false
q-meta: false
q-metering: false
q-dns: true
q-ovn-metadata-agent: true
ovn-controller: true
ovn-northd: true
ovs-vswitchd: true
ovsdb-server: true
neutron-trunk: true
# Swift services
s-account: true
s-container: true
s-object: true
s-proxy: true
# Cinder services
c-api: true
c-bak: true
c-sch: true
c-vol: true
cinder: true
# Tempest was enabled by default even before the native Zuul v3 job
tempest: true
# Services we don't need.
# This section is not really needed, it's for readability.
horizon: false
# Test matrix emits ceilometer but ceilometer is not installed in the
# integrated gate, so specifying the services has not effect.
# ceilometer-*: false
group-vars:
subnode:
devstack_services:
# Core services enabled for this branch.
# This list replaces the test-matrix.
# Shared services
dstat: true
memory_tracker: true
# TODO: tls-proxy is not tested by legacy jobs;
# enable this after testing.
tls-proxy: false
# Nova services
n-cpu: true
placement-client: true
# Neutron services
# We need to keep using the neutron-legacy based services for
# now until all issues with the new lib/neutron code are solved
ovn-controller: true
ovn-northd: false
ovs-vswitchd: true
ovsdb-server: true
q-fake: true
q-svc: false
q-agt: false
q-dhcp: false
q-l3: false
q-meta: false
q-metering: false
q-ovn-metadata-agent: true
# Cinder services
c-bak: true
c-vol: true
# Services we don't run at all on subnode.
# This section is not really needed, it's for readability.
# keystone: false
# s-*: false
horizon: false
tempest: false
# Test matrix emits ceilometer but ceilometer is not installed in the
# integrated gate, so specifying the services has not effect.
# ceilometer-*: false
grenade_devstack_localrc:
shared:
# Multinode specific settings
HOST_IP: "{{ hostvars[inventory_hostname]['nodepool']['private_ipv4'] }}"
SERVICE_HOST: "{{ hostvars['controller']['nodepool']['private_ipv4'] }}"
PUBLIC_BRIDGE_MTU: "{{ external_bridge_mtu }}"
CELLSV2_SETUP: "singleconductor"
# Subnode specific settings
DATABASE_TYPE: mysql
GLANCE_HOSTPORT: "{{ hostvars['controller']['nodepool']['private_ipv4'] }}:9292"
Q_HOST: "{{ hostvars['controller']['nodepool']['private_ipv4'] }}"
RABBIT_HOST: "{{ hostvars['controller']['nodepool']['private_ipv4'] }}"
DATABASE_HOST: "{{ hostvars['controller']['nodepool']['private_ipv4'] }}"
- job:
name: grenade-py3
parent: grenade
description: |
Grenade job based on Python 3
vars:
grenade_devstack_localrc:
shared:
USE_PYTHON3: true
- job:
name: grenade-forward
parent: grenade
description: |
Forward test. This is mostly relevant for stable branches,
because running it in master will execute an upgrade
to the same commit.
Former names for this job were:
* grenade-dsvm-neutron-forward
* legacy-grenade-dsvm-neutron-forward
vars:
# When a stable branch stable/X is created from master,
# this value should be updated to stable/X.
grenade_from_branch: master
- job:
name: grenade-dsvm-neutron-forward
branches: ^(?!(stable/(ocata|pike|queens|rocky|stein|train))).*$
parent: grenade-forward
- job:
name: grenade-postgresql
description: |
Default grenade job which uses PostgreSQL
parent: grenade
vars:
grenade_devstack_localrc:
shared:
DATABASE_TYPE: postgresql
devstack_services:
mysql: false
postgresql: true
group-vars:
subnode:
devstack_services:
grenade_devstack_localrc:
shared:
DATABASE_TYPE: postgresql
- job:
name: grenade-multinode
description: |
Basic multinode grenade job
parent: grenade
nodeset: openstack-two-node-focal
pre-run: playbooks/multinode-pre.yaml
- job:
name: grenade-skip-level
description: |
Grenade job that skips a release, validating that deployers can skip
specific releases as prescribed by our process.
parent: grenade
# NOTE(gmann): This job is started and meant to be run from Yoga release.
# This job is meant to validate the SLURP to SLURP release
# upgrade so supposed to run on SLURP release gate only. To make sure
# that, when the current master is not SLURP release, below branch variant will
# stop running it on not SLURP release master. And once new SLURP release start
# (means the current master is SLURP release), we need to remove the 'master'
# from the below branch variant condition so that it again start running on
# SLURP release master gate.
# Along with grenade gate, this job runs on many other projects gate
# also and in this job definition, we control for everyone to run on SLURP
# release only.
branches: ^(?!stable/(pike|queens|rocky|stein|train|ussuri|victoria|wallaby|xena|zed)).*$
vars:
# Move this forward when master changes to a new skip-level-allowed
# target release. Right now, this is stable/yoga because current master is 2023.1
# (which is N+2 release from yoga so skipping zed release and testing the upgrade
# from stable/yoga -> 2023.1). When master is 2023.3, this should become 2023.1,
# and so forth.
grenade_from_branch: stable/yoga
grenade_localrc:
NOVA_ENABLE_UPGRADE_WORKAROUND: True