Rework zuul config

Current zuul.yaml file is simply way to big to be able to navigate in it
easily. We are going to add some more acceptance jobs which bring quite
big secrets and this will make it even less maintainable.

Split .zuul.yaml into few zuul.d/* entries using Zuul capability to have
few "project" entries and get them merged.

Change-Id: I9c6a85d4d6f1cdfcb5a339bca4293d54d5cf8746
This commit is contained in:
Artem Goncharov 2023-03-31 09:59:52 +02:00
parent 50711b4662
commit b0d98dbba1
4 changed files with 159 additions and 168 deletions

View File

@ -0,0 +1,77 @@
---
- job:
name: openstacksdk-acceptance-base
parent: openstack-tox
description: |
Acceptance test of the OpenStackSDK on real clouds.
.. zuul:jobsvar::openstack_credentials
:type: dict
This is expected to be a Zuul Secret with these keys:
.. zuul:jobvar: auth
:type: dict
Dictionary with authentication information with mandatory auth_url
and others. The structure mimics `clouds.yaml` structure.
By default all jobs that inherit from here are non voting.
attempts: 1
voting: false
pre-run:
- playbooks/acceptance/pre.yaml
post-run:
- playbooks/acceptance/post.yaml
vars:
tox_envlist: acceptance-regular-user
tox_environment:
OPENSTACKSDK_DEMO_CLOUD: acceptance
OS_CLOUD: acceptance
OS_TEST_CLOUD: acceptance
# Acceptance tests for devstack are different from running for real cloud since
# we need to actually deploy devstack first and API is available only on the
# devstack host.
- job:
name: openstacksdk-acceptance-devstack
parent: openstacksdk-functional-devstack
description: Acceptance test of the OpenStackSDK on real clouds.
attempts: 1
run:
- playbooks/acceptance/run-with-devstack.yaml
post-run:
- playbooks/acceptance/post.yaml
vars:
tox_envlist: acceptance-regular-user
tox_environment:
OPENSTACKSDK_DEMO_CLOUD: acceptance
OS_CLOUD: acceptance
OS_TEST_CLOUD: acceptance
auth_url: "https://{{ hostvars['controller']['nodepool']['private_ipv4'] }}/identity"
secrets:
- secret: credentials-devstack
name: openstack_credentials
# Devstack secret is not specifying auth_url because of how Zuul treats secrets.
# Auth_url comes extra in the job vars and is being used if no auth_url in the
# secret is present.
- secret:
name: credentials-devstack
data:
auth:
username: demo
password: secretadmin
project_domain_id: default
project_name: demo
user_domain_id: default
region_name: RegionOne
verify: false
# We define additional project entity not to handle acceptance jobs in
# already complex enough general project entity.
- project:
post-review:
jobs:
- openstacksdk-acceptance-devstack

View File

@ -1,27 +1,5 @@
- job:
name: openstacksdk-tox-py38-tips
parent: openstack-tox-py38
description: |
Run tox python 38 unittests against master of important libs
vars:
tox_install_siblings: true
zuul_work_dir: src/opendev.org/openstack/openstacksdk
# openstacksdk in required-projects so that osc and keystoneauth
# can add the job as well
required-projects:
- openstack/keystoneauth
- openstack/openstacksdk
- openstack/os-client-config
- project-template:
name: openstacksdk-tox-tips
check:
jobs:
- openstacksdk-tox-py38-tips
gate:
jobs:
- openstacksdk-tox-py38-tips
---
# Definitions of functional jobs
- job:
name: openstacksdk-functional-devstack-minimum
parent: devstack-tox-functional
@ -417,95 +395,6 @@
OPENSTACKSDK_HAS_MANILA: 1
OPENSTACKSDK_TESTS_SUBDIR: shared_file_system
- job:
name: metalsmith-integration-openstacksdk-src
parent: metalsmith-integration-glance-netboot-cirros-direct
required-projects:
- openstack/openstacksdk
- job:
name: bifrost-integration-openstacksdk-src
parent: bifrost-integration-tinyipa-ubuntu-focal
required-projects:
- openstack/ansible-collections-openstack
- openstack/openstacksdk
- job:
name: ironic-inspector-tempest-openstacksdk-src
parent: ironic-inspector-tempest
required-projects:
- openstack/openstacksdk
- job:
name: openstacksdk-acceptance-base
parent: openstack-tox
description: |
Acceptance test of the OpenStackSDK on real clouds.
.. zuul:jobsvar::openstack_credentials
:type: dict
This is expected to be a Zuul Secret with these keys:
.. zuul:jobvar: auth
:type: dict
Dictionary with authentication information with mandatory auth_url
and others. The structure mimics `clouds.yaml` structure.
By default all jobs that inherit from here are non voting.
attempts: 1
voting: false
pre-run:
- playbooks/acceptance/pre.yaml
post-run:
- playbooks/acceptance/post.yaml
vars:
tox_envlist: acceptance-regular-user
tox_environment:
OPENSTACKSDK_DEMO_CLOUD: acceptance
OS_CLOUD: acceptance
OS_TEST_CLOUD: acceptance
# Acceptance tests for devstack are different from running for real cloud since
# we need to actually deploy devstack first and API is available only on the
# devstack host.
- job:
name: openstacksdk-acceptance-devstack
parent: openstacksdk-functional-devstack
description: Acceptance test of the OpenStackSDK on real clouds.
attempts: 1
run:
- playbooks/acceptance/run-with-devstack.yaml
post-run:
- playbooks/acceptance/post.yaml
vars:
tox_envlist: acceptance-regular-user
tox_environment:
OPENSTACKSDK_DEMO_CLOUD: acceptance
OS_CLOUD: acceptance
OS_TEST_CLOUD: acceptance
auth_url: "https://{{ hostvars['controller']['nodepool']['private_ipv4'] }}/identity"
secrets:
- secret: credentials-devstack
name: openstack_credentials
# Devstack secret is not specifying auth_url because of how Zuul treats secrets.
# Auth_url comes extra in the job vars and is being used if no auth_url in the
# secret is present.
- secret:
name: credentials-devstack
data:
auth:
username: demo
password: secretadmin
project_domain_id: default
project_name: demo
user_domain_id: default
region_name: RegionOne
verify: false
- project-template:
name: openstacksdk-functional-tips
check:
@ -514,58 +403,3 @@
gate:
jobs:
- openstacksdk-functional-devstack-tips
- project:
templates:
- check-requirements
- openstack-python3-antelope-jobs
- openstacksdk-functional-tips
- openstacksdk-tox-tips
- os-client-config-tox-tips
- osc-tox-unit-tips
- publish-openstack-docs-pti
- release-notes-jobs-python3
check:
jobs:
- opendev-buildset-registry
- nodepool-build-image-siblings:
voting: false
- dib-nodepool-functional-openstack-centos-8-stream-src:
voting: false
- openstacksdk-functional-devstack
- openstacksdk-functional-devstack-networking
- openstacksdk-functional-devstack-senlin
- openstacksdk-functional-devstack-magnum:
voting: false
- openstacksdk-functional-devstack-manila:
voting: false
- openstacksdk-functional-devstack-masakari:
voting: false
- openstacksdk-functional-devstack-ironic:
voting: false
- openstacksdk-functional-devstack-legacy:
voting: false
- osc-functional-devstack-tips:
voting: false
# Ironic jobs, non-voting to avoid tight coupling
- ironic-inspector-tempest-openstacksdk-src:
voting: false
- bifrost-integration-openstacksdk-src:
voting: false
- metalsmith-integration-openstacksdk-src:
voting: false
- ansible-collections-openstack-functional-devstack:
voting: false
post-review:
jobs:
- openstacksdk-acceptance-devstack
gate:
jobs:
- opendev-buildset-registry
- nodepool-build-image-siblings:
voting: false
- dib-nodepool-functional-openstack-centos-8-stream-src:
voting: false
- openstacksdk-functional-devstack
- openstacksdk-functional-devstack-networking
- openstacksdk-functional-devstack-senlin

32
zuul.d/metal-jobs.yaml Normal file
View File

@ -0,0 +1,32 @@
---
# Definitions of Ironic based jobs with a dedicated project entry to keep them
# out of general entry.
- job:
name: metalsmith-integration-openstacksdk-src
parent: metalsmith-integration-glance-netboot-cirros-direct
required-projects:
- openstack/openstacksdk
- job:
name: bifrost-integration-openstacksdk-src
parent: bifrost-integration-tinyipa-ubuntu-focal
required-projects:
- openstack/ansible-collections-openstack
- openstack/openstacksdk
- job:
name: ironic-inspector-tempest-openstacksdk-src
parent: ironic-inspector-tempest
required-projects:
- openstack/openstacksdk
- project:
check:
jobs:
# Ironic jobs, non-voting to avoid tight coupling
- ironic-inspector-tempest-openstacksdk-src:
voting: false
- bifrost-integration-openstacksdk-src:
voting: false
- metalsmith-integration-openstacksdk-src:
voting: false

48
zuul.d/project.yaml Normal file
View File

@ -0,0 +1,48 @@
---
# Central project entity. It pulls general templates and basic jobs.
# functional-jobs, metal-jobs and acceptance-jobs are being
# merged with this entity into singe one.
- project:
templates:
- check-requirements
- openstack-python3-antelope-jobs
- openstacksdk-functional-tips
- openstacksdk-tox-tips
- os-client-config-tox-tips
- osc-tox-unit-tips
- publish-openstack-docs-pti
- release-notes-jobs-python3
check:
jobs:
- opendev-buildset-registry
- nodepool-build-image-siblings:
voting: false
- dib-nodepool-functional-openstack-centos-8-stream-src:
voting: false
- openstacksdk-functional-devstack
- openstacksdk-functional-devstack-networking
- openstacksdk-functional-devstack-senlin
- openstacksdk-functional-devstack-magnum:
voting: false
- openstacksdk-functional-devstack-manila:
voting: false
- openstacksdk-functional-devstack-masakari:
voting: false
- openstacksdk-functional-devstack-ironic:
voting: false
- openstacksdk-functional-devstack-legacy:
voting: false
- osc-functional-devstack-tips:
voting: false
- ansible-collections-openstack-functional-devstack:
voting: false
gate:
jobs:
- opendev-buildset-registry
- nodepool-build-image-siblings:
voting: false
- dib-nodepool-functional-openstack-centos-8-stream-src:
voting: false
- openstacksdk-functional-devstack
- openstacksdk-functional-devstack-networking
- openstacksdk-functional-devstack-senlin