[ovirt-devel] gerrit+ci improvement proposal

Alexander Wels awels at redhat.com
Wed Jun 3 18:31:24 UTC 2015


On Wednesday, June 03, 2015 01:22:54 PM Max Kovgan wrote:
> 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
> 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
> 
> 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.
> 
> 
> Next step will be to automate merge the change after Workflow+2 has been set
> by the Maintainer and gating tests passed.
> 
> 
> ## Why now?
> 
> It is elimination of waste. The sooner - the better.
> The solution has been used for a while and it works.
> Resolving the problem without gerrit involved will lead to adding unreliable
> code into jobs, and will still be prone to problems: Just recently, 3d ago
> we’ve tried detecting what to run from jenkins relying only on gerrit
> comments so that upon Verified+1, we’d run the job. We could not use
> “Review+1”, because it makes no sense at all, so we left the job to set
> Verified+1. Meaning - re-trigger itself immediately more than 1 times.
> 
>   Jenkins and its visitors very unhappy, and we had to stop those jobs,
> clean up the queue, and spam developers.
> 
> ## OK OK OK. Now what?
> 
> Now we want your comments and opinions before pushing this further:
> Please participate in this thread, so we can start trying it out.
> Ask, Suggest better ideas, all this is welcome.
> 
> 
> Best Regards!
> 
> 
> N.B.
> Of course, this is not written in stone, in case we find a better approach
> on solving those issues, we will change to it. And we will keep improving
> so don't be afraid that it will be enforced: if this does not work out we
> will discard it.
> 
> P.S.
> Kudos to dcaro, most of the work was done by him, and most of this text too.
> 

+1 looks like a good improvement to me.

> 
> 
> 
> Max Kovgan
> 
> Senior Software Engineer
> Red Hat - EMEA ENG Virtualization R&D
> Tel.: +972 9769 2060
> Email: mkovgan [at] redhat [dot] com
> Web: http://www.redhat.com
> RHT Global #: 82-72060
> 
> _______________________________________________
> Devel mailing list
> Devel at ovirt.org
> http://lists.ovirt.org/mailman/listinfo/devel




More information about the Devel mailing list