James E. Blair 007f7e0b08 Switch functional testing to a devstack consumer job
Rather than implement functional OpenStack testing as a devstack
plugin, use devstack as a black-box OpenStack.  This allows us
to move nodepool to a new Zuul tenant without depending on the
devstack job and all its associated projects.  It will also let
us replace devstack with something potentially lighter weight in
the future.

The job permits customized settings for what images to build, so
that the DIB project can inherit from it and make child jobs for
each of the operating systems it cares about.

Change-Id: Ie6bc891cebd32b3d1bb646109f13ac2fd383bba5
2019-06-27 08:58:17 -07:00

336 lines
10 KiB
YAML

- job:
name: nodepool-zuul-functional
parent: tox
description: |
Test that zuul works with current nodepool sources.
This test runs the zuul project ``nodepool`` environment.
pre-run: playbooks/nodepool-zuul-functional/pre.yaml
post-run: playbooks/nodepool-zuul-functional/post.yaml
required-projects:
- zuul/nodepool
- zuul/zuul
vars:
zuul_work_dir: "{{ zuul.projects['opendev.org/zuul/zuul'].src_dir }}"
tox_envlist: nodepool
- job:
name: nodepool-functional-openstack-base
description: |
Test Nodepool with an OpenStack.
Sets up a working OpenStack system, builds an image, launches a
node, and verifies SSH access to the node.
.. zuul:jobvar:: nodepool_extra_packages
:type: list
A list of extra packages to install at the start of the job
(i.e., anything needed for the DIB build).
.. zuul:jobvar:: nodepool_diskimage
:type: dict
.. zuul:jobvar:: base_element
The base element to use when building the disk image.
.. zuul:jobvar:: release
The release number or name to use with the base element.
.. zuul:jobvar:: mirror
The URL for the package mirror to use when building the
disk image. This is optional.
.. zuul:jobvar:: env-vars
:type: dict
A dictionary of environment variables and values to add
to the DIB environment when building the image.
timeout: 5400
required-projects:
- zuul/nodepool
pre-run: playbooks/nodepool-functional-openstack/pre.yaml
run: playbooks/nodepool-functional-openstack/run.yaml
post-run: playbooks/nodepool-functional-openstack/post.yaml
vars:
zuul_copy_output:
/var/log/nodepool: logs
- job:
name: nodepool-functional-openstack
description: Test Nodepool with an OpenStack
parent: nodepool-functional-openstack-base
vars: &nodepool_diskimage_vars
nodepool_extra_packages:
- rpm
- yum-utils
nodepool_diskimage:
base_element: centos-minimal
release: 7
mirror: "http://{{ zuul_site_mirror_fqdn }}/centos"
env-vars:
DIB_SIMPLE_INIT_NETWORKMANAGER: '1'
- job:
name: nodepool-functional-openstack-src-base
description: Test Nodepool and OpenStack, with some projects from source
parent: nodepool-functional-openstack-base
required-projects:
- name: github.com/sqlalchemy/dogpile.cache
- name: opendev/glean
- name: zuul/nodepool
- name: openstack/diskimage-builder
- name: openstack/openstacksdk
- job:
name: nodepool-functional-openstack-src
description: Test Nodepool and OpenStack, with some projects from source
parent: nodepool-functional-openstack
required-projects:
- name: github.com/sqlalchemy/dogpile.cache
- name: opendev/glean
- name: zuul/nodepool
- name: openstack/diskimage-builder
- name: openstack/openstacksdk
vars: *nodepool_diskimage_vars
# NOTE(ianw): this job doesn't really do anything unless you set
# "NODEPOOL_PAUSE_something_DIB: false" to unpause one or more builds.
- job:
name: nodepool-functional-base
parent: devstack
# NOTE(ianw): for now, keep these jobs as Xenial only. We will
# add bionic variants, but we want to keep Xenial testing around
# whilst we still run Xenial for upstream nodepool-builders too
nodeset: openstack-single-node-xenial
pre-run: playbooks/nodepool-functional-base/pre.yaml
post-run: playbooks/nodepool-functional-base/post.yaml
timeout: 5400
required-projects:
- zuul/nodepool
vars:
devstack_localrc:
USE_PYTHON3: True
devstack_services:
horizon: false
ceilometer-acentral: false
ceilometer-acompute: false
ceilometer-alarm-evaluator: false
ceilometer-alarm-notifier: false
ceilometer-anotification: false
ceilometer-api: false
ceilometer-collector: false
cinder: false
c-bak: false
c-sch: false
c-api: false
c-vol: false
s-account: false
s-container: false
s-object: false
s-proxy: false
# Nodepool doesn't need vnc access
n-novnc: false
# Nodepool testing uses config drive only
n-api-meta: false
q-meta: false
devstack_plugins:
nodepool: https://opendev.org/zuul/nodepool
zuul_copy_output:
'/var/log/nodepool/builds': 'logs'
- job:
name: nodepool-functional-py35
parent: nodepool-functional-base
description: |
Run nodepool functional tests for py35
run: playbooks/nodepool-functional-py35/run.yaml
vars:
devstack_localrc:
NODEPOOL_PAUSE_UBUNTU_XENIAL_DIB: false
- job:
name: nodepool-functional-py35-src-base
parent: nodepool-functional-base
run: playbooks/nodepool-functional-py35-src/run.yaml
required-projects:
- name: github.com/sqlalchemy/dogpile.cache
- name: opendev/glean
- name: zuul/nodepool
- name: openstack/diskimage-builder
- name: openstack/openstacksdk
- job:
name: nodepool-functional-py35-src
parent: nodepool-functional-py35-src-base
vars:
devstack_localrc:
NODEPOOL_PAUSE_UBUNTU_XENIAL_DIB: false
# Distro functional tests. This is used by projects such as
# diskimage-builder and glean as live-boot tests
- job:
name: nodepool-functional-py35-redhat-src
parent: nodepool-functional-py35-src-base
vars:
devstack_localrc:
NODEPOOL_PAUSE_CENTOS_7_DIB: false
NODEPOOL_PAUSE_FEDORA_29_DIB: false
- job:
name: nodepool-functional-py35-suse-src
parent: nodepool-functional-py35-src-base
vars:
devstack_localrc:
NODEPOOL_PAUSE_OPENSUSE_423_DIB: false
NODEPOOL_PAUSE_OPENSUSE_150_DIB: false
NODEPOOL_PAUSE_OPENSUSE_TUMBLEWEED_DIB: false
- job:
name: nodepool-functional-py35-gentoo-src
parent: nodepool-functional-py35-src-base
vars:
devstack_localrc:
NODEPOOL_PAUSE_GENTOO_17_0_SYSTEMD_DIB: false
- job:
name: nodepool-functional-py35-ubuntu-src
parent: nodepool-functional-py35-src-base
vars:
devstack_localrc:
NODEPOOL_PAUSE_UBUNTU_BIONIC_DIB: false
NODEPOOL_PAUSE_UBUNTU_XENIAL_DIB: false
NODEPOOL_PAUSE_UBUNTU_TRUSTY_DIB: false
- job:
name: nodepool-functional-py35-debian-src
parent: nodepool-functional-py35-src-base
vars:
devstack_localrc:
NODEPOOL_PAUSE_DEBIAN_STRETCH_DIB: false
NODEPOOL_PAUSE_DEBIAN_BUSTER_DIB: false
- job:
description: |
Test that nodepool works with kubernetes.
name: nodepool-functional-k8s
pre-run: playbooks/nodepool-functional-k8s/pre.yaml
run: playbooks/nodepool-functional-k8s/run.yaml
post-run: playbooks/nodepool-functional-k8s/post.yaml
nodeset: ubuntu-xenial
required-projects:
- zuul/nodepool
- job:
description: |
Test that nodepool works with openshift.
name: nodepool-functional-openshift
pre-run: playbooks/nodepool-functional-openshift/pre.yaml
run: playbooks/nodepool-functional-openshift/run.yaml
nodeset:
nodes:
- name: cluster
label: centos-7
- name: launcher
label: fedora-28
required-projects:
- zuul/nodepool
- secret:
name: nodepool-dockerhub
data:
username: zuulzuul
password: !encrypted/pkcs1-oaep
- VV5m4XbsYvAz0/7T+WoIypvD3ijRsPYrGo4O5JuOHt6TX14s9B1KddeMwnabEEKapPdbb
cwqbzFKoHRMi8DdXiDKxrgbTSC1jb3BvKq7XE0/xF4Bq2dM+r3yDnXS6a7BuijSqFSiMG
/9bf0jqEAWXWCvbYUAxKOklJIRLjcKywCP5CulmW6EV8f1Iya8Y7UGpjGyL34FVQuc52Y
5MLp+Dra95pvBJMgikbu7LtMPCXOMctUFBpwNArCjWKGhz00UZwyAmsbPPHwQWb+884ZP
v9zi2FuRAL+rn4DRVwyIw28ZdCEr5F5EkZon3lSIhikhdQIyHPtW8VwMJTL4RxBdmgcEt
+zZBbLlOU+0AHPGLlO/yQNvHeSzwY9pe2oIGuqSu3h6zp6Y0NIE/Q0VpiIXWpOAnLOmno
uOd3j9tZ1beol2mg4Yk7rOaXu1Fvtfhd1K3LpLzEbiGzCMIEZuFHU2ZInAbUmtm0BtbDa
/bYvI9dB/uqA2xgse5rVMa++v3AfWJTJhFY/wBU4fHOWlFBUZKFuSoijUcWMfnfMMyU2B
A5CQKhv4Wmtzbvo/oneYkwFOTYaPNj2DS0BcFJFkR8FZDYmTBPnKoBH5wpwwnrzPOpCMa
L21z+Vp1Vce1XCsaOduMrmZDvuQcK1YOKIIUeElAQw8GuwTfcXqekoPvp54SeE=
- job:
name: nodepool-build-image
parent: opendev-build-docker-image
description: Build Docker images.
vars: &nodepool_image_vars
docker_images:
- context: .
repository: zuul/nodepool
target: nodepool
- context: .
repository: zuul/nodepool-launcher
target: nodepool-launcher
- context: .
repository: zuul/nodepool-builder
target: nodepool-builder
- job:
name: nodepool-upload-image
parent: opendev-upload-docker-image
description: Build Docker images and upload to Docker Hub.
vars: *nodepool_image_vars
secrets:
- name: docker_credentials
secret: nodepool-dockerhub
pass-to-parent: true
- job:
name: nodepool-promote-image
parent: opendev-promote-docker-image
description: Promote previously uploaded Docker images.
vars: *nodepool_image_vars
secrets:
- name: docker_credentials
secret: nodepool-dockerhub
pass-to-parent: true
- project:
check:
jobs:
- nodepool-build-image
- tox-docs
- tox-pep8
- tox-py35:
nodeset: ubuntu-xenial
- tox-py36
- nodepool-zuul-functional:
voting: false
- nodepool-functional-openstack
- nodepool-functional-openstack-src
- nodepool-functional-k8s
- nodepool-functional-openshift
- zuul-quick-start:
dependencies: nodepool-build-image
gate:
jobs:
- nodepool-upload-image
- tox-docs
- tox-pep8
- tox-py35:
nodeset: ubuntu-xenial
- tox-py36
- zuul-quick-start:
dependencies: nodepool-upload-image
post:
jobs:
- publish-zuul-docs
- release-zuul-python
promote:
jobs:
- nodepool-promote-image
experimental:
jobs:
- nodepool-functional-py35-debian-src
release:
jobs:
- release-zuul-python
- publish-zuul-docs