[ovirt-devel] gerrit+ci improvement proposal
Nir Soffer
nsoffer at redhat.com
Thu Jun 4 07:26:22 UTC 2015
----- Original Message -----
> From: "Max Kovgan" <mkovgan at redhat.com>
> To: devel at ovirt.org
> Cc: infra at ovirt.org
> Sent: Wednesday, June 3, 2015 8:22:54 PM
> Subject: [ovirt-devel] gerrit+ci improvement proposal
>
> Hi everyone!
> We really want to have reliable and snappy CI: to allow short cycles and
> encourage developers to write tests.
>
> # Problem
>
> Many patches are neither ready for review nor for CI upon submission, which
> is OK.
> But running all the jobs on those patches with limited resources results in:
> overloaded resources, slow response time, unhappy developers.
>
> # Proposed Solution
>
> To run less jobs we know we don’t need to, thus making more resources for the
> jobs we need to run.
> We have been experimenting to make our CI stabler and quicker to respond by
> using gerrit flags. This has improved in both directions very well
> internally.
> Now it seems a good time to let all the oVirt projects to use this.
> This solution indirectly promotes reviews and quick tests - “to fail early”,
> yet full blown static code analysis and long tests to run “when ready”.
>
> # How it works
>
> 2 new gerrit independent flags are added to gerrit.
>
> ## CI flag
>
> Will express patch CI status. Values:
> * +1 CI passed
> * 0 CI did not run yet
> * -1 CI failed
-1
You must have CI error state. Most of the errors I have seen, the CI fail to run,
and the failure is not related to the tested patch.
> Permissions for setting: project maintainers (for special cases) should be
> able to set/override (except Jenkins).
>
> ## Workflow flag
>
> Will express patch “workflow” state. Values:
> * 0 Work In Progress
> * +1 Ready For Review
> * +2 Ready For Merge
> Permissions for setting: Owner can set +1, Project Maintainers can set +2
>
> ## Review + CI Integration:
>
> Merging [“Submit” button to appear] will require: Review+1, CI+1, Workflow+2
> Patch lifecycle now is:
> ---------------------------------------------------------------
> patch state |owner |reviewer |maintainer |CI tests |pass
> ---------------------------------------------------------------
> added/updated |- |- |- |quick |CI+1
> review |Workflow+1|Review+1 |- |heavy |CI+1
> merge ready |- |- |Workflow+2 |gating |CI+1
> merge |- |- |merge |merge |CI+1
-1
Cannot require CI+1, the CI is not reliable enough yet.
Even if the CI will be reliable, a failed test which is not related to the submitted
patch should not block unrelated changes.
> Changes from current workflow:
> Owner only adds reviewers, now owner needs to set "Workflow+1" for the patch
> to be reviewed, and heavily auto-tested.
> Maintainer now needs to set "Workflow+2" and wait for "Submit" button to
> appear after CI has completed running gating tests.
-1
This means more work for developers.
Instead, make workflow default to +1. If the want to disable the CI, she can
set it to 0.
Developers need more power and less process overhead.
Nir
More information about the Devel
mailing list