Merge "Propose a new goal to migrate all legacy zuul jobs"

This commit is contained in:
Zuul
2020-02-05 04:50:08 +00:00
committed by Gerrit Code Review

View File

@@ -0,0 +1,109 @@
=================================
Switch legacy Zuul jobs to native
=================================
As part of the the switch to Zuul v3, all the existing jobs have been
automatically converted from their Jenkins counterparts.
Unfortunately not all of them have been migrated to fully native
Zuul v3 jobs, making their maintainance more complicated.
Legacy jobs, created using automated scripts, brings with them
a lot of duplicated code. They also rely on obsoleted (zuul-cloner)
or difficult to maintain components (devstack-gate) and in general
an older job creation logic. All these factors make their
maintainence extremely difficult.
Given the benefits of the usage of native Zuul v3 jobs, it is
worth asking why not all the jobs have been converted.
There are several reasons. For example, the required functionality
for native Tempest tests were not available at the time of the switch.
Native Grenade jobs are not yet available,
even though some work is in progress.
Nevertheless, the general status improved significantly in the last year
and we can finally move the remaining legacy jobs to the native Zuul v3
jobs for all official OpenStack projects.
Champion
========
Luigi Toscano (tosky)
Gerrit Topic
============
To facilitate tracking, commits related to this goal should use the
gerrit topic::
native-zuulv3-migration
Completion Criteria
===================
#. All legacy jobs for official OpenStack projects, if still relevant,
should be replaced by native Zuul v3 jobs in the master branch.
#. The replacement jobs should be designed in a way which does not
prevent their backport to the stable branches.
Stretch goals
=============
#. If a replaced job is also used in some stable branches, backport it
to all supported branches.
References
==========
The main reference for converting legacy Zuul jobs is the `Zuul v3
Migration Guide <https://docs.openstack.org/infra/manual/zuulv3.html>`_,
part of the `Infrastructure User Manual
<https://docs.openstack.org/infra/manual/>`_.
A complete reference to the Zuul jobs is available as part of the
`Zuul User's Guide <https://zuul-ci.org/docs/zuul/user/config.html#job>`_.
During the Dublin PTG 2018 the QA team provided some updates and
examples on the Zuul v3 migrations. The slides are not merged yet
in the publications repository but the `work-in-progress patch
<https://review.opendev.org/548178>`_ can still be useful.
Examples of migration:
- sahara-tests: https://review.opendev.org/512058/
and https://review.opendev.org/547669/
This latter was an early migration and the jobs have evolved
a bit since then. Specifically, the second change fixes the
multinode support. Together, and taking into account
the current version of the affected files, they are a
good starting point.
This porting includes both "straightforward" conversions
(inheriting from devstack-tempest)
and examples of custom ansible code.
- python-cinderclient: https://review.opendev.org/672784/
A more recent example of a devstack (non-tempest) job.
Current State / Anticipated Impact
==================================
Jobs which executes devstack alone or combined with common
operations like running tempest tests have been ported already or
can be ported without many problems.
Jobs which requires less standard operations (for example, a cycle of
reconfiguration/test executions, or custom tests) require additional
work.
Grenade-based jobs are not yet available, but there are `patches in advanced
state of development <https://review.opendev.org/#/q/topic:grenade_zuulv3>`_
and they should be ready when the Victoria cycle starts.
If not, finalizing the effort is considered part of the goal,
which can still move forward with all the other non-Grenade conversions.
Once they are finalized, porting most Grenade jobs should be trivial.
While cleaning the legacy jobs from `openstack-zuul-jobs
<https://opendev.org/openstack/openstack-zuul-jobs.git>`_ and
`project-config <https://opendev.org/openstack/project-config.git>`_
is not part of the completion criteria, achieving the stretch goal
would reduce the amount of items to track in those repositories.