Fixed job hierarchy for Zuul CI

Added a parent job *-functional-devstack-base which defines basic job
attributes such as job.required-projects. It does not restrict branches
because else Zuul would not find a matching parent job variant during
job freeze when child jobs are on other branches. It does not define
attributes job.override-checkout and job.required-projects.override-\
checkout because else Zuul would use this branch when matching variants
for parent jobs during job freeze.

Jobs *-devstack-{xena,wallaby,train}-ansible-2.{11,12} have been
changed to inherit from *-devstack-base instead of *-devstack-ansible-\
2.{11,12}. The latter do not run for branch stable/1.0.0 which caused
Zuul to dismiss the *-devstack-{xena,wallaby,train}-ansible-2.{11,12}
when collecting parent job variants during job freeze:
The previous parent jobs *-devstack-ansible-2.{11,12} set job.branches
to master so Zuul cannot match that job when it collects job variants
and thus would ignore the child jobs.

Likewise, jobs *-devstack-{xena,wallaby,train}-ansible-2.{11,12} cannot
inherit from any parent job which sets job.required-projects.override-\
checkout on openstack/devstack because Zuul would use that git ref
instead of stable branch defined below to checkout projects of parent
devstack jobs when collecting variants for parent jobs.

Added a warning to the beginning of .zuul.yaml to keep this file in
sync between branches to avoid issues e.g. with job scheduling. Zuul CI
will search in master branch first when collecting job variants during
job freeze which can have unwanted side effects. For example, when
parent job *-base has been changed in stable/1.0.0 branch, Zuul could
still use *-base variants from master branch during job freeze on child
jobs such as *-ussuri-ansible-2.11 etc.

Change-Id: I3ca4ed5795c45a5565a374f04a1ddb29816bf114
This commit is contained in:
Jakob Meng
2022-03-25 09:27:00 +01:00
parent 26bc8a0666
commit 44fa06cba1

View File

@@ -1,23 +1,25 @@
# yamllint disable # yamllint disable
--- ---
# Keep this file in sync between branches to avoid issues e.g. with job scheduling. Zuul CI will search in master branch
# first when collecting job variants during job freeze which can have unwanted side effects. For example, when parent
# job *-base has been changed in stable/1.0.0 branch, Zuul could still use *-base variants from master branch during job
# freeze on child jobs such as *-ussuri-ansible-2.11 etc.
- job: - job:
name: ansible-collections-openstack-functional-devstack name: ansible-collections-openstack-functional-devstack-base
parent: openstacksdk-functional-devstack parent: openstacksdk-functional-devstack
branches: master # Do not restrict branches in base jobs because else Zuul would not find a matching
# parent job variant during job freeze when child jobs are on other branches.
post-run: ci/playbooks/postlog.yaml post-run: ci/playbooks/postlog.yaml
description: | description: |
Run openstack collections functional tests against a master devstack Run openstack collections functional tests against a devstack
using master of openstacksdk with latest ansible release # Do not set job.override-checkout or job.required-projects.override-checkout in base job because
# else Zuul will use this branch when matching variants for parent jobs during job freeze
required-projects: required-projects:
- openstack/ansible-collections-openstack - openstack/ansible-collections-openstack
- openstack/designate - openstack/designate
# openstack/os-client-config is required through job openstacksdk-functional-devstack # openstack/devstack is required through parent job openstacksdk-functional-devstack
- # always use master branch when collecting parent job variants, refer to git blame for rationale. # openstack/os-client-config is required through parent job openstacksdk-functional-devstack
name: openstack/devstack # openstack/openstacksdk is required through parent job openstacksdk-functional-devstack
override-checkout: master
- # always use master branch when collecting parent job variants, refer to git blame for rationale.
name: openstack/openstacksdk
override-checkout: master
irrelevant-files: &ignore_files irrelevant-files: &ignore_files
- changelogs/.* - changelogs/.*
- galaxy.* - galaxy.*
@@ -44,9 +46,17 @@
extensions_to_txt: extensions_to_txt:
log: true log: true
- job:
name: ansible-collections-openstack-functional-devstack
parent: ansible-collections-openstack-functional-devstack-base
branches: master
description: |
Run openstack collections functional tests against a master devstack
using master of openstacksdk with latest ansible release
- job: - job:
name: ansible-collections-openstack-functional-devstack-octavia name: ansible-collections-openstack-functional-devstack-octavia
parent: ansible-collections-openstack-functional-devstack parent: ansible-collections-openstack-functional-devstack-base
branches: master branches: master
description: | description: |
Run openstack collections functional tests against a master devstack Run openstack collections functional tests against a master devstack
@@ -83,7 +93,7 @@
- job: - job:
name: ansible-collections-openstack-functional-devstack-releases name: ansible-collections-openstack-functional-devstack-releases
parent: ansible-collections-openstack-functional-devstack parent: ansible-collections-openstack-functional-devstack-base
branches: master branches: master
description: | description: |
Run openstack collections functional tests against a master devstack Run openstack collections functional tests against a master devstack
@@ -94,7 +104,7 @@
# Job with Ansible 2.9 for checking backward compatibility # Job with Ansible 2.9 for checking backward compatibility
- job: - job:
name: ansible-collections-openstack-functional-devstack-ansible-2.9 name: ansible-collections-openstack-functional-devstack-ansible-2.9
parent: ansible-collections-openstack-functional-devstack parent: ansible-collections-openstack-functional-devstack-base
branches: master branches: master
description: | description: |
Run openstack collections functional tests against a master devstack Run openstack collections functional tests against a master devstack
@@ -107,7 +117,7 @@
- job: - job:
name: ansible-collections-openstack-functional-devstack-ansible-2.11 name: ansible-collections-openstack-functional-devstack-ansible-2.11
parent: ansible-collections-openstack-functional-devstack parent: ansible-collections-openstack-functional-devstack-base
branches: master branches: master
description: | description: |
Run openstack collections functional tests against a master devstack Run openstack collections functional tests against a master devstack
@@ -120,7 +130,7 @@
- job: - job:
name: ansible-collections-openstack-functional-devstack-ansible-2.12 name: ansible-collections-openstack-functional-devstack-ansible-2.12
parent: ansible-collections-openstack-functional-devstack parent: ansible-collections-openstack-functional-devstack-base
branches: master branches: master
description: | description: |
Run openstack collections functional tests against a master devstack Run openstack collections functional tests against a master devstack
@@ -133,7 +143,7 @@
- job: - job:
name: ansible-collections-openstack-functional-devstack-ansible-devel name: ansible-collections-openstack-functional-devstack-ansible-devel
parent: ansible-collections-openstack-functional-devstack parent: ansible-collections-openstack-functional-devstack-base
branches: master branches: master
description: | description: |
Run openstack collections functional tests against a master devstack Run openstack collections functional tests against a master devstack
@@ -147,7 +157,14 @@
- job: - job:
name: ansible-collections-openstack-functional-devstack-xena-ansible-2.12 name: ansible-collections-openstack-functional-devstack-xena-ansible-2.12
parent: ansible-collections-openstack-functional-devstack-ansible-2.12 # Do not inherit from any parent job which does not run for branch stable/1.0.0 because Zuul would dismiss this job
# when collecting parent job variants. For example, when job.branches is set to master in a parent job, then Zuul
# will not match that job when it collects job variants.
#
# Do not inherit from any parent job which sets job.required-projects.override-checkout on openstack/devstack
# because Zuul would use that git ref instead of stable branch defined below to checkout projects of parent devstack
# jobs when collecting variants for parent jobs.
parent: ansible-collections-openstack-functional-devstack-base
description: | description: |
Run openstack collections functional tests against a xena devstack Run openstack collections functional tests against a xena devstack
using xena branch of openstacksdk and stable 2.12 branch of ansible using xena branch of openstacksdk and stable 2.12 branch of ansible
@@ -155,14 +172,29 @@
override-checkout: stable/xena override-checkout: stable/xena
# job.override-checkout will not override job.required-projects.override-checkout in parent jobs # job.override-checkout will not override job.required-projects.override-checkout in parent jobs
required-projects: required-projects:
- name: openstack/devstack - name: github.com/ansible/ansible
override-checkout: stable-2.12
- # Choose parent devstack job from stable/1.0.0 branch instead of non-existing stable/xena branch
name: openstack/ansible-collections-openstack
override-checkout: stable/1.0.0
- # Choose parent devstack job from stable/xena branch
name: openstack/devstack
override-checkout: stable/xena override-checkout: stable/xena
- name: openstack/openstacksdk - name: openstack/openstacksdk
override-checkout: stable/xena override-checkout: stable/xena
vars:
tox_envlist: ansible-2.12
- job: - job:
name: ansible-collections-openstack-functional-devstack-wallaby-ansible-2.12 name: ansible-collections-openstack-functional-devstack-wallaby-ansible-2.12
parent: ansible-collections-openstack-functional-devstack-ansible-2.12 # Do not inherit from any parent job which does not run for branch stable/1.0.0 because Zuul would dismiss this job
# when collecting parent job variants. For example, when job.branches is set to master in a parent job, then Zuul
# will not match that job when it collects job variants.
#
# Do not inherit from any parent job which sets job.required-projects.override-checkout on openstack/devstack
# because Zuul would use that git ref instead of stable branch defined below to checkout projects of parent devstack
# jobs when collecting variants for parent jobs.
parent: ansible-collections-openstack-functional-devstack-base
description: | description: |
Run openstack collections functional tests against a wallaby devstack Run openstack collections functional tests against a wallaby devstack
using wallaby branch of openstacksdk and stable 2.12 branch of ansible using wallaby branch of openstacksdk and stable 2.12 branch of ansible
@@ -170,14 +202,29 @@
override-checkout: stable/wallaby override-checkout: stable/wallaby
# job.override-checkout will not override job.required-projects.override-checkout in parent jobs # job.override-checkout will not override job.required-projects.override-checkout in parent jobs
required-projects: required-projects:
- name: openstack/devstack - name: github.com/ansible/ansible
override-checkout: stable-2.12
- # Choose parent devstack job from stable/1.0.0 branch instead of non-existing stable/wallaby branch
name: openstack/ansible-collections-openstack
override-checkout: stable/1.0.0
- # Choose parent devstack job from stable/wallaby branch
name: openstack/devstack
override-checkout: stable/wallaby override-checkout: stable/wallaby
- name: openstack/openstacksdk - name: openstack/openstacksdk
override-checkout: stable/wallaby override-checkout: stable/wallaby
vars:
tox_envlist: ansible-2.12
- job: - job:
name: ansible-collections-openstack-functional-devstack-victoria-ansible-2.12 name: ansible-collections-openstack-functional-devstack-victoria-ansible-2.12
parent: ansible-collections-openstack-functional-devstack-ansible-2.12 # Do not inherit from any parent job which does not run for branch stable/1.0.0 because Zuul would dismiss this job
# when collecting parent job variants. For example, when job.branches is set to master in a parent job, then Zuul
# will not match that job when it collects job variants.
#
# Do not inherit from any parent job which sets job.required-projects.override-checkout on openstack/devstack
# because Zuul would use that git ref instead of stable branch defined below to checkout projects of parent devstack
# jobs when collecting variants for parent jobs.
parent: ansible-collections-openstack-functional-devstack-base
description: | description: |
Run openstack collections functional tests against a victoria devstack Run openstack collections functional tests against a victoria devstack
using victoria branch of openstacksdk and stable 2.12 branch of ansible using victoria branch of openstacksdk and stable 2.12 branch of ansible
@@ -185,14 +232,29 @@
override-checkout: stable/victoria override-checkout: stable/victoria
# job.override-checkout will not override job.required-projects.override-checkout in parent jobs # job.override-checkout will not override job.required-projects.override-checkout in parent jobs
required-projects: required-projects:
- name: openstack/devstack - name: github.com/ansible/ansible
override-checkout: stable-2.12
- # Choose parent devstack job from stable/1.0.0 branch instead of non-existing stable/victoria branch
name: openstack/ansible-collections-openstack
override-checkout: stable/1.0.0
- # Choose parent devstack job from stable/victoria branch
name: openstack/devstack
override-checkout: stable/victoria override-checkout: stable/victoria
- name: openstack/openstacksdk - name: openstack/openstacksdk
override-checkout: stable/victoria override-checkout: stable/victoria
vars:
tox_envlist: ansible-2.12
- job: - job:
name: ansible-collections-openstack-functional-devstack-ussuri-ansible-2.11 name: ansible-collections-openstack-functional-devstack-ussuri-ansible-2.11
parent: ansible-collections-openstack-functional-devstack-ansible-2.11 # Do not inherit from any parent job which does not run for branch stable/1.0.0 because Zuul would dismiss this job
# when collecting parent job variants. For example, when job.branches is set to master in a parent job, then Zuul
# will not match that job when it collects job variants.
#
# Do not inherit from any parent job which sets job.required-projects.override-checkout on openstack/devstack
# because Zuul would use that git ref instead of stable branch defined below to checkout projects of parent devstack
# jobs when collecting variants for parent jobs.
parent: ansible-collections-openstack-functional-devstack-base
description: | description: |
Run openstack collections functional tests against a ussuri devstack Run openstack collections functional tests against a ussuri devstack
using ussuri branch of openstacksdk and stable 2.11 branch of ansible using ussuri branch of openstacksdk and stable 2.11 branch of ansible
@@ -200,14 +262,29 @@
override-checkout: stable/ussuri override-checkout: stable/ussuri
# job.override-checkout will not override job.required-projects.override-checkout in parent jobs # job.override-checkout will not override job.required-projects.override-checkout in parent jobs
required-projects: required-projects:
- name: openstack/devstack - name: github.com/ansible/ansible
override-checkout: stable-2.11
- # Choose parent devstack job from stable/1.0.0 branch instead of non-existing stable/ussuri branch
name: openstack/ansible-collections-openstack
override-checkout: stable/1.0.0
- # Choose parent devstack job from stable/ussuri branch
name: openstack/devstack
override-checkout: stable/ussuri override-checkout: stable/ussuri
- name: openstack/openstacksdk - name: openstack/openstacksdk
override-checkout: stable/ussuri override-checkout: stable/ussuri
vars:
tox_envlist: ansible-2.11
- job: - job:
name: ansible-collections-openstack-functional-devstack-train-ansible-2.11 name: ansible-collections-openstack-functional-devstack-train-ansible-2.11
parent: ansible-collections-openstack-functional-devstack-ansible-2.11 # Do not inherit from any parent job which does not run for branch stable/1.0.0 because Zuul would dismiss this job
# when collecting parent job variants. For example, when job.branches is set to master in a parent job, then Zuul
# will not match that job when it collects job variants.
#
# Do not inherit from any parent job which sets job.required-projects.override-checkout on openstack/devstack
# because Zuul would use that git ref instead of stable branch defined below to checkout projects of parent devstack
# jobs when collecting variants for parent jobs.
parent: ansible-collections-openstack-functional-devstack-base
description: | description: |
Run openstack collections functional tests against a train devstack Run openstack collections functional tests against a train devstack
using train branch of openstacksdk and stable 2.11 branch of ansible using train branch of openstacksdk and stable 2.11 branch of ansible
@@ -215,14 +292,29 @@
override-checkout: stable/train override-checkout: stable/train
# job.override-checkout will not override job.required-projects.override-checkout in parent jobs # job.override-checkout will not override job.required-projects.override-checkout in parent jobs
required-projects: required-projects:
- name: openstack/devstack - name: github.com/ansible/ansible
override-checkout: stable-2.11
- # Choose parent devstack job from stable/1.0.0 branch instead of non-existing stable/train branch
name: openstack/ansible-collections-openstack
override-checkout: stable/1.0.0
- # Choose parent devstack job from stable/train branch
name: openstack/devstack
override-checkout: stable/train override-checkout: stable/train
- name: openstack/openstacksdk - name: openstack/openstacksdk
override-checkout: stable/train override-checkout: stable/train
vars:
tox_envlist: ansible-2.11
- job: - job:
name: ansible-collections-openstack-functional-devstack-queens-ansible-2.11 name: ansible-collections-openstack-functional-devstack-queens-ansible-2.11
parent: ansible-collections-openstack-functional-devstack-ansible-2.11 # Do not inherit from any parent job which does not run for branch stable/1.0.0 because Zuul would dismiss this job
# when collecting parent job variants. For example, when job.branches is set to master in a parent job, then Zuul
# will not match that job when it collects job variants.
#
# Do not inherit from any parent job which sets job.required-projects.override-checkout on openstack/devstack
# because Zuul would use that git ref instead of stable branch defined below to checkout projects of parent devstack
# jobs when collecting variants for parent jobs.
parent: ansible-collections-openstack-functional-devstack-base
description: | description: |
Run openstack collections functional tests against a queens devstack Run openstack collections functional tests against a queens devstack
using train branch of openstacksdk and stable 2.11 branch of ansible using train branch of openstacksdk and stable 2.11 branch of ansible
@@ -230,11 +322,19 @@
override-checkout: stable/queens override-checkout: stable/queens
# job.override-checkout will not override job.required-projects.override-checkout in parent jobs # job.override-checkout will not override job.required-projects.override-checkout in parent jobs
required-projects: required-projects:
- name: openstack/devstack - name: github.com/ansible/ansible
override-checkout: stable-2.11
- # Choose parent devstack job from stable/1.0.0 branch instead of non-existing stable/queens branch
name: openstack/ansible-collections-openstack
override-checkout: stable/1.0.0
- # Choose parent devstack job from stable/queens branch
name: openstack/devstack
override-checkout: stable/queens override-checkout: stable/queens
- name: openstack/openstacksdk - name: openstack/openstacksdk
# Run queens with highest possible py2 version of SDK # Run queens with highest possible py2 version of SDK
override-checkout: stable/train override-checkout: stable/train
vars:
tox_envlist: ansible-2.11
# Linters # Linters
- job: - job: