nodepool/.zuul.yaml
Clark Boylan bde9bdb975 Update to python3.10
This adds python 3.10 testing and updates our docker images to
python3.10.

On the docker image side of things we use opendev's python images which
are based on Debian then have python compiled on top of that external to
Debian python packaging. Debian bullseye ships with python3.9 but our
images come with python3.10. What this means is that we cannot rely on
external wheel caches for Debian bullseye + python3.9 here as we've got
the wrong version of python3.10. The good news is that all of the
dependencies that have historically given us trouble on arm64 in
particular already ship python3.10 aarch64/arm64 wheels. This means we
can rely on pypi as is. This is probably better for us anyway as it
decouples us from relying on additional external resources.

We also update a number of jobs to use nodeset: ubuntu-jammy as this
ubuntu version defaults to python 3.10.

Change-Id: I7fb585bc5ccc52803eea107e76dddf5e9fde8646
2022-07-01 12:05:26 -07:00

307 lines
10 KiB
YAML

- 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
required-projects:
- zuul/nodepool
vars:
minikube_version: v1.25.2 # NOTE(corvus): https://github.com/kubernetes/minikube/issues/14403 https://github.com/kubernetes/minikube/issues/14397
nodeset: ubuntu-jammy
- 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:
# Runs openshift
- name: cluster
label: centos-7
# Runs nodepool
- name: launcher
label: fedora-35
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.
timeout: &image_build_timeout 4800
dependencies:
- opendev-buildset-registry
requires:
- python-builder-3.10-bullseye-container-image
- python-base-3.10-bullseye-container-image
provides: nodepool-container-image
vars: &nodepool_image_vars
docker_images:
- context: .
repository: zuul/nodepool
target: nodepool
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']) }}"
arch:
- linux/amd64
- linux/arm64
- context: .
repository: zuul/nodepool-launcher
target: nodepool-launcher
tags: *imagetag
arch:
- linux/amd64
- linux/arm64
- context: .
repository: zuul/nodepool-builder
target: nodepool-builder
tags: *imagetag
arch:
- linux/amd64
- linux/arm64
- job:
name: nodepool-upload-image
parent: opendev-upload-docker-image
description: Build Docker images and upload to Docker Hub.
timeout: *image_build_timeout
requires:
- python-builder-3.10-bullseye-container-image
- python-base-3.10-bullseye-container-image
provides: nodepool-container-image
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
# NOTE(ianw) : kept separate as these aren't intended to be released
- job:
name: nodepool-build-image-siblings
dependencies:
- opendev-buildset-registry
parent: opendev-build-docker-image
description: Build container images, with required projects as sibling from source
required-projects:
- zuul/nodepool
- openstack/diskimage-builder
requires:
- python-builder-3.10-bullseye-container-image
- python-base-3.10-bullseye-container-image
provides: nodepool-siblings-container-image
vars:
zuul_work_dir: "{{ zuul.projects['opendev.org/zuul/nodepool'].src_dir }}"
docker_images:
- context: .
repository: zuul/nodepool-launcher
target: nodepool-launcher
tags:
- siblings
- context: .
repository: zuul/nodepool-builder
target: nodepool-builder
tags:
- siblings
siblings:
- opendev.org/openstack/diskimage-builder
- job:
name: nodepool-functional-container-openstack-base
abstract: true
description: |
Test Nodepool containers with an OpenStack.
Note this is an abstract job and does not define an image to
build and test, and you should not inherit directly from this
job.
If you wish to build the nodepool containers with released
dependencies, you should inherit from
nodepool-functional-container-openstack-release-base and define
nodepool_diskimage for the image to build and test.
If you wish to build the nodepool containers with dependencies
installed from source, you should inherit from
nodepool-functional-container-openstack-siblings-base and define
nodepool_diskimage for the image build and test.
timeout: 5400
required-projects:
- zuul/nodepool
pre-run: playbooks/nodepool-functional-container-openstack/pre.yaml
run: playbooks/nodepool-functional-container-openstack/run.yaml
post-run: playbooks/nodepool-functional-container-openstack/post.yaml
vars:
zuul_copy_output:
/var/log/nodepool: logs
nodeset: ubuntu-jammy
- job:
name: nodepool-functional-container-openstack-release-base
abstract: true
description: |
Test Nodepool containers and OpenStack, against released
dependencies.
Note, this job does not define an image to build. It should be
inherited from and nodepool_diskimage defined.
parent: nodepool-functional-container-openstack-base
dependencies:
- nodepool-build-image
required-projects:
- name: opendev/glean # note, installed by dib
- name: zuul/nodepool
- job:
name: nodepool-functional-container-openstack-release
description: |
Test Nodepool containers and OpenStack, with released projects
This builds, uploads and boots a CentOS 8 image into a
OpenStack cloud.
parent: nodepool-functional-container-openstack-release-base
vars:
nodepool_diskimage:
base_element: centos-minimal
release: 9-stream
mirror: "http://{{ zuul_site_mirror_fqdn }}/centos"
env-vars:
DIB_SIMPLE_INIT_NETWORKMANAGER: '1'
- job:
name: nodepool-functional-container-openstack-siblings-base
abstract: true
description: |
Test Nodepool containers and OpenStack, with some projects from source
Note, this job does not define an image to build. It should be
inherited from and nodepool_diskimage defined.
parent: nodepool-functional-container-openstack-base
dependencies:
- nodepool-build-image-siblings
required-projects:
- name: opendev/glean # note, installed by dib
- name: zuul/nodepool
vars:
nodepool_container_tag: ':siblings'
- job:
name: nodepool-functional-container-openstack-siblings
description: |
Test Nodepool containers and OpenStack, with some projects from source
This builds, uploads and boots a CentOS 8 image into a
OpenStack cloud.
parent: nodepool-functional-container-openstack-siblings-base
vars:
nodepool_diskimage:
base_element: centos-minimal
release: 9-stream
mirror: "http://{{ zuul_site_mirror_fqdn }}/centos"
env-vars:
DIB_SIMPLE_INIT_NETWORKMANAGER: '1'
- job:
name: nodepool-tox-py38
description: |
Nodepool unit tests with ZooKeeper running
parent: tox-py38
pre-run: playbooks/nodepool-tox/pre.yaml
vars: &nodepool_tox_vars
tox_environment:
NODEPOOL_ZK_CA: /opt/zookeeper/ca/certs/cacert.pem
NODEPOOL_ZK_CERT: /opt/zookeeper/ca/certs/client.pem
NODEPOOL_ZK_KEY: /opt/zookeeper/ca/keys/clientkey.pem
- job:
name: nodepool-tox-py310
description: |
Nodepool unit tests with ZooKeeper running
parent: tox-py310
pre-run: playbooks/nodepool-tox/pre.yaml
vars: *nodepool_tox_vars
nodeset: ubuntu-jammy
- project:
vars:
release_python: python3
check:
jobs:
- opendev-buildset-registry
- nodepool-build-image
- zuul-tox-docs
- tox-pep8:
nodeset: ubuntu-jammy
- nodepool-tox-py38
- nodepool-tox-py310
- nodepool-functional-container-openstack-release
- nodepool-functional-k8s
- nodepool-functional-openshift
- zuul-quick-start:
requires: zuul-container-image
dependencies: nodepool-build-image
- build-python-release
gate:
jobs:
- nodepool-upload-image
- zuul-tox-docs
- tox-pep8:
nodeset: ubuntu-jammy
- nodepool-tox-py38
- nodepool-tox-py310
- nodepool-functional-k8s
- nodepool-functional-openshift
- zuul-quick-start:
requires: zuul-container-image
dependencies: nodepool-upload-image
- build-python-release
promote:
jobs:
- nodepool-promote-image
- zuul-promote-docs
- opendev-promote-python
release:
jobs:
- opendev-release-python
- zuul-publish-tox-docs
- upload-docker-image:
timeout: *image_build_timeout
secrets:
name: docker_credentials
secret: nodepool-dockerhub
pass-to-parent: true
vars:
<<: *nodepool_image_vars
upload_docker_image_promote: false