
This adds support for Ansible 5. As mentioned in the reno, only the major version is specified; that corresponds to major.minor in Ansible core, so is approximately equivalent to our current regime. The command module is updated to be based on the current code in ansible core 2.12.4 (corresponding to community 5.6.0). The previous version is un-symlinked and copied to the 2.8 and 2.8 directories for easy deletion as they age out. The new command module has corrected a code path we used to test that the zuul_stream module handles python exceptions in modules, so instead we now take advantage of the ability to load playbook-adjacent modules to add a test fixture module that always raises an exception. The zuul stream functional test validation is adjusted to match the new values. Similarly, in test_command in the remote tests, we relied on that behavior, but there is already a test for module exceptions in test_module_exception, so that check is simply removed. Among our Ansible version tests, we occasionally had tests which exercised 2.8 but not 2.9 because it is the default and is otherwise tested. This change adds explicit tests for 2.9 even if they are redundant in order to make future Ansible version updates easier and more mechanical (we don't need to remember to add 2.9 later when we change the default). This is our first version of Ansible where the value of job.ansible-version could be interpreted as an integer, so the configloader is updated to handle that possibility transparently, as it already does for floating point values. Change-Id: I694b979077d7944b4b365dbd8c72aba3f9807329
366 lines
11 KiB
YAML
366 lines
11 KiB
YAML
- nodeset:
|
|
name: zuul-functional-temp-master
|
|
nodes:
|
|
# python_path in playbooks/zuul-stream/functional.yaml and
|
|
# callback_plugins in playbooks/zuul-stream/templates/ansible.cfg.j2
|
|
# need their python versions updated when these labels change to
|
|
# a platform that uses a different python version.
|
|
- name: controller
|
|
label: ubuntu-focal
|
|
- name: node1
|
|
label: ubuntu-focal
|
|
- name: node2
|
|
label: ubuntu-focal
|
|
groups:
|
|
- name: node
|
|
nodes:
|
|
- node1
|
|
- node2
|
|
|
|
- job:
|
|
name: zuul-stream-functional
|
|
parent: multinode
|
|
nodeset: zuul-functional-temp-master
|
|
pre-run: playbooks/zuul-stream/pre.yaml
|
|
run: playbooks/zuul-stream/functional.yaml
|
|
post-run:
|
|
- playbooks/zuul-stream/post.yaml
|
|
files:
|
|
- zuul/ansible/.*
|
|
- zuul/lib/ansible*
|
|
- playbooks/zuul-stream/.*
|
|
|
|
- job:
|
|
name: zuul-stream-functional-2.8
|
|
parent: zuul-stream-functional
|
|
# Force executor to use same Ansible version as "controller" node so
|
|
# that the inventory.yaml file will be correct for that version.
|
|
ansible-version: 2.8
|
|
vars:
|
|
zuul_ansible_version: 2.8
|
|
|
|
- job:
|
|
name: zuul-stream-functional-2.9
|
|
parent: zuul-stream-functional
|
|
vars:
|
|
zuul_ansible_version: 2.9
|
|
|
|
- job:
|
|
name: zuul-stream-functional-5
|
|
parent: zuul-stream-functional
|
|
vars:
|
|
zuul_ansible_version: 5
|
|
|
|
- job:
|
|
name: zuul-tox
|
|
description: |
|
|
Zuul unit tests with ZooKeeper running
|
|
parent: tox
|
|
nodeset: ubuntu-focal
|
|
pre-run: playbooks/zuul-tox/pre.yaml
|
|
post-run: playbooks/zuul-tox/post-system-logs.yaml
|
|
vars:
|
|
tox_environment:
|
|
ZUUL_ZK_CA: /opt/zookeeper/ca/certs/cacert.pem
|
|
ZUUL_ZK_CERT: /opt/zookeeper/ca/certs/client.pem
|
|
ZUUL_ZK_KEY: /opt/zookeeper/ca/keys/clientkey.pem
|
|
ZUUL_TEST_ROOT: /tmp/zuul-test
|
|
YARN_REGISTRY: "https://{{ zuul_site_mirror_fqdn }}:4443/registry.npmjs"
|
|
test_setup_environment:
|
|
ZUUL_TEST_ROOT: /tmp/zuul-test
|
|
YARN_REGISTRY: "https://{{ zuul_site_mirror_fqdn }}:4443/registry.npmjs"
|
|
|
|
- job:
|
|
name: zuul-tox-remote
|
|
parent: tox
|
|
timeout: 2700 # 45 minutes
|
|
pre-run: playbooks/zuul-tox/pre.yaml
|
|
post-run: playbooks/zuul-tox/post-system-logs.yaml
|
|
vars:
|
|
tox_envlist: remote
|
|
tox_environment:
|
|
ZUUL_ZK_CA: /opt/zookeeper/ca/certs/cacert.pem
|
|
ZUUL_ZK_CERT: /opt/zookeeper/ca/certs/client.pem
|
|
ZUUL_ZK_KEY: /opt/zookeeper/ca/keys/clientkey.pem
|
|
ZUUL_SSH_KEY: /home/zuul/.ssh/id_rsa
|
|
ZUUL_REMOTE_IPV4: "{{ nodepool.interface_ip }}"
|
|
ZUUL_REMOTE_KEEP: "true"
|
|
|
|
- job:
|
|
name: zuul-tox-zuul-client
|
|
parent: zuul-tox
|
|
description: |
|
|
Test that Zuul and zuul-client work together.
|
|
required-projects:
|
|
- zuul/zuul
|
|
- zuul/zuul-client
|
|
vars:
|
|
zuul_work_dir: "{{ zuul.projects['opendev.org/zuul/zuul'].src_dir }}"
|
|
tox_envlist: zuul_client
|
|
|
|
- job:
|
|
name: zuul-tox-py39
|
|
parent: zuul-tox
|
|
timeout: 5400 # 90 minutes
|
|
vars:
|
|
tox_envlist: py39
|
|
python_version: 3.9
|
|
|
|
- job:
|
|
name: zuul-tox-py38
|
|
parent: zuul-tox
|
|
timeout: 5400 # 90 minutes
|
|
vars:
|
|
tox_envlist: py38
|
|
python_version: 3.8
|
|
|
|
- job:
|
|
name: zuul-tox-py39-multi-scheduler
|
|
parent: zuul-tox-py39
|
|
voting: false
|
|
vars:
|
|
tox_environment:
|
|
ZUUL_SCHEDULER_COUNT: 2
|
|
|
|
- job:
|
|
name: zuul-build-dashboard
|
|
parent: build-javascript-deployment
|
|
description: |
|
|
Builds the zuul dashboard without an overridden API URL.
|
|
files: &zuul_build_dashboard_files
|
|
- web/.*
|
|
- playbooks/dashboard/.*
|
|
vars:
|
|
javascript_content_dir: "build"
|
|
zuul_work_dir: "{{ zuul.project.src_dir }}/web"
|
|
create_tarball_directory: build
|
|
run: playbooks/dashboard/run.yaml
|
|
|
|
- job:
|
|
name: zuul-build-dashboard-openstack-whitelabel
|
|
parent: zuul-build-dashboard
|
|
description: |
|
|
Builds the zuul dashboard with API URL pointing to
|
|
https://zuul.openstack.org, which tests whitelabeled
|
|
deployments.
|
|
vars:
|
|
zuul_api_url: https://zuul.openstack.org
|
|
|
|
- job:
|
|
name: zuul-build-dashboard-software-factory
|
|
parent: zuul-build-dashboard
|
|
description: |
|
|
Builds the zuul dashboard with API URL pointing to
|
|
https://softwarefactory-project.io/zuul, which tests
|
|
multi-tenant deployments on a suburl, as well as letting
|
|
us check that dashboard changes won't break the
|
|
softwarefactory service.
|
|
vars:
|
|
zuul_api_url: https://softwarefactory-project.io/zuul
|
|
|
|
- job:
|
|
name: zuul-build-dashboard-opendev
|
|
parent: zuul-build-dashboard
|
|
description: |
|
|
Builds the zuul dashboard with API URL pointing to
|
|
https://zuul.opendev.org, which tests multi-tenant
|
|
deployments not on a suburl, as well as letting us
|
|
check that dashboard changes won't break the
|
|
OpenDev service.
|
|
vars:
|
|
zuul_api_url: https://zuul.opendev.org
|
|
|
|
# This job is run on changes to both Zuul and Nodepool; any changes to
|
|
# the other project will be picked up via image builds which appear in
|
|
# the buildset registry. It includes zuul as a required project
|
|
# because that is where the docker-compose file is located.
|
|
- job:
|
|
name: zuul-quick-start
|
|
parent: opendev-buildset-registry-consumer
|
|
description: Run the commands in the Zuul tutorial quick-start documentation.
|
|
pre-run: playbooks/tutorial/pre.yaml
|
|
run: playbooks/tutorial/run.yaml
|
|
post-run: playbooks/tutorial/post.yaml
|
|
required-projects:
|
|
- zuul/zuul
|
|
|
|
# Image building jobs
|
|
- secret:
|
|
name: zuul-dockerhub
|
|
data:
|
|
username: zuulzuul
|
|
password: !encrypted/pkcs1-oaep
|
|
- DFlbrDM5eUMptMGIVMXV1g455xOJLi92UYF08Z2/JlIGu3t6v052o9FKlVyj1ZmpXs5+2
|
|
JTa5jHkLTvTsYs9fCaNcQc2nmViCyWNlbOMzjB17uiZOaYFNs1sMqZcUZbGEz7Y8ds6Qq
|
|
NBXI10jWFPTah4QxUuBvUbT3vmjnUToCzexl5ZGhKgijcnROWfUsnlCdugpgoNIcPsUki
|
|
zty5FotDihnrC8n8vIomVK6EClY38ty97pLrADzFDd+Cos/OUlvi2xooUhzx8Bn020rJA
|
|
lqEU5v8LGXp5QkHx0MSDx6JY6KppJ/4p/yM+4By6l+A20zdcimxmgiNc9rMWPwDj7xsao
|
|
m7NAZWmWqOO0Xkhgt6WOfugwgt9X46sgs2+yDEfbnI5ok8uRbAB/4FWj/KdpyXwhcf+O2
|
|
wEfhxLwDbAoGONQPjb4YcZmCXtmR7Qe5t+n2jyczWXvrbaBDUQP5a+YtVNN/xhmQ7D740
|
|
POlxv7bLxJAixzqaQ3d8Rz9ZEv6zzRuhWph32UQtZ1JxSNww+EvmXm2eEi2Q2z6pT1Cx/
|
|
j2OrFyA2GL/UJOVb15VHKF6bgHPHWJtpjPFhqdcvBhVute4BWB+KPcWH+y+apHN1enK3H
|
|
tNJO9iqm34nKwSuj5ExmFw50LtwR5/9FyRuRPq/vBL+8y82v8FDmeYsBeobn5M=
|
|
|
|
- job:
|
|
name: zuul-build-image
|
|
parent: opendev-build-docker-image
|
|
description: Build Docker images.
|
|
allowed-projects: zuul/zuul
|
|
timeout: 2700 # 45 minutes
|
|
requires:
|
|
- python-builder-3.8-bullseye-container-image
|
|
- python-base-3.8-bullseye-container-image
|
|
provides: zuul-container-image
|
|
vars: &zuul_image_vars
|
|
docker_images:
|
|
- context: .
|
|
repository: zuul/zuul
|
|
target: zuul
|
|
tags:
|
|
# If zuul.tag is defined: [ '3', '3.19', '3.19.0' ]. Only works for 3-component tags.
|
|
# Otherwise: ['latest']
|
|
&imagetag "{{ zuul.tag is defined | ternary([zuul.get('tag', '').split('.')[0], '.'.join(zuul.get('tag', '').split('.')[:2]), zuul.get('tag', '')], ['latest']) }}"
|
|
- context: .
|
|
repository: zuul/zuul-executor
|
|
target: zuul-executor
|
|
tags: *imagetag
|
|
- context: .
|
|
repository: zuul/zuul-fingergw
|
|
target: zuul-fingergw
|
|
tags: *imagetag
|
|
- context: .
|
|
repository: zuul/zuul-merger
|
|
target: zuul-merger
|
|
tags: *imagetag
|
|
- context: .
|
|
repository: zuul/zuul-scheduler
|
|
target: zuul-scheduler
|
|
tags: *imagetag
|
|
- context: .
|
|
repository: zuul/zuul-web
|
|
target: zuul-web
|
|
tags: *imagetag
|
|
|
|
- job:
|
|
name: zuul-upload-image
|
|
parent: opendev-upload-docker-image
|
|
description: Build Docker images and upload to Docker Hub.
|
|
allowed-projects: zuul/zuul
|
|
requires:
|
|
- python-builder-3.8-bullseye-container-image
|
|
- python-base-3.8-bullseye-container-image
|
|
provides: zuul-container-image
|
|
secrets:
|
|
name: docker_credentials
|
|
secret: zuul-dockerhub
|
|
pass-to-parent: true
|
|
vars: *zuul_image_vars
|
|
|
|
- job:
|
|
name: zuul-promote-image
|
|
parent: opendev-promote-docker-image
|
|
description: Promote previously uploaded Docker images.
|
|
allowed-projects: zuul/zuul
|
|
secrets:
|
|
name: docker_credentials
|
|
secret: zuul-dockerhub
|
|
pass-to-parent: true
|
|
nodeset:
|
|
nodes: []
|
|
vars: *zuul_image_vars
|
|
|
|
- job:
|
|
name: zuul-build-python-release
|
|
parent: build-python-release
|
|
pre-run: playbooks/release/pre.yaml
|
|
|
|
- job:
|
|
name: zuul-release-python
|
|
parent: opendev-release-python
|
|
pre-run: playbooks/release/pre.yaml
|
|
|
|
- project:
|
|
vars:
|
|
node_version: 16
|
|
release_python: python3
|
|
check:
|
|
jobs:
|
|
- zuul-build-image
|
|
- zuul-tox-docs
|
|
- tox-linters:
|
|
vars:
|
|
tox_install_bindep: false
|
|
- zuul-tox-py38
|
|
- zuul-tox-py39
|
|
- zuul-tox-py39-multi-scheduler
|
|
- zuul-build-dashboard-openstack-whitelabel
|
|
- zuul-build-dashboard-software-factory
|
|
- zuul-build-dashboard-opendev
|
|
- nodejs-run-lint:
|
|
vars:
|
|
zuul_work_dir: "{{ zuul.project.src_dir }}/web"
|
|
- nodejs-run-test:
|
|
vars:
|
|
zuul_work_dir: "{{ zuul.project.src_dir }}/web"
|
|
files:
|
|
- web/.*
|
|
- zuul-stream-functional-2.8
|
|
- zuul-stream-functional-2.9
|
|
- zuul-stream-functional-5
|
|
- zuul-tox-remote
|
|
- zuul-quick-start:
|
|
requires: nodepool-container-image
|
|
dependencies: zuul-build-image
|
|
- zuul-tox-zuul-client
|
|
- zuul-build-python-release
|
|
gate:
|
|
jobs:
|
|
- zuul-upload-image
|
|
- zuul-tox-docs
|
|
- tox-linters:
|
|
vars:
|
|
tox_install_bindep: false
|
|
- zuul-tox-py38
|
|
- zuul-tox-py39
|
|
- zuul-build-dashboard
|
|
- nodejs-run-lint:
|
|
vars:
|
|
zuul_work_dir: "{{ zuul.project.src_dir }}/web"
|
|
- nodejs-run-test:
|
|
vars:
|
|
zuul_work_dir: "{{ zuul.project.src_dir }}/web"
|
|
files:
|
|
- web/.*
|
|
- zuul-stream-functional-2.8
|
|
- zuul-stream-functional-2.9
|
|
- zuul-stream-functional-5
|
|
- zuul-tox-remote
|
|
- zuul-quick-start:
|
|
requires: nodepool-container-image
|
|
dependencies: zuul-upload-image
|
|
- zuul-tox-zuul-client
|
|
- zuul-build-python-release
|
|
promote:
|
|
jobs:
|
|
- zuul-promote-image
|
|
- zuul-promote-docs
|
|
- opendev-promote-python:
|
|
vars:
|
|
download_artifact_job: zuul-build-python-release
|
|
- opendev-promote-javascript-deployment-tarball:
|
|
files: *zuul_build_dashboard_files
|
|
vars:
|
|
download_artifact_job: zuul-build-dashboard
|
|
release:
|
|
jobs:
|
|
- zuul-release-python
|
|
- zuul-publish-tox-docs
|
|
- upload-docker-image:
|
|
secrets:
|
|
name: docker_credentials
|
|
secret: zuul-dockerhub
|
|
pass-to-parent: true
|
|
vars:
|
|
<<: *zuul_image_vars
|
|
upload_docker_image_promote: false
|