project-config/zuul.d/jobs.yaml
Ian Wienand 6f1e9fb2b9 translation updates: refactor Python 3.8 workarounds
I think we have quite a tangle of fixes on fixes in the translation
jobs, and I hope this refactor makes things a bit better.

The fundamental problem seems to be that python3.6 can't work with
master requirements.txt.  But we can not move some jobs off bionic
(python 3.6) because of java version contsraints.

The first thing that happened was these jobs got "ensure-python" with
"python_version: 3.8" set to bring in python3.8 on Bionic.  This role
was not bringing in python3.8-venv, so we had no way to create 3.8
virtual environments.  Thus ensure-pip ended up getting modified to
drag this package in (reverted with notes in
372f3af706c796331578ef81c2680e8c4c03c3b6).  This has a fairly easy
solution; let's just make ensure-python bring in the venv packages for
the udpated python -- see dependency
Ie3c03fea82bcec80a897f0905c15f35405a50396.

The git-review install here uses 'ensure_pip_virtualenv_command' to
install git-review in a virtualenv.  git-review still supports bionic,
and does not need to be installed in any speical way.  However, by
overriding the 'ensure_pip_virtualenv_command' for the entire job,
this unrelated install now grew a dependency on python3.8 and created
more confusion over why it was failing.

I believe what we actually want to do on Bionic is just run tox under
python3.8.  So this pulls out all the job-level defintions and
encapsulates them in a single block scoped to run on bionic.  It will
pull in python3.8 packages, and then install tox under python3.8 with
an override of the virtulenv command just for that step.  The jobs
just maintain their node definition and note on why it is required.

The long-term future of these jobs is obviously a question; but I
believe this keeps them running on bionic in as sane a way as possible
for now.

The second part of this is the python3.9 interpreter required on
Focal.  Setting "python_version: 3.9" in the job definition is a bit
confusing, because the job actually requires both Python 3.8 AND 3.9.
This variable is passed to ensure-python, and the naming is a bit
unfortunate because it is so broad (but we can't change that without
zuul-jobs updates).  Here I've pulled out the Python 3.9 install into
a separate focal-gated section in the pre.yaml that explains what is
going on (note that Python 3.8 is just the base python on focal, so
needs no extra installation).  I've also updated the description on
the job node with this info.  There's no need to install the tox
environment any differently on focal; it just uses the base system
python (3.8) which is fine.

Depends-On: https://review.opendev.org/c/zuul/zuul-jobs/+/850957
Change-Id: I547e5eb7faabcd9d3983ae85f3291b1a740bc77c
2022-07-27 07:48:43 +10:00

1266 lines
37 KiB
YAML

# Shared zuul config specific to the OpenStack Project
# Contains definitions of trusted jobs
# Overrides jobs from:
# https://opendev.org/zuul/zuul-jobs
- job:
name: publish-openstack-artifacts
nodeset: ubuntu-focal
description: |
Publish job to upload artifacts to tarballs.openstack.org
post-review: true
post-run: playbooks/publish/openstack-artifacts.yaml
secrets:
- secret: afs_tarballs_opendev_org
name: afs
- job:
name: release-openstack-puppet
parent: publish-openstack-artifacts
description: |
Sign and release puppet tarballs to tarballs.o.o.
pre-run: playbooks/puppet-tarball/pre.yaml
run: playbooks/puppet-tarball/run.yaml
post-run:
- playbooks/puppet-tarball/post.yaml
- playbooks/publish/puppetforge.yaml
secrets:
- gpg_key
- name: puppetforge
secret: openstack_puppetforge_credentials
- job:
name: release-openstack-python
parent: publish-openstack-artifacts
description: |
Release python tarballs / wheels to pypi.
pre-run: playbooks/pti-python-tarball/pre.yaml
run: playbooks/pti-python-tarball/run.yaml
post-run:
- playbooks/pti-python-tarball/post.yaml
- playbooks/publish/pypi.yaml
secrets:
- secret: pypi_secret
name: pypi_info
- gpg_key
vars:
release_python: python3
- job:
name: test-release-openstack
nodeset: ubuntu-focal
parent: base
description: |
Test building python tarballs / wheels and the packaging metadata.
pre-run: playbooks/pti-python-tarball/pre.yaml
run: playbooks/pti-python-tarball/check.yaml
vars:
release_python: python3
files:
- setup.cfg
- setup.py
- README.rst
- job:
name: publish-openstack-python-tarball
parent: publish-openstack-artifacts
description: |
Release and sign OpenStack python tarballs to tarballs.o.o.
It is similar to release-openstack-python but
omits PyPI publication.
pre-run: playbooks/pti-python-tarball/pre.yaml
run: playbooks/pti-python-tarball/run.yaml
post-run:
- playbooks/pti-python-tarball/post.yaml
secrets:
- gpg_key
vars:
release_python: python3
- job:
name: publish-openstack-sphinx-docs-base
nodeset: ubuntu-xenial
description: |
Base job for publishing sphinx documentation to
/afs/.openstack.org/docs/.
This job is obsolete, use ``publish-openstack-tox-docs-base`` instead.
abstract: true
protected: true
pre-run:
- playbooks/sphinx/pre.yaml
run: playbooks/sphinx/run.yaml
post-run:
- playbooks/publish/openstack-afs.yaml
required-projects:
- name: openstack/requirements
roles:
- zuul: zuul/zuul-jobs
- zuul: openstack/openstack-zuul-jobs
secrets:
- secret: afsdocs_secret
name: afs
vars:
constraints_file: '{{ ansible_user_dir }}/src/opendev.org/openstack/requirements/upper-constraints.txt'
- job:
name: publish-openstack-sphinx-docs
parent: publish-openstack-sphinx-docs-base
description: |
Publish the results of the build-openstack-sphinx-docs job to
/afs/.openstack.org/docs/{{ zuul.project.short_name }}.
Publishes depending on branch to latest/ (for master), or the
basename of the branch like pike (for stable/pike).
This is the publication job for ``build-openstack-sphinx-docs``.
This job is obsolete and should not be used anymore since rocky,
use ``promote-openstack-docs`` instead.
final: true
pre-run:
# TODO(mordred) REMOVE THIS HACK
- playbooks/sphinx/neutron-horizon-hack.yaml
post-run:
- playbooks/sphinx/post.yaml
required-projects:
# TODO(mordred) REMOVE THIS HACK ONCE neutron-horizon-hack is removed
- name: openstack/neutron
- name: openstack/horizon
- job:
name: promote-openstack-tox-docs
parent: opendev-promote-docs-base
description: |
Promote content from openstack-tox-docs job for projects that
run tox using the docs environment following OpenStack PTI.
Publish the results of the docs tox job to
/afs/.openstack.org/docs/{{ zuul.project.short_name }}.
Publishes depending on branch to latest/ (for master), or the
basename of the branch like pike (for stable/pike).
This is the promote job for ``openstack-tox-docs``.
final: true
vars:
download_artifact_job: openstack-tox-docs
secrets:
- secret: afsdocs_secret-tox-docs
name: afs
pass-to-parent: true
- job:
name: promote-openstack-tox-docs-direct
parent: opendev-promote-docs-base
description: |
Promote content from openstack-tox-docs job for projects that
run tox using the docs environment following OpenStack PTI.
Publish the results of the docs tox job to
/afs/.openstack.org/docs/{{ zuul.project.short_name }}.
Publishing is done from master branch directly without using /latest.
This is a promote job for ``openstack-tox-docs``.
final: true
branches: master
vars:
download_artifact_job: openstack-tox-docs
secrets:
- secret: afsdocs_secret-tox-docs-direct
name: afs
pass-to-parent: true
- job:
name: promote-tox-docs-special-base
parent: opendev-promote-docs-base
description: |
Promote content from openstack-tox-docs job for some projects
that need a special location.
Publish the results of the tox-docs job to
/afs/.openstack.org/docs/{special_publish_directory}.
This is a promote job for ``openstack-tox-docs``.
A job needs to set the variable `special_publish_directory`.
abstract: true
protected: true
vars:
download_artifact_job: openstack-tox-docs
secrets:
- secret: afsdocs_secret-tox-docs-special
name: afs
pass-to-parent: true
- job:
name: promote-openstack-contributor-guide
parent: promote-tox-docs-special-base
description: |
Publish contributor-guide documents to
https://docs.openstack.org/contributors
final: true
allowed-projects:
- openstack/contributor-guide
branches: master
vars:
special_publish_directory: "contributors"
# AFS sync issues happen when multiple publish jobs run at the same time
# so we make it synchronous to avoid job failures
- semaphore:
name: publish-releasenotes
max: 1
- job:
name: publish-openstack-releasenotes-python3
description: |
Publish the results of build-openstack-releasenotes to
/afs/.openstack.org/docs/releasenotes/{{ zuul.project.short_name }}
Uses python3.
# This job is final because its sets the afs_subpath
# variable; it is not safe to let that be overridden in an
# untrusted job because it would allow writing outside of the
# project's directory on the production doc site.
final: true
pre-run: playbooks/releasenotes/pre.yaml
run: playbooks/releasenotes/run.yaml
post-run:
- playbooks/publish/releasenotes.yaml
- playbooks/publish/openstack-afs.yaml
semaphores: publish-releasenotes
override-branch: master
# Building translated releasenotes can take long for large repositories
timeout: 3600
required-projects:
- name: openstack/requirements
roles:
- zuul: openstack/openstack-zuul-jobs
- zuul: zuul/zuul-jobs
vars:
sphinx_python: python3
afs_subpath: "/releasenotes/{{ zuul.project.short_name }}"
constraints_file: '{{ ansible_user_dir }}/src/opendev.org/openstack/requirements/upper-constraints.txt'
sphinx_build_dir: releasenotes/build
secrets:
- secret: afsdocs_secret
name: afs
- job:
name: promote-openstack-releasenotes
parent: opendev-promote-docs-base
description: |
Promote the results of build-openstack-releasenotes to
/afs/.openstack.org/docs/releasenotes/{{ zuul.project.short_name }}
final: true
vars:
download_artifact_job: build-openstack-releasenotes
secrets:
- secret: afsdocs_secret-releasenotes
name: afs
pass-to-parent: true
# Same file list as for job build-reno-releasenotes that is
# defined in zuul/zuul-jobs repo, file zuul.d/python-jobs.yaml.
# Keep those lists in sync.
files:
- ^releasenotes/.*
- bindep.txt
- doc/requirements.txt
- test-requirements.txt
- tox.ini
- job:
name: promote-openstack-specs-site
parent: promote-tox-docs-site-base
final: true
description: |
Publish OpenStack specs index.
Publish specs index to
/afs/.openstack.org/project/specs.openstack.org/
This is a promote job for ``build-openstack-specs-site``.
allowed-projects:
- openstack/project-config
vars:
download_artifact_job: build-openstack-specs-site
publish_site: "specs.openstack.org"
- job:
name: promote-openstack-specs
parent: promote-tox-docs-site-base
final: true
description: |
Publish OpenStack specs project.
Publish specs index to
/afs/.openstack.org/project/specs.openstack.org/{zuul[project][name]}.
This is a promote job for ``openstack-tox-docs``.
vars:
download_artifact_job: openstack-tox-docs
publish_site: "specs.openstack.org/{zuul[project][name]}"
- job:
name: promote-tox-docs-infra
parent: opendev-promote-docs-base
description: |
Promote content from tox-docs job for Infra projects.
Publish the results of the tox-docs job to
/afs/.openstack.org/docs/infra/{{ zuul.project.short_name }}.
This is a promote job for ``opendev-tox-docs``.
final: true
vars:
download_artifact_job: opendev-tox-docs
secrets:
- secret: afsdocs_secret-tox-docs-infra
name: afs
pass-to-parent: true
branches: master
- job:
name: promote-service-types-authority
parent: promote-tox-docs-site-base
description: |
Publish OpenStack Service Types Authority to
/afs/.openstack.org/project/service-typs.openstack.org/.
This is a promote job for ``service-types-authority-tox-publish``.
final: true
run: playbooks/service-types/promote.yaml
allowed-projects:
- openstack/service-types-authority
vars:
download_artifact_job: service-types-authority-tox-publish
publish_site: "service-types.openstack.org"
secrets:
- secret: afsdocs_secret-tox-docs-site
name: afs
pass-to-parent: true
- job:
name: promote-irc-meetings-ical
parent: promote-tox-docs-site-base
description: |
Publish OpenDev Meetings site/ical to
/afs/.openstack.org/project/meetings.opendev.org/.
This is a promote job for ``irc-meetings-ical-tox-publish``.
final: true
run: playbooks/service-types/promote.yaml
allowed-projects:
- opendev/irc-meetings
vars:
download_artifact_job: irc-meetings-ical-tox-publish
publish_site: "meetings.opendev.org"
secrets:
- secret: afsdocs_secret-tox-docs-site
name: afs
pass-to-parent: true
- job:
name: promote-infra-index
parent: promote-tox-docs-special-base
description: |
Promote infra index.html to
https://docs.openstack.org/infra/
allowed-projects:
- openstack/project-config
final: true
branches: master
vars:
download_artifact_job: project-config-infra-docs-index
special_publish_directory: "infra"
- job:
name: publish-infra-publications-index
description: |
Publish the publication index
final: true
run: playbooks/publications-index/run.yaml
post-run:
- playbooks/publish/publications-index.yaml
- playbooks/publish/openstack-afs.yaml
# Index is always published from master
override-branch: master
allowed-projects:
- opendev/publications
roles:
- zuul: zuul/zuul-jobs
- zuul: openstack/openstack-zuul-jobs
vars:
afs_subpath: "/infra/publications/"
tox_envlist: infra-docs
secrets:
- secret: afsdocs_secret
name: afs
- job:
name: publish-infra-publications
description: |
Publish one publication from opendev/publications
final: true
run: playbooks/publications/run.yaml
post-run:
- playbooks/publish/publications.yaml
- playbooks/publish/openstack-afs.yaml
allowed-projects:
- opendev/publications
roles:
- zuul: zuul/zuul-jobs
- zuul: openstack/openstack-zuul-jobs
vars:
afs_subpath: "/infra/publications/"
tox_envlist: infra-docs
secrets:
- secret: afsdocs_secret
name: afs
- job:
name: publish-openstack-python-branch-tarball
parent: publish-openstack-artifacts
description: |
Publish the results of the tox-tarball job to tarballs.openstack.org.
pre-run: playbooks/pti-python-tarball/pre.yaml
run: playbooks/pti-python-tarball/run.yaml
post-run: playbooks/python-branch-tarball/post.yaml
vars:
release_python: python3
# AFS sync issues happen when multiple publish jobs run at the same time
# so we make it synchronous to avoid job failures
- semaphore:
name: publish-release-docs
max: 1
- job:
name: publish-tox-docs-releases
description: |
Publish content of openstack/releases to
/afs/.openstack.org/project/releases.openstack.org/.
Builds the docs using ``tox -e docs``.
final: true
roles:
- zuul: openstack/openstack-zuul-jobs
pre-run: playbooks/project-config/pre-tox.yaml
run: playbooks/project-config/run-tox.yaml
post-run:
- playbooks/project-config/post-tox.yaml
- playbooks/sphinx/post-infra.yaml
- playbooks/publish/releases-afs.yaml
semaphores: publish-release-docs
allowed-projects:
- openstack/releases
required-projects:
- openstack/requirements
secrets:
- secret: afsdocs_secret
name: afs
vars:
tox_envlist: docs
afs_subpath: "/{{ zuul.project.short_name }}"
- job:
name: promote-tox-docs-site-base
parent: opendev-promote-docs-base
description: |
Promote content from openstack-tox-docs job for some projects
that need a special location.
Publish the results of the tox-docs job to
/afs/.openstack.org/project/{publish_site}.
This is a promote job for ``openstack-tox-docs``.
A job needs to set the variables `publish_site`.
abstract: true
protected: true
vars:
download_artifact_job: openstack-tox-docs
secrets:
- secret: afsdocs_secret-tox-docs-site
name: afs
pass-to-parent: true
- job:
name: promote-airship-docs-website
parent: promote-tox-docs-site-base
description: |
Promote root site content for docs.airshipit.org to airshipit.org/docs.
final: true
allowed-projects:
- airship/docs
vars:
publish_site: "airshipit.org/docs"
- job:
name: promote-airship-project-docs
parent: promote-tox-docs-site-base
description: |
Promote subproject doc content for docs.airshipit.org site.
final: true
allowed-projects:
- airship/airshipctl
- airship/airshipui
- airship/armada
- airship/charts
- airship/deckhand
- airship/divingbell
- airship/drydock
- airship/election
- airship/governance
- airship/pegleg
- airship/porthole
- airship/promenade
- airship/shipyard
- airship/specs
- airship/spyglass
- airship/spyglass-plugin-xls
- airship/treasuremap
vars:
publish_site: "airshipit.org/docs/{zuul[project][short_name]}"
- job:
name: promote-governance-election
parent: promote-tox-docs-site-base
description:
Promote content to governance.openstack.org/election.
final: true
allowed-projects:
- openstack/election
vars:
publish_site: "governance.openstack.org/election"
- job:
name: promote-governance-ideas
parent: promote-tox-docs-site-base
description:
Promote content to governance.openstack.org/ideas.
final: true
allowed-projects:
- openstack/ideas
vars:
publish_site: "governance.openstack.org/ideas"
- job:
name: promote-governance-sigs
parent: promote-tox-docs-site-base
description: |
Promote content to governance.openstack.org/sigs.
final: true
allowed-projects:
- openstack/governance-sigs
vars:
publish_site: "governance.openstack.org/sigs"
- job:
name: promote-governance-tc
parent: promote-tox-docs-site-base
description: |
Promote content to governance.openstack.org/sigs.
final: true
allowed-projects:
- openstack/governance
vars:
publish_site: "governance.openstack.org/tc"
- job:
name: promote-governance-website
parent: promote-tox-docs-site-base
description: |
Promote content to governance.openstack.org.
final: true
allowed-projects:
- openstack/governance-website
vars:
publish_site: "governance.openstack.org/governance"
- job:
name: promote-security
parent: promote-tox-docs-site-base
description: |
Promote content to security.openstack.org.
final: true
allowed-projects:
- openstack/ossa
vars:
publish_site: "security.openstack.org"
- job:
name: promote-openstack-manuals
description: |
Promote content fron build-openstack-manuals job and
publishes it on docs.openstack.org website.
parent: opendev-promote-docs-base
final: true
timeout: 2700
allowed-projects:
- openstack/openstack-manuals
- openstack/security-doc
- openstack/training-guides
vars:
write_root_marker: false
download_artifact_job: build-tox-manuals-publishdocs
secrets:
- secret: afsdocs_secret-openstack-manuals
name: afs
pass-to-parent: true
- job:
name: promote-openstack-manuals-lang
description: |
Promote content fron build-openstack-manuals-lang job and
publishes it on docs.openstack.org website.
parent: opendev-promote-docs-base
final: true
allowed-projects:
- openstack/openstack-manuals
- openstack/security-doc
- openstack/training-guides
vars:
write_root_marker: false
download_artifact_job: build-tox-manuals-publishlang
secrets:
- secret: afsdocs_secret-openstack-manuals
name: afs
pass-to-parent: true
- job:
name: promote-openstack-manuals-developer
description: |
Promote content fron build-openstack-manuals job and
publishes it on developer.openstack.org website.
parent: opendev-promote-docs-base
final: true
allowed-projects:
- openstack/api-site
vars:
write_root_marker: false
download_artifact_job: build-tox-manuals-publishdocs
secrets:
- secret: afsdeveloper_secret-openstack-manuals
name: afs
pass-to-parent: true
- job:
name: promote-api-guide
parent: opendev-promote-docs-base
description: |
Publish api-guide document to
https://docs.openstack.org/api-guide.
This job is run in a promote pipeline to publish documents built
in the gate pipeline.
# We only publish the master branch, so no need to run
# for changes on other branches.
branches: master
final: true
run: playbooks/api-jobs/promote.yaml
vars:
api_path: api-guide
download_artifact_job: build-openstack-api-guide
roles:
- zuul: zuul/zuul-jobs
- zuul: openstack/openstack-zuul-jobs
secrets:
- secret: afsdocs_secret
name: afs
- job:
name: promote-api-ref
parent: opendev-promote-docs-base
description: |
Publish api-ref document to
https://docs.openstack.org/api-ref.
This job is run in a promote pipeline to publish documents built
in the gate pipeline.
# We only publish the master branch, so no need to run
# for changes on other branches.
branches: master
final: true
run: playbooks/api-jobs/promote.yaml
vars:
api_path: api-ref
download_artifact_job: build-openstack-api-ref
roles:
- zuul: zuul/zuul-jobs
- zuul: openstack/openstack-zuul-jobs
secrets:
- secret: afsdocs_secret
name: afs
- job:
name: publish-install-guide
description: |
Publish install-guide document to
https://docs.openstack.org/project-install-guide/
pre-run: playbooks/sphinx/pre.yaml
run: playbooks/sphinx/run.yaml
post-run: playbooks/publish/install-guide.yaml
roles:
- zuul: zuul/zuul-jobs
- zuul: openstack/openstack-zuul-jobs
# This job runs only pre-pike, with pike the documents have been
# integrated into normal builds.
branches:
- stable/ocata
vars:
sphinx_build_dir: install-guide/build
sphinx_source_dir: install-guide/source
secrets:
- secret: afsdocs_secret
name: afs
- job:
name: promote-deploy-guide
parent: opendev-promote-docs-base
description: |
Promote content from build-openstack-deploy-guide.
Publish the results of the build-openstack-deploy-guide job to
/afs/.openstack.org/docs/deploy-guide/{{ zuul.project.short_name }}.
Publishes depending on branch to latest/ (for master), or the
basename of the branch like pike (for stable/pike).
final: true
vars:
download_artifact_job: build-openstack-deploy-guide
secrets:
- secret: afsdocs_secret-deploy-guide
name: afs
pass-to-parent: true
- job:
name: publish-openstack-javascript-content
parent: publish-openstack-artifacts
description: |
Publish javascript content tarballs to tarballs.openstack.org.
Content tarballs contain the built javascript/css/html artifacts. They
are different from source tarballs, which are handled by the
publish-openstack-javascript-tarball job.
pre-run: playbooks/javascript/pre.yaml
run: playbooks/javascript/content.yaml
post-run: playbooks/javascript/publish.yaml
vars:
npm_command: build
- job:
name: publish-openstack-stackviz-element
parent: publish-openstack-artifacts
description: |
Publish javascript content tarballs to tarballs.opendev.org.
Content tarballs contain the built javascript/css/html artifacts. They
are different from source tarballs, which are handled by the
publish-openstack-javascript-tarball job.
This job publishes the tar ball as
https://tarballs.opendev.org/{{ zuul.project.name }}/dist/{{ zuul.project.short_name }}-latest.tar.gz.
This is specific to openstack/stackviz.
allowed-projects:
- openstack/stackviz
pre-run: playbooks/javascript/pre.yaml
run: playbooks/javascript/content.yaml
post-run: playbooks/javascript/post-stackviz.yaml
branches:
- master
vars:
node_version: 10
npm_command: prod
- job:
name: release-openstack-javascript
parent: publish-openstack-artifacts
description: |
Release javascript tarballs to npm.
pre-run: playbooks/javascript/pre.yaml
run: playbooks/javascript/tarball.yaml
post-run: playbooks/javascript/release.yaml
secrets:
- npm_credentials
- gpg_key
- job:
name: openstack-upload-github-mirror
parent: opendev-upload-git-mirror
description: |
Mirrors official projects to github's openstack org
final: true
protected: true
secrets:
- name: git_mirror_credentials
secret: openstack-github-mirroring
pass-to-parent: true
- job:
name: maintain-github-openstack-mirror
description: |
Runs maintenance scripts for the OpenStack GitHub mirror. The script
updates the descriptions, creates new repositories, archives retired
ones, and closes any open PR. It is meant to be run periodically.
final: true
protected: true
run: playbooks/maintain-github-mirror/run.yaml
required-projects:
- name: openstack/governance
secrets:
- name: github_credentials
secret: openstack-github-mirroring
vars:
project_config: "{{ zuul.projects['opendev.org/openstack/project-config'].src_dir }}"
governance: "{{ zuul.projects['opendev.org/openstack/governance'].src_dir }}"
- job:
name: propose-updates
pre-run: playbooks/proposal/pre.yaml
description: |
Sync content to other projects as a proposed change.
run: playbooks/proposal/propose-updates.yaml
protected: true
# Note(frickler): The nodeset is pinned to Focal because we
# require both python 3.8 and 3.9 to be available. This is setup
# in the pre.yaml playbook above; so if this nodeset changes we
# need to carefully consider the python versions any change
# distribution provides and modify the playbook/job accordingly.
nodeset: ubuntu-focal
secrets:
- secret: proposal_ssh_key
name: ssh_key
- job:
name: propose-update-constraints
parent: propose-updates
description: |
Update constraint files for requirements project with a
proposed change.
run: playbooks/proposal/propose-update-constraints.yaml
protected: true
dependencies:
- release-openstack-python
- job:
name: propose-project-config-update
parent: propose-updates
description: |
Update project-config files with a proposed change.
run: playbooks/proposal/propose-project-config-update.yaml
protected: true
- job:
name: publish-wheel-cache-centos-7
description: |
Publish CentOS 7 wheels for OpenStack CI mirrors.
parent: build-wheel-cache-centos-7
pre-run: playbooks/openafs-client/setup.yaml
post-run: playbooks/publish/wheel-mirror.yaml
allowed-projects:
- openstack/requirements
final: true
secrets:
- name: afs
secret: wheel_keytab
- job:
name: publish-wheel-cache-centos-8-stream
description: |
Publish CentOS Stream 8 wheels for OpenStack CI mirrors.
parent: build-wheel-cache-centos-8-stream
pre-run: playbooks/openafs-client/setup.yaml
post-run: playbooks/publish/wheel-mirror.yaml
allowed-projects:
- openstack/requirements
final: true
secrets:
- name: afs
secret: wheel_keytab
- job:
name: publish-wheel-cache-centos-8-stream-arm64
description: |
Publish CentOS Stream 8 wheels for OpenStack CI mirrors.
parent: build-wheel-cache-centos-8-stream-arm64
pre-run: playbooks/openafs-client/setup.yaml
post-run: playbooks/publish/wheel-mirror.yaml
allowed-projects:
- openstack/requirements
final: true
secrets:
- name: afs
secret: wheel_keytab
- job:
name: publish-wheel-cache-centos-9-stream
description: |
Publish CentOS Stream 9 wheels for OpenStack CI mirrors.
parent: build-wheel-cache-centos-9-stream
pre-run: playbooks/openafs-client/setup.yaml
post-run: playbooks/publish/wheel-mirror.yaml
allowed-projects:
- openstack/requirements
final: true
secrets:
- name: afs
secret: wheel_keytab
- job:
name: publish-wheel-cache-centos-9-stream-arm64
description: |
Publish CentOS Stream 9 wheels for OpenStack CI mirrors.
parent: build-wheel-cache-centos-9-stream-arm64
pre-run: playbooks/openafs-client/setup.yaml
post-run: playbooks/publish/wheel-mirror.yaml
allowed-projects:
- openstack/requirements
final: true
secrets:
- name: afs
secret: wheel_keytab
- job:
name: publish-wheel-cache-debian-bullseye
description: |
Publish Debian bullseye wheels for OpenStack CI mirrors.
parent: build-wheel-cache-debian-bullseye
pre-run: playbooks/openafs-client/setup.yaml
post-run: playbooks/publish/wheel-mirror.yaml
allowed-projects:
- openstack/requirements
final: true
secrets:
- name: afs
secret: wheel_keytab
- job:
name: publish-wheel-cache-debian-bullseye-arm64
description: |
Publish Debian bullseye wheels for OpenStack CI mirrors.
parent: build-wheel-cache-debian-bullseye-arm64
pre-run: playbooks/openafs-client/setup.yaml
post-run: playbooks/publish/wheel-mirror.yaml
allowed-projects:
- openstack/requirements
final: true
secrets:
- name: afs
secret: wheel_keytab
- job:
name: publish-wheel-cache-debian-buster
description: |
Publish Debian buster wheels for OpenStack CI mirrors.
parent: build-wheel-cache-debian-buster
pre-run: playbooks/openafs-client/setup.yaml
post-run: playbooks/publish/wheel-mirror.yaml
allowed-projects:
- openstack/requirements
final: true
secrets:
- name: afs
secret: wheel_keytab
- job:
name: publish-wheel-cache-debian-buster-arm64
description: |
Publish Debian buster wheels for OpenStack CI mirrors.
parent: build-wheel-cache-debian-buster-arm64
pre-run: playbooks/openafs-client/setup.yaml
post-run: playbooks/publish/wheel-mirror.yaml
allowed-projects:
- openstack/requirements
final: true
secrets:
- name: afs
secret: wheel_keytab
- job:
name: publish-wheel-cache-ubuntu-jammy
parent: build-wheel-cache-ubuntu-jammy
description: |
Publish Ubuntu Jammy wheels for OpenStack CI mirrors.
pre-run: playbooks/openafs-client/setup.yaml
post-run: playbooks/publish/wheel-mirror.yaml
allowed-projects:
- openstack/requirements
final: true
secrets:
- name: afs
secret: wheel_keytab
- job:
name: publish-wheel-cache-ubuntu-jammy-arm64
parent: build-wheel-cache-ubuntu-jammy-arm64
description: |
Publish Ubuntu Jammy wheels for OpenStack CI mirrors.
pre-run: playbooks/openafs-client/setup.yaml
post-run: playbooks/publish/wheel-mirror.yaml
allowed-projects:
- openstack/requirements
final: true
secrets:
- name: afs
secret: wheel_keytab
- job:
name: publish-wheel-cache-ubuntu-focal
parent: build-wheel-cache-ubuntu-focal
description: |
Publish Ubuntu Focal wheels for OpenStack CI mirrors.
pre-run: playbooks/openafs-client/setup.yaml
post-run: playbooks/publish/wheel-mirror.yaml
allowed-projects:
- openstack/requirements
final: true
secrets:
- name: afs
secret: wheel_keytab
- job:
name: publish-wheel-cache-ubuntu-focal-arm64
parent: build-wheel-cache-ubuntu-focal-arm64
description: |
Publish Ubuntu Focal wheels for OpenStack CI mirrors.
pre-run: playbooks/openafs-client/setup.yaml
post-run: playbooks/publish/wheel-mirror.yaml
allowed-projects:
- openstack/requirements
final: true
secrets:
- name: afs
secret: wheel_keytab
- job:
name: publish-wheel-cache-ubuntu-bionic
parent: build-wheel-cache-ubuntu-bionic
description: |
Publish Ubuntu Bionic wheels for OpenStack CI mirrors.
pre-run: playbooks/openafs-client/setup.yaml
post-run: playbooks/publish/wheel-mirror.yaml
allowed-projects:
- openstack/requirements
final: true
secrets:
- name: afs
secret: wheel_keytab
- job:
name: publish-wheel-cache-ubuntu-bionic-arm64
parent: build-wheel-cache-ubuntu-bionic-arm64
description: |
Publish Ubuntu Bionic wheels for OpenStack CI mirrors.
pre-run: playbooks/openafs-client/setup.yaml
post-run: playbooks/publish/wheel-mirror.yaml
allowed-projects:
- openstack/requirements
final: true
secrets:
- name: afs
secret: wheel_keytab
- job:
name: publish-wheel-cache-ubuntu-xenial
parent: build-wheel-cache-ubuntu-xenial
description: |
Publish Ubuntu Xenial wheels for OpenStack CI mirrors.
pre-run: playbooks/openafs-client/setup.yaml
post-run: playbooks/publish/wheel-mirror.yaml
allowed-projects:
- openstack/requirements
final: true
secrets:
- name: afs
secret: wheel_keytab
- job:
name: release-wheel-cache
description: |
Release published wheels to OpenStack CI mirrors.
run: playbooks/wheel/release.yaml
nodeset:
nodes: []
# Build and publish jobs for the wheel mirror only run against
# master. Restrict the release job to master as well to avoid zuul
# config errors due to stable branches not being able to run their
# job depenendencies.
branches: master
secrets:
- name: afs
secret: afsadmin_keytab
- job:
name: check-release-approval
description: |
Checks that release requests were approved by PTL or release liaison.
This job is specific to the openstack/releases repository.
files:
- ^deliverables/.*$
allowed-projects:
- openstack/releases
required-projects:
- name: openstack/governance
run: playbooks/check-release-approval/run.yaml
final: true
timeout: 120
nodeset:
nodes: []
- job:
name: tag-releases
description: |
Tag projects for a release.
nodeset: ubuntu-focal
pre-run: playbooks/release/pre.yaml
run: playbooks/release/tag.yaml
post-run: playbooks/release/post.yaml
final: true
timeout: 7200
secrets:
- name: lp_creds
secret: lp_creds
- name: ssh_key
secret: release_ssh_key
- gpg_key
- job:
name: trigger-readthedocs-webhook
description: |
Trigger readthedocs to rebuild documentation
Note this job requires some external setup.
#. add the ``openstackci`` user as an admin to your RTD project
#. generate a webhook URL via the "Integrations" dashboard page
#. provide the ``id`` from that URL in a ``rtd_webhook_id`` variable
You probably do not want to use this job directly, but rather
include the `docs-on-readthedocs template
<https://docs.openstack.org/infra/openstack-zuul-jobs/project-templates.html#project_template-docs-on-readthedocs>`__
run: playbooks/publish/trigger-rtd.yaml
post-review: true
final: true
secrets:
- rtd_credentials
- job:
name: project-config-check-main-yaml
description: |
Check file zuul.d/main.yaml in project-config.
pre-run: playbooks/check-main-yaml/pre.yaml
run: playbooks/project-config/run-tox.yaml
post-run: playbooks/check-main-yaml/post.yaml
allowed-projects:
- openstack/project-config
final: true
vars:
tox_envlist: add-projects-to-main
files:
- zuul/main.yaml
- gerrit/projects.yaml
# Limit number of translation jobs accessing translation server since
# Zanata has problems with too many concurrent accesses.
- semaphore:
name: translations
max: 10
- job:
name: upstream-translation-update
parent: propose-updates
description: |
Push strings for translation to translation server.
roles:
- zuul: openstack/openstack-zuul-jobs
pre-run: playbooks/translation/pre.yaml
run: playbooks/translation/upstream-translation-update.yaml
post-run:
- playbooks/translation/post.yaml
- playbooks/translation/openstack-translation-artifacts.yaml
semaphores: translations
protected: true
vars:
constraints_file: '{{ ansible_user_dir }}/src/opendev.org/openstack/requirements/upper-constraints.txt'
required-projects:
- openstack/horizon
- openstack/requirements
# Zanata-cli needs Java 8 and will fail with newer Java, Bionic has Java 8
# This was tested with Zanata up to version 4.6.2 (current release in March 2019).
nodeset: ubuntu-bionic
secrets:
- zanata_api_credentials
- secret: afs_tarballs_opendev_org
name: afs
- job:
name: propose-translation-update
parent: propose-updates
description: |
Import translations from translation server to projects as
proposed change.
roles:
- zuul: openstack/openstack-zuul-jobs
pre-run: playbooks/translation/pre.yaml
run: playbooks/translation/propose-translation-update.yaml
post-run: playbooks/translation/post.yaml
vars:
constraints_file: '{{ ansible_user_dir }}/src/opendev.org/openstack/requirements/upper-constraints.txt'
semaphores: translations
protected: true
required-projects:
- openstack/horizon
- openstack/requirements
# Zanata-cli needs Java 8 and will fail with newer Java, Bionic has Java 8.
# This was tested with Zanata up to version 4.6.2 (current release in March 2019).
nodeset: ubuntu-bionic
secrets:
- zanata_api_credentials
- job:
name: project-config-bindep-fallback
abstract: true
description: |
Check installation of binary packages for file
nodepool/elements/bindep-fallback.txt.
run: playbooks/bindep-fallback/run.yaml
files:
- nodepool/elements/bindep-fallback.txt
- playbooks/bindep-fallback/run.yaml
- job:
name: project-config-bindep-fallback-centos-7
parent: project-config-bindep-fallback
description: |
Check installation of binary packages for file
nodepool/elements/bindep-fallback.txt.
The testing is done for CentOS 7.
nodeset: centos-7
- job:
name: project-config-bindep-fallback-opensuse-15
parent: project-config-bindep-fallback
description: |
Check installation of binary packages for file
nodepool/elements/bindep-fallback.txt.
The testing is done for openSUSE Leap 15.
nodeset: opensuse-15
- job:
name: project-config-bindep-fallback-ubuntu-xenial
parent: project-config-bindep-fallback
description: |
Check installation of binary packages for file
nodepool/elements/bindep-fallback.txt.
The testing is done for Ubuntu Xenial.
nodeset: ubuntu-xenial