From 749f04bcfb47684b3d24e5f70fd47dbdf74a908b Mon Sep 17 00:00:00 2001 From: Jakob Meng Date: Fri, 25 Mar 2022 10:17:23 +0100 Subject: [PATCH] Added job variants for stable/1.0.0 branch to Zuul CI config Releases of OpenStack SDK on PyPI will soon switch to the 1.*.* series which our stable/1.0.0 branch is incompatible with. Previously, in commit 0f532d10f3, several jobs have been changed to run on master branch only. This patch adds siblings jobs for our stable/1.0.0 branch which pull the latest SDK releases of the 0.*.* series from PyPI instead. Ref.: https://opendev.org/openstack/ansible-collections-openstack/commit/0f532d10f373a3c6cf26be09045da5a934214729 Change-Id: Iefc6acfa4c25eb5d9ab062a3bfa655be2188cb77 --- .zuul.yaml | 122 +++++++++++++++++-- tests/pip-constraints-none.txt | 1 + tests/pip-constraints-openstacksdk-0.x.x.txt | 1 + tox.ini | 9 ++ 4 files changed, 125 insertions(+), 8 deletions(-) create mode 100644 tests/pip-constraints-none.txt create mode 100644 tests/pip-constraints-openstacksdk-0.x.x.txt diff --git a/.zuul.yaml b/.zuul.yaml index 67f0d782..ff229ebb 100644 --- a/.zuul.yaml +++ b/.zuul.yaml @@ -55,14 +55,15 @@ using master of openstacksdk with latest ansible release - job: - name: ansible-collections-openstack-functional-devstack-octavia + name: ansible-collections-openstack-functional-devstack-octavia-base parent: ansible-collections-openstack-functional-devstack-base - 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. description: | - Run openstack collections functional tests against a master devstack - with Octavia plugin enabled, using releases of openstacksdk and latest - ansible release. Run it only on Load Balancer changes. + Run openstack collections functional tests against a devstack with Octavia plugin enabled pre-run: ci/playbooks/get_amphora_tarball.yaml + # 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: - openstack/octavia files: @@ -91,16 +92,63 @@ OCTAVIA_AMP_IMAGE_SIZE: 3 OCTAVIA_AMP_IMAGE_NAME: "test-only-amphora-x64-haproxy-ubuntu-bionic" +- job: + name: ansible-collections-openstack-functional-devstack-octavia + parent: ansible-collections-openstack-functional-devstack-octavia-base + branches: master + description: | + Run openstack collections functional tests against a master devstack + with Octavia plugin enabled, using latest releases of openstacksdk + and latest ansible release. Run it only on Load Balancer changes. + +- job: + name: ansible-collections-openstack-functional-devstack-octavia + parent: ansible-collections-openstack-functional-devstack-octavia-base + branches: stable/1.0.0 + description: | + Run openstack collections functional tests against a master devstack + with Octavia plugin enabled, using 0.*.* releases of openstacksdk + and latest ansible release. Run it only on Load Balancer changes. + required-projects: + - # Choose parent devstack job from master branch instead of non-existing stable/1.0.0 branch + name: openstack/devstack + override-checkout: master + - # Choose parent devstack job from master branch instead of non-existing stable/1.0.0 branch + name: openstack/openstacksdk + override-checkout: master + vars: + tox_constraints_file: '{{ ansible_user_dir }}/{{ zuul.project.src_dir }}/tests/pip-constraints-openstacksdk-0.x.x.txt' + - job: name: ansible-collections-openstack-functional-devstack-releases parent: ansible-collections-openstack-functional-devstack-base branches: master description: | Run openstack collections functional tests against a master devstack - using releases of openstacksdk and latest ansible release + using latest releases of openstacksdk and latest ansible release vars: tox_install_siblings: false +- job: + name: ansible-collections-openstack-functional-devstack-releases + parent: ansible-collections-openstack-functional-devstack-base + branches: stable/1.0.0 + description: | + Run openstack collections functional tests against a master devstack + using 0.*.* releases of openstacksdk and latest ansible release + required-projects: + - name: github.com/ansible/ansible + override-checkout: stable-2.9 + - # Choose parent devstack job from master branch instead of non-existing stable/1.0.0 branch + name: openstack/devstack + override-checkout: master + - # Choose parent devstack job from master branch instead of non-existing stable/1.0.0 branch + name: openstack/openstacksdk + override-checkout: master + vars: + tox_constraints_file: '{{ ansible_user_dir }}/{{ zuul.project.src_dir }}/tests/pip-constraints-openstacksdk-0.x.x.txt' + tox_install_siblings: false + # Job with Ansible 2.9 for checking backward compatibility - job: name: ansible-collections-openstack-functional-devstack-ansible-2.9 @@ -109,12 +157,32 @@ description: | Run openstack collections functional tests against a master devstack using master of openstacksdk and stable 2.9 branch of ansible + voting: false required-projects: - name: github.com/ansible/ansible override-checkout: stable-2.9 vars: tox_envlist: ansible-2.9 +- job: + name: ansible-collections-openstack-functional-devstack-ansible-2.9 + parent: ansible-collections-openstack-functional-devstack-base + branches: stable/1.0.0 + description: | + Run openstack collections functional tests against a master devstack + using 0.*.* releases of openstacksdk and stable 2.9 branch of ansible + required-projects: + - name: github.com/ansible/ansible + override-checkout: stable-2.9 + - # Choose parent devstack job from master branch instead of non-existing stable/1.0.0 branch + name: openstack/devstack + override-checkout: master + - name: openstack/openstacksdk + # Yoga has the latest SDK release of the 0.*.* series atm + override-checkout: stable/yoga + vars: + tox_envlist: ansible-2.9 + - job: name: ansible-collections-openstack-functional-devstack-ansible-2.11 parent: ansible-collections-openstack-functional-devstack-base @@ -122,12 +190,32 @@ description: | Run openstack collections functional tests against a master devstack using master of openstacksdk and stable 2.12 branch of ansible + voting: false required-projects: - name: github.com/ansible/ansible override-checkout: stable-2.11 vars: tox_envlist: ansible-2.11 +- job: + name: ansible-collections-openstack-functional-devstack-ansible-2.11 + parent: ansible-collections-openstack-functional-devstack-base + branches: stable/1.0.0 + description: | + Run openstack collections functional tests against a master devstack + using 0.*.* releases of openstacksdk and stable 2.12 branch of ansible + required-projects: + - name: github.com/ansible/ansible + override-checkout: stable-2.11 + - # Choose parent devstack job from master branch instead of non-existing stable/1.0.0 branch + name: openstack/devstack + override-checkout: master + - name: openstack/openstacksdk + # Yoga has the latest SDK release of the 0.*.* series atm + override-checkout: stable/yoga + vars: + tox_envlist: ansible-2.11 + - job: name: ansible-collections-openstack-functional-devstack-ansible-2.12 parent: ansible-collections-openstack-functional-devstack-base @@ -135,12 +223,32 @@ description: | Run openstack collections functional tests against a master devstack using master of openstacksdk and stable 2.12 branch of ansible + voting: false required-projects: - name: github.com/ansible/ansible override-checkout: stable-2.12 vars: tox_envlist: ansible-2.12 +- job: + name: ansible-collections-openstack-functional-devstack-ansible-2.12 + parent: ansible-collections-openstack-functional-devstack-base + branches: stable/1.0.0 + description: | + Run openstack collections functional tests against a master devstack + using 0.*.* releases of openstacksdk and stable 2.12 branch of ansible + required-projects: + - name: github.com/ansible/ansible + override-checkout: stable-2.12 + - # Choose parent devstack job from master branch instead of non-existing stable/1.0.0 branch + name: openstack/devstack + override-checkout: master + - name: openstack/openstacksdk + # Yoga has the latest SDK release of the 0.*.* series atm + override-checkout: stable/yoga + vars: + tox_envlist: ansible-2.12 + - job: name: ansible-collections-openstack-functional-devstack-ansible-devel parent: ansible-collections-openstack-functional-devstack-base @@ -517,10 +625,8 @@ dependencies: *deps_unit_lint - ansible-collections-openstack-functional-devstack-ansible-2.9: dependencies: *deps_unit_lint - voting: false - ansible-collections-openstack-functional-devstack-ansible-2.12: dependencies: *deps_unit_lint - voting: false - ansible-collections-openstack-functional-devstack-ansible-devel: dependencies: *deps_unit_lint - ansible-collections-openstack-functional-devstack-xena-ansible-2.12: diff --git a/tests/pip-constraints-none.txt b/tests/pip-constraints-none.txt new file mode 100644 index 00000000..b0ebbdc5 --- /dev/null +++ b/tests/pip-constraints-none.txt @@ -0,0 +1 @@ +# No constraints are defined by default diff --git a/tests/pip-constraints-openstacksdk-0.x.x.txt b/tests/pip-constraints-openstacksdk-0.x.x.txt new file mode 100644 index 00000000..4bd96357 --- /dev/null +++ b/tests/pip-constraints-openstacksdk-0.x.x.txt @@ -0,0 +1 @@ +openstacksdk<1.0.0 diff --git a/tox.ini b/tox.ini index ecf1e1bb..5ed80b98 100644 --- a/tox.ini +++ b/tox.ini @@ -21,6 +21,7 @@ setenv = OS_STDERR_CAPTURE={env:OS_STDERR_CAPTURE:true} pip: PIP_INSTALL={env:PIP_INSTALL:true} deps = + -c{env:TOX_CONSTRAINTS_FILE:{toxinidir}/tests/pip-constraints-none.txt} -r{toxinidir}/test-requirements.txt pip: {toxinidir} @@ -57,22 +58,26 @@ commands = passenv = {[testenv:linters]passenv} commands = {[testenv:linters]commands} deps = + -c{env:TOX_CONSTRAINTS_FILE:{toxinidir}/tests/pip-constraints-none.txt} -r{toxinidir}/test-requirements-2.9.txt [testenv:linters-2.11] passenv = {[testenv:linters]passenv} commands = {[testenv:linters]commands} deps = + -c{env:TOX_CONSTRAINTS_FILE:{toxinidir}/tests/pip-constraints-none.txt} -r{toxinidir}/test-requirements-2.11.txt [testenv:linters-2.12] passenv = {[testenv:linters]passenv} commands = {[testenv:linters]commands} deps = + -c{env:TOX_CONSTRAINTS_FILE:{toxinidir}/tests/pip-constraints-none.txt} -r{toxinidir}/test-requirements-2.12.txt [testenv:venv] deps = + -c{env:TOX_CONSTRAINTS_FILE:{toxinidir}/tests/pip-constraints-none.txt} -r{toxinidir}/test-requirements.txt commands = {posargs} @@ -101,6 +106,7 @@ commands = # PIP job runs with Ansible-2.9 [testenv:ansible-pip] deps = + -c{env:TOX_CONSTRAINTS_FILE:{toxinidir}/tests/pip-constraints-none.txt} -r{toxinidir}/test-requirements-2.9.txt {toxinidir} passenv = {[testenv:ansible]passenv} @@ -108,18 +114,21 @@ commands = {[testenv:ansible]commands} [testenv:ansible-2.9] deps = + -c{env:TOX_CONSTRAINTS_FILE:{toxinidir}/tests/pip-constraints-none.txt} -r{toxinidir}/test-requirements-2.9.txt passenv = {[testenv:ansible]passenv} commands = {[testenv:ansible]commands} [testenv:ansible-2.11] deps = + -c{env:TOX_CONSTRAINTS_FILE:{toxinidir}/tests/pip-constraints-none.txt} -r{toxinidir}/test-requirements-2.11.txt passenv = {[testenv:ansible]passenv} commands = {[testenv:ansible]commands} [testenv:ansible-2.12] deps = + -c{env:TOX_CONSTRAINTS_FILE:{toxinidir}/tests/pip-constraints-none.txt} -r{toxinidir}/test-requirements-2.12.txt passenv = {[testenv:ansible]passenv} commands = {[testenv:ansible]commands}