Re: [ovirt-devel] gerrit+ci improvement proposal

On Jun 7, 2015 10:00 AM, Eyal Edri <eedri@redhat.com> wrote:
----- Original Message -----
From: "Oved Ourfali" <ovedo@redhat.com> To: "Eyal Edri" <eedri@redhat.com> Cc: infra@ovirt.org, devel@ovirt.org Sent: Sunday, June 7, 2015 9:55:56 AM Subject: Re: [ovirt-devel] gerrit+ci improvement proposal
----- Original Message -----
From: "Eyal Edri" <eedri@redhat.com> To: "Eli Mesika" <emesika@redhat.com> Cc: "Oved Ourfali" <ovedo@redhat.com>, devel@ovirt.org, infra@ovirt.org Sent: Sunday, June 7, 2015 9:52:15 AM Subject: Re: [ovirt-devel] gerrit+ci improvement proposal
----- Original Message -----
From: "Eli Mesika" <emesika@redhat.com> To: "Oved Ourfali" <ovedo@redhat.com> Cc: "Eyal Edri" <eedri@redhat.com>, infra@ovirt.org, devel@ovirt.org Sent: Thursday, June 4, 2015 3:49:05 PM Subject: Re: [ovirt-devel] gerrit+ci improvement proposal
----- Original Message -----
From: "Oved Ourfali" <ovedo@redhat.com> To: "Eyal Edri" <eedri@redhat.com> Cc: devel@ovirt.org, infra@ovirt.org Sent: Thursday, June 4, 2015 10:03:02 AM Subject: Re: [ovirt-devel] gerrit+ci improvement proposal
----- Original Message -----
From: "Eyal Edri" <eedri@redhat.com> To: "Sandro Bonazzola" <sbonazzo@redhat.com> Cc: infra@ovirt.org, devel@ovirt.org Sent: Thursday, June 4, 2015 9:46:40 AM Subject: Re: [ovirt-devel] gerrit+ci improvement proposal
----- Original Message ----- > From: "Sandro Bonazzola" <sbonazzo@redhat.com> > To: "Eyal Edri" <eedri@redhat.com>, "Max Kovgan" > <mkovgan@redhat.com> > Cc: devel@ovirt.org, infra@ovirt.org > Sent: Thursday, June 4, 2015 9:11:10 AM > Subject: Re: [ovirt-devel] gerrit+ci improvement proposal > > Il 03/06/2015 21:46, Eyal Edri ha scritto: > > > > > > ----- Original Message ----- > >> From: "Max Kovgan" <mkovgan@redhat.com> > >> To: devel@ovirt.org > >> Cc: infra@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 > >> 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 from me, releasing CI from running non critical and > > un-essential > > jobs > > will not only reduce load from ci, > > and shorted response time for developers, it will allow us to add > > much > > more > > powerful tests such as functional & system > > tests that actually add hosts and run VMs, improving our ability > > to > > find > > regression much more effectively. > > > > Another benefit to consider is saving reviewers time. I.e not > > only > > jenkins > > benefits from Worklow+1, but also human reviewers. > > Instead of looking at a patch that is too early to be reviewed, > > the > > author > > can set the Workflow+1 when the code is ready to review > > (even if he didn't verified it yet), thus saving time to other > > reviewers > > - > > for example people can add an email rule > > to alert them only when they are added to patches that have > > Workflow+1, > > and > > not before. > > For human reviewers I suggest to keep using drafts until the patch > is > finished.
keep using? how many developers do you know are working with drafts until their patch is ready? i agree if everyone would use drafts load on jenkins was already much lower, unfortunately its not the case.
IMO we don't need the "workflow" flag. I'm okay with CI not running on "drafts". And yes... we do use them. We can try and educate people to use them more where needed. Drafts should be widely used in first-phase development, and less on bug-fixes.
In addition, I think the patch owners shouldn't add reviewers, unless they need their input in the stage of the development. Once they want input, they should add reviewers.
1. So, if the patch is draft then no CI runs on it. 2. Once it turns into non-draft, you can run "light-CI" on it. 3. Once the patch has at least one +1 from a (human) reviewer, then it should run the "heavy" CI. 4. Once the patch has +1 from heavy CI, and +2 from reviewer (maintainer), then it can be merged.
That's the process we have today, with slight change on when to run the CI and what CI to run (no CI on drafts, light CI on non-draft, heavy CI on +1 patches).
+1
This is he right approach to go (I am also using drafts and if other don't, we can change that....) Also, regarding the claim that publishing a draft is a one-way process, I don't think that this is problematic, you should publish a draft after it is stable and you addressed all comments and run all tests locally
this might be true, but the problem is: 1. we can't enforce people to use drafts (technically), so until they do, we'll still have a resource problem
We can educate, and I don't see an issue with that.
2. until we do, even "light ci" jobs running per patch will overload the ci without need, this is why relying on another flag will help - if adding workflow is a problem, we can use the CR+1 as first attempt to improve the flow, and consider in the future to use workflow if it will be needed. (maybe we can even set it automatically somehow)
Perhaps marking as "verified" can be this flag. If the patch is verified by the author, then you run light CI on it. If it was also CR+1, run the heavy CI.
question is how soon does an author ticks verify on his patch? does he wait for code review before? for e.g. - i heard from some developers they wait for CI to give them +1 until they even add reviewers, so this might be the chicken and egg problem.
It depends on the patch I guess. Again, I think drafts are enough, and that we shouldn't add another flag here, so suggesting alternatives for that. We can "vote" on that flag addition, and other alternatives, and see what people say.
That way you both don't need a new flag, and you don't waste resources on non-manually-verified bugs.
> Once it's finished and humans reviewed the logic of the patch, > Workflow+1 > should be triggered allowing automation to check the correctness of > the > patch. > IMHO there's no reason for wasting CI time on patches that will be > correct > from an automation point of view but nacked by reviewers. > Especially > if > the > patches are part of a big patchset. > > > > > > And one final note, for Workflow+2 -> this is a preparation for a > > gating > > system, like Zuul used by openstack, that in the future > > we might use as automatic merger pending passing a verification > > step. > > this > > will prevent errors that happen sometimes > > post merge due to conflicts or other issues, and will be another > > level > > of > > validation before final merge. > > But as max said, its all part of the plan and we'll test it of > > course > > before implementing to see its value. > > > > > >> > >> > >> > >> 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@ovirt.org > >> http://lists.ovirt.org/mailman/listinfo/devel > > _______________________________________________ > > Devel mailing list > > Devel@ovirt.org > > http://lists.ovirt.org/mailman/listinfo/devel > > > > > -- > Sandro Bonazzola > Better technology. Faster innovation. Powered by community > collaboration. > See how it works at redhat.com > _______________________________________________ > Infra mailing list > Infra@ovirt.org > http://lists.ovirt.org/mailman/listinfo/infra > > > _______________________________________________ Devel mailing list Devel@ovirt.org http://lists.ovirt.org/mailman/listinfo/devel
_______________________________________________ Infra mailing list Infra@ovirt.org http://lists.ovirt.org/mailman/listinfo/infra
_______________________________________________ Infra mailing list Infra@ovirt.org http://lists.ovirt.org/mailman/listinfo/infra
_______________________________________________ Infra mailing list Infra@ovirt.org http://lists.ovirt.org/mailman/listinfo/infra
_______________________________________________ Infra mailing list Infra@ovirt.org http://lists.ovirt.org/mailman/listinfo/infra
_______________________________________________ Devel mailing list Devel@ovirt.org http://lists.ovirt.org/mailman/listinfo/devel

hi, Dear Developers! We are aware of the urge and pressure to push your patches a.s.a.p before the code freeze. Howeever, with current flow of patch updates, we currently have an overloaded CI, which will result in a very long waiting time for jobs to start SO, in order to reduce that time, please make sure you are using DRAFTs [1] for early stage patches [during human reviews] how to use drafts: 1) using plain git push - refer to [1] 2) using git review plugin if you've installed git review plugin:
git review -D -r <repo> <branch> example with repo "origin" and branch "master": git review -D -r origin master
plugin can be installed as explained here: [2] [1] http://stackoverflow.com/questions/18106064/how-to-push-drafts-to-gerrit [2] http://www.mediawiki.org/wiki/Gerrit/git-review#Fedora.2FCentOS N.B. Using drafts is the only alternative for adding 2 new gerrit flags. If you have better ideas - you are still welcome to suggest. Earlier today I did some mining on gerrit patches status: out of ~1400 open patches ~350 are drafts, which was incouraging. Yet out of all 66 committers for those patches only 6 are using drafts: In [25]: for c in changes: ....: if c.get('status') != 'DRAFT': ....: continue ....: saints.add(c.get('owner').get('name')) ....: In [26]: saints Out[26]: {u'Alon Bar-Lev', u'Liron Aravot', u'Martin Mucha', u'Nir Soffer', u'Piotr Kliczewski', u'Tomer Saban'} Kudos. 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 ----- Forwarded Message ----- From: "Oved Ourfali" <oourfali@redhat.com> To: "Eyal Edri" <eedri@redhat.com> Cc: "Oved Ourfali" <ovedo@redhat.com>, devel@ovirt.org, "infra" <infra@ovirt.org> Sent: Sunday, June 7, 2015 10:05:23 AM Subject: Re: [ovirt-devel] gerrit+ci improvement proposal On Jun 7, 2015 10:00 AM, Eyal Edri <eedri@redhat.com> wrote:
----- Original Message -----
From: "Oved Ourfali" <ovedo@redhat.com> To: "Eyal Edri" <eedri@redhat.com> Cc: infra@ovirt.org, devel@ovirt.org Sent: Sunday, June 7, 2015 9:55:56 AM Subject: Re: [ovirt-devel] gerrit+ci improvement proposal
----- Original Message -----
From: "Eyal Edri" <eedri@redhat.com> To: "Eli Mesika" <emesika@redhat.com> Cc: "Oved Ourfali" <ovedo@redhat.com>, devel@ovirt.org, infra@ovirt.org Sent: Sunday, June 7, 2015 9:52:15 AM Subject: Re: [ovirt-devel] gerrit+ci improvement proposal
----- Original Message -----
From: "Eli Mesika" <emesika@redhat.com> To: "Oved Ourfali" <ovedo@redhat.com> Cc: "Eyal Edri" <eedri@redhat.com>, infra@ovirt.org, devel@ovirt.org Sent: Thursday, June 4, 2015 3:49:05 PM Subject: Re: [ovirt-devel] gerrit+ci improvement proposal
----- Original Message -----
From: "Oved Ourfali" <ovedo@redhat.com> To: "Eyal Edri" <eedri@redhat.com> Cc: devel@ovirt.org, infra@ovirt.org Sent: Thursday, June 4, 2015 10:03:02 AM Subject: Re: [ovirt-devel] gerrit+ci improvement proposal
----- Original Message -----
From: "Eyal Edri" <eedri@redhat.com> To: "Sandro Bonazzola" <sbonazzo@redhat.com> Cc: infra@ovirt.org, devel@ovirt.org Sent: Thursday, June 4, 2015 9:46:40 AM Subject: Re: [ovirt-devel] gerrit+ci improvement proposal
----- Original Message ----- > From: "Sandro Bonazzola" <sbonazzo@redhat.com> > To: "Eyal Edri" <eedri@redhat.com>, "Max Kovgan" > <mkovgan@redhat.com> > Cc: devel@ovirt.org, infra@ovirt.org > Sent: Thursday, June 4, 2015 9:11:10 AM > Subject: Re: [ovirt-devel] gerrit+ci improvement proposal > > Il 03/06/2015 21:46, Eyal Edri ha scritto: > > > > > > ----- Original Message ----- > >> From: "Max Kovgan" <mkovgan@redhat.com> > >> To: devel@ovirt.org > >> Cc: infra@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 > >> 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 from me, releasing CI from running non critical and > > un-essential > > jobs > > will not only reduce load from ci, > > and shorted response time for developers, it will allow us to add > > much > > more > > powerful tests such as functional & system > > tests that actually add hosts and run VMs, improving our ability > > to > > find > > regression much more effectively. > > > > Another benefit to consider is saving reviewers time. I.e not > > only > > jenkins > > benefits from Worklow+1, but also human reviewers. > > Instead of looking at a patch that is too early to be reviewed, > > the > > author > > can set the Workflow+1 when the code is ready to review > > (even if he didn't verified it yet), thus saving time to other > > reviewers > > - > > for example people can add an email rule > > to alert them only when they are added to patches that have > > Workflow+1, > > and > > not before. > > For human reviewers I suggest to keep using drafts until the patch > is > finished.
keep using? how many developers do you know are working with drafts until their patch is ready? i agree if everyone would use drafts load on jenkins was already much lower, unfortunately its not the case.
IMO we don't need the "workflow" flag. I'm okay with CI not running on "drafts". And yes... we do use them. We can try and educate people to use them more where needed. Drafts should be widely used in first-phase development, and less on bug-fixes.
In addition, I think the patch owners shouldn't add reviewers, unless they need their input in the stage of the development. Once they want input, they should add reviewers.
1. So, if the patch is draft then no CI runs on it. 2. Once it turns into non-draft, you can run "light-CI" on it. 3. Once the patch has at least one +1 from a (human) reviewer, then it should run the "heavy" CI. 4. Once the patch has +1 from heavy CI, and +2 from reviewer (maintainer), then it can be merged.
That's the process we have today, with slight change on when to run the CI and what CI to run (no CI on drafts, light CI on non-draft, heavy CI on +1 patches).
+1
This is he right approach to go (I am also using drafts and if other don't, we can change that....) Also, regarding the claim that publishing a draft is a one-way process, I don't think that this is problematic, you should publish a draft after it is stable and you addressed all comments and run all tests locally
this might be true, but the problem is: 1. we can't enforce people to use drafts (technically), so until they do, we'll still have a resource problem
We can educate, and I don't see an issue with that.
2. until we do, even "light ci" jobs running per patch will overload the ci without need, this is why relying on another flag will help - if adding workflow is a problem, we can use the CR+1 as first attempt to improve the flow, and consider in the future to use workflow if it will be needed. (maybe we can even set it automatically somehow)
Perhaps marking as "verified" can be this flag. If the patch is verified by the author, then you run light CI on it. If it was also CR+1, run the heavy CI.
question is how soon does an author ticks verify on his patch? does he wait for code review before? for e.g. - i heard from some developers they wait for CI to give them +1 until they even add reviewers, so this might be the chicken and egg problem.
It depends on the patch I guess. Again, I think drafts are enough, and that we shouldn't add another flag here, so suggesting alternatives for that. We can "vote" on that flag addition, and other alternatives, and see what people say.
That way you both don't need a new flag, and you don't waste resources on non-manually-verified bugs.
> Once it's finished and humans reviewed the logic of the patch, > Workflow+1 > should be triggered allowing automation to check the correctness of > the > patch. > IMHO there's no reason for wasting CI time on patches that will be > correct > from an automation point of view but nacked by reviewers. > Especially > if > the > patches are part of a big patchset. > > > > > > And one final note, for Workflow+2 -> this is a preparation for a > > gating > > system, like Zuul used by openstack, that in the future > > we might use as automatic merger pending passing a verification > > step. > > this > > will prevent errors that happen sometimes > > post merge due to conflicts or other issues, and will be another > > level > > of > > validation before final merge. > > But as max said, its all part of the plan and we'll test it of > > course > > before implementing to see its value. > > > > > >> > >> > >> > >> 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@ovirt.org > >> http://lists.ovirt.org/mailman/listinfo/devel > > _______________________________________________ > > Devel mailing list > > Devel@ovirt.org > > http://lists.ovirt.org/mailman/listinfo/devel > > > > > -- > Sandro Bonazzola > Better technology. Faster innovation. Powered by community > collaboration. > See how it works at redhat.com > _______________________________________________ > Infra mailing list > Infra@ovirt.org > http://lists.ovirt.org/mailman/listinfo/infra > > > _______________________________________________ Devel mailing list Devel@ovirt.org http://lists.ovirt.org/mailman/listinfo/devel
_______________________________________________ Infra mailing list Infra@ovirt.org http://lists.ovirt.org/mailman/listinfo/infra
_______________________________________________ Infra mailing list Infra@ovirt.org http://lists.ovirt.org/mailman/listinfo/infra
_______________________________________________ Infra mailing list Infra@ovirt.org http://lists.ovirt.org/mailman/listinfo/infra
_______________________________________________ Infra mailing list Infra@ovirt.org http://lists.ovirt.org/mailman/listinfo/infra
_______________________________________________ Devel mailing list Devel@ovirt.org http://lists.ovirt.org/mailman/listinfo/devel
_______________________________________________ Devel mailing list Devel@ovirt.org http://lists.ovirt.org/mailman/listinfo/devel

hi, Dear Developers! =20 We are aware of the urge and pressure to push your patches a.s.a.p before=
git review -D -r <repo> <branch> example with repo "origin" and branch "master": git review -D -r origin master =20
Howeever, with current flow of patch updates, we currently have an overlo= aded CI, which will result in a very long waiting time for jobs to start SO, in order to reduce that time, please make sure you are using DRAFTs [= 1] for early stage patches [during human reviews] =20 how to use drafts: 1) using plain git push - refer to [1] 2) using git review plugin if you've installed git review plugin: plugin can be installed as explained here: [2] =20 =20 [1] http://stackoverflow.com/questions/18106064/how-to-push-drafts-to-ger= rit [2] http://www.mediawiki.org/wiki/Gerrit/git-review#Fedora.2FCentOS =20 =20 N.B. =20 Using drafts is the only alternative for adding 2 new gerrit flags. If you have better ideas - you are still welcome to suggest. =20 Earlier today I did some mining on gerrit patches status: out of ~1400 open patches ~350 are drafts, which was incouraging. Yet out of all 66 committers for those patches only 6 are using drafts: In [25]: for c in changes: ....: if c.get('status') !=3D 'DRAFT': ....: continue ....: saints.add(c.get('owner').get('name')) ....: =20 In [26]: saints Out[26]:=20 {u'Alon Bar-Lev', u'Liron Aravot', u'Martin Mucha', u'Nir Soffer', u'Piotr Kliczewski', u'Tomer Saban'} Kudos. =20 =20 =20 Max Kovgan =20 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 =20 ----- Forwarded Message ----- From: "Oved Ourfali" <oourfali@redhat.com> To: "Eyal Edri" <eedri@redhat.com> Cc: "Oved Ourfali" <ovedo@redhat.com>, devel@ovirt.org, "infra" <infra@ov= irt.org> Sent: Sunday, June 7, 2015 10:05:23 AM Subject: Re: [ovirt-devel] gerrit+ci improvement proposal =20 =20 On Jun 7, 2015 10:00 AM, Eyal Edri <eedri@redhat.com> wrote:
----- Original Message -----=20
From: "Oved Ourfali" <ovedo@redhat.com>=20 To: "Eyal Edri" <eedri@redhat.com>=20 Cc: infra@ovirt.org, devel@ovirt.org=20 Sent: Sunday, June 7, 2015 9:55:56 AM=20 Subject: Re: [ovirt-devel] gerrit+ci improvement proposal=20 =20 =20 =20 ----- Original Message -----=20
From: "Eyal Edri" <eedri@redhat.com>=20 To: "Eli Mesika" <emesika@redhat.com>=20 Cc: "Oved Ourfali" <ovedo@redhat.com>, devel@ovirt.org, infra@ovirt=
=2Eorg=20
Sent: Sunday, June 7, 2015 9:52:15 AM=20 Subject: Re: [ovirt-devel] gerrit+ci improvement proposal=20 =20 =20 =20 ----- Original Message -----=20
From: "Eli Mesika" <emesika@redhat.com>=20 To: "Oved Ourfali" <ovedo@redhat.com>=20 Cc: "Eyal Edri" <eedri@redhat.com>, infra@ovirt.org, devel@ovirt.= org=20 Sent: Thursday, June 4, 2015 3:49:05 PM=20 Subject: Re: [ovirt-devel] gerrit+ci improvement proposal=20 =20 =20 =20 ----- Original Message -----=20
From: "Oved Ourfali" <ovedo@redhat.com>=20 To: "Eyal Edri" <eedri@redhat.com>=20 Cc: devel@ovirt.org, infra@ovirt.org=20 Sent: Thursday, June 4, 2015 10:03:02 AM=20 Subject: Re: [ovirt-devel] gerrit+ci improvement proposal=20 =20 =20 =20 ----- Original Message -----=20 > From: "Eyal Edri" <eedri@redhat.com>=20 > To: "Sandro Bonazzola" <sbonazzo@redhat.com>=20 > Cc: infra@ovirt.org, devel@ovirt.org=20 > Sent: Thursday, June 4, 2015 9:46:40 AM=20 > Subject: Re: [ovirt-devel] gerrit+ci improvement proposal=20 >=20 >=20 >=20 > ----- Original Message -----=20 > > From: "Sandro Bonazzola" <sbonazzo@redhat.com>=20 > > To: "Eyal Edri" <eedri@redhat.com>, "Max Kovgan"=20 > > <mkovgan@redhat.com>=20 > > Cc: devel@ovirt.org, infra@ovirt.org=20 > > Sent: Thursday, June 4, 2015 9:11:10 AM=20 > > Subject: Re: [ovirt-devel] gerrit+ci improvement proposal= =20 > >=20 > > Il 03/06/2015 21:46, Eyal Edri ha scritto:=20 > > >=20 > > >=20 > > > ----- Original Message -----=20 > > >> From: "Max Kovgan" <mkovgan@redhat.com>=20 > > >> To: devel@ovirt.org=20 > > >> Cc: infra@ovirt.org=20 > > >> Sent: Wednesday, June 3, 2015 8:22:54 PM=20 > > >> Subject: [ovirt-devel] gerrit+ci improvement proposal=20 > > >>=20 > > >> Hi everyone!=20 > > >> We really want to have reliable and snappy CI: to allow = short=20 > > >> cycles=20 > > >> and=20 > > >> encourage developers to write tests.=20 > > >>=20 > > >> # Problem=20 > > >>=20 > > >> Many patches are neither ready for review nor for CI upo= n=20 > > >> submission,=20 > > >> which=20 > > >> is OK.=20 > > >> But running all the jobs on those patches with limited r= esources=20 > > >> results=20 > > >> in:=20 > > >> overloaded resources, slow response time, unhappy develo=
> > >>=20 > > >> # Proposed Solution=20 > > >>=20 > > >> To run less jobs we know we don=E2=80=99t need to, thus = making more=20 > > >> resources=20 > > >> for=20 > > >> the=20 > > >> jobs we need to run.=20 > > >> We have been experimenting to make our CI stabler and qu= icker to=20 > > >> respond=20 > > >> by=20 > > >> using gerrit flags. This has improved in both directions= very=20 > > >> well=20 > > >> internally.=20 > > >> Now it seems a good time to let all the oVirt projects t= o use=20 > > >> this.=20 > > >> This solution indirectly promotes reviews and quick test= s - =E2=80=9Cto=20 > > >> fail=20 > > >> early=E2=80=9D,=20 > > >> yet full blown static code analysis and long tests to ru= n =E2=80=9Cwhen=20 > > >> ready=E2=80=9D.=20 > > >>=20 > > >> # How it works=20 > > >>=20 > > >> 2 new gerrit independent flags are added to gerrit.=20 > > >>=20 > > >> ## CI flag=20 > > >>=20 > > >> Will express patch CI status. Values:=20 > > >>=C2=A0 * +1 CI passed=20 > > >>=C2=A0 *=C2=A0 0 CI did not run yet=20 > > >>=C2=A0 * -1 CI failed=20 > > >> Permissions for setting: project maintainers (for specia= l cases)=20 > > >> should=20 > > >> be=20 > > >> able to set/override (except Jenkins).=20 > > >>=20 > > >> ## Workflow flag=20 > > >>=20 > > >> Will express patch =E2=80=9Cworkflow=E2=80=9D state. Val= ues:=20 > > >>=C2=A0 *=C2=A0 0 Work In Progress=20 > > >>=C2=A0 * +1 Ready For Review=20 > > >>=C2=A0 * +2 Ready For Merge=20 > > >> Permissions for setting: Owner can set +1, Project Maint= ainers=20 > > >> can=20 > > >> set=20 > > >> +2=20 > > >>=20 > > >> ## Review + CI Integration:=20 > > >>=20 > > >> Merging [=E2=80=9CSubmit=E2=80=9D button to appear] will= require: Review+1,=20 > > >> CI+1,=20 > > >> Workflow+2=20 > > >> Patch lifecycle now is:=20 > > >> --------------------------------------------------------= -------=20 > > >> patch state=C2=A0=C2=A0 |owner=C2=A0=C2=A0=C2=A0=C2=A0 |= reviewer |maintainer |CI tests |pass=20 > > >> --------------------------------------------------------= -------=20 > > >> added/updated |-=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0 |-=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |-=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |quick=C2=A0=C2=A0=C2=A0 |CI+1=20 > > >> review=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |Workfl= ow+1|Review+1 |-=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |hea= vy |CI+1=20 > > >> merge ready=C2=A0=C2=A0 |-=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0 |-=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |Workflow+2= |gating=C2=A0=C2=A0 |CI+1=20 > > >> merge=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |-= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |-=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0 |merge=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |merge=C2=A0=C2=A0= =C2=A0 |CI+1=20 > > >>=20 > > >> Changes from current workflow:=20 > > >> Owner only adds reviewers, now owner needs to set "Workf= low+1"=20 > > >> for=20 > > >> the=20 > > >> patch=20 > > >> to be reviewed, and heavily auto-tested.=20 > > >> Maintainer now needs to set "Workflow+2" and wait for "S= ubmit"=20 > > >> button=20 > > >> to=20 > > >> appear after CI has completed running gating tests.=20 > > >>=20 > > >>=20 > > >> Next step will be to automate merge the change after Wor= kflow+2=20 > > >> has=20 > > >> been=20 > > >> set=20 > > >> by the Maintainer and gating tests passed.=20 > > >>=20 > > >>=20 > > >> ## Why now?=20 > > >>=20 > > >> It is elimination of waste. The sooner - the better.=20 > > >> The solution has been used for a while and it works.=20 > > >> Resolving the problem without gerrit involved will lead = to=20 > > >> adding=20 > > >> unreliable=20 > > >> code into jobs, and will still be prone to problems:=20 > > >>=C2=A0=C2=A0 Just recently, 3d ago we=E2=80=99ve tried de= tecting what to run from=20 > > >>=C2=A0=C2=A0 jenkins=20 > > >>=C2=A0=C2=A0 relying only on gerrit comments so that upon= Verified+1, we=E2=80=99d=20 > > >>=C2=A0=C2=A0 run=20 > > >>=C2=A0=C2=A0 the=20 > > >>=C2=A0=C2=A0 job.=20 > > >>=C2=A0=C2=A0 We could not use =E2=80=9CReview+1=E2=80=9D,= because it makes no sense at all,=20 > > >>=C2=A0=C2=A0 so=20 > > >>=C2=A0=C2=A0 we=20 > > >>=C2=A0=C2=A0 left=20 > > >>=C2=A0=C2=A0 the job to set Verified+1.=20 > > >>=C2=A0=C2=A0 Meaning - re-trigger itself immediately more=
> > >>=C2=A0=C2=A0=20 > > >>=C2=A0=C2=A0 Jenkins and its visitors very unhappy, and w= e had to stop=20 > > >>=C2=A0=C2=A0 those=20 > > >>=C2=A0=C2=A0 jobs,=20 > > >>=C2=A0=C2=A0 clean=20 > > >>=C2=A0=C2=A0 up the queue, and spam developers.=20 > > >>=20 > > >> ## OK OK OK. Now what?=20 > > >>=20 > > >> Now we want your comments and opinions before pushing th= is=20 > > >> further:=20 > > >> Please participate in this thread, so we can start tryin= g it=20 > > >> out.=20 > > >> Ask, Suggest better ideas, all this is welcome.=20 > > >>=20 > > >>=20 > > >> Best Regards!=20 > > >>=20 > > >>=20 > > >> N.B.=20 > > >> Of course, this is not written in stone, in case we find= a=20 > > >> better=20 > > >> approach=20 > > >> on=20 > > >> solving those issues, we will change to it.=20 > > >> And we will keep improving so don't be afraid that it wi= ll be=20 > > >> enforced:=20 > > >> if=20 > > >> this does not work out we will discard it.=20 > > >>=20 > > >> P.S.=20 > > >> Kudos to dcaro, most of the work was done by him, and mo= st of=20 > > >> this=20 > > >> text=20 > > >> too.=20 > > >>=20 > > >=20 > > > +1 from me, releasing CI from running non critical and=20 > > > un-essential=20 > > > jobs=20 > > > will not only reduce load from ci,=20 > > > and shorted response time for developers, it will allow u= s to add=20 > > > much=20 > > > more=20 > > > powerful tests such as functional & system=20 > > > tests that actually add hosts and run VMs, improving our = ability=20 > > > to=20 > > > find=20 > > > regression much more effectively.=20 > > >=20 > > > Another benefit to consider is saving reviewers time. I.e= not=20 > > > only=20 > > > jenkins=20 > > > benefits from Worklow+1, but also human reviewers.=20 > > > Instead of looking at a patch that is too early to be rev= iewed,=20 > > > the=20 > > > author=20 > > > can set the Workflow+1 when the code is ready to review= =20 > > > (even if he didn't verified it yet), thus saving time to = other=20 > > > reviewers=20 > > > -=20 > > > for example people can add an email rule=20 > > > to alert them only when they are added to patches that ha= ve=20 > > > Workflow+1,=20 > > > and=20 > > > not before.=20 > >=20 > > For human reviewers I suggest to keep using drafts until th= e patch=20 > > is=20 > > finished.=20 >=20 > keep using? how many developers do you know are working with = drafts=20 > until=20 > their patch is ready?=20 > i agree if everyone would use drafts load on jenkins was alre= ady much=20 > lower,=20 > unfortunately its not the case.=20 >=20 =20 IMO we don't need the "workflow" flag.=20 I'm okay with CI not running on "drafts". And yes... we do use =
We can try and educate people to use them more where needed.=20 Drafts should be widely used in first-phase development, and le= ss on=20 bug-fixes.=20 =20 In addition, I think the patch owners shouldn't add reviewers, = unless=20 they=20 need their input in the stage of the development.=20 Once they want input, they should add reviewers.=20 =20 1. So, if the patch is draft then no CI runs on it.=20 2. Once it turns into non-draft, you can run "light-CI" on it.= =20 3. Once the patch has at least one +1 from a (human) reviewer, =
should=20 run the "heavy" CI.=20 4. Once the patch has +1 from heavy CI, and +2 from reviewer=20 (maintainer),=20 then it can be merged.=20 =20 That's the process we have today, with slight change on when to= run the=20 CI=20 and what CI to run (no CI on drafts, light CI on non-draft, hea= vy CI on=20 +1=20 patches).=20 =20 +1=20 =20 This is he right approach to go (I am also using drafts and if ot= her=20 don't,=20 we can change that....)=20 Also, regarding the claim that publishing a draft is a one-way pr= ocess, I=20 don't think that this is problematic, you should publish a draft = after it=20 is=20 stable and you addressed all comments and run all tests locally= =20 =20 =20 this might be true, but the problem is:=20 =C2=A0 1. we can't enforce people to use drafts (technically), so un= til they do,=20 =C2=A0 we'll still have a resource problem=20 =20 =20 We can educate, and I don't see an issue with that.=20 =20 =C2=A0 2. until we do, even "light ci" jobs running per patch will o= verload the=20 =C2=A0 ci=20 =C2=A0 without need, this is why relying on another=20 =C2=A0=C2=A0=C2=A0=C2=A0 flag will help - if adding workflow is a pr= oblem, we can use the CR+1=20 =C2=A0=C2=A0=C2=A0=C2=A0 as=20 =C2=A0=C2=A0=C2=A0=C2=A0 first attempt to improve the flow,=20 =C2=A0=C2=A0=C2=A0=C2=A0 and consider in the future to use workflow = if it will be needed. (maybe=20 =C2=A0=C2=A0=C2=A0=C2=A0 we can even set it automatically somehow)= =20 =20 =20 Perhaps marking as "verified" can be this flag.=20 If the patch is verified by the author, then you run light CI on it.= =20 If it was also CR+1, run the heavy CI.=20
question is how soon does an author ticks verify on his patch?=20 does he wait for code review before? for e.g. - i heard from some devel= opers they wait=20 for CI to give them +1 until they even add reviewers, so this might be =
=20 It depends on the patch I guess.=20 Again, I think drafts are enough, and that we shouldn't add another flag= here, so suggesting alternatives for that.=20 We can "vote" on that flag addition, and other alternatives, and see what=
--i7F3eY7HS/tUJxUd Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable As a first contention measure to alleviate the flood, I've changed the way findbugs is triggered to get triggered only on verified +1 (it will set code review flag on pass or failure, and will run on drafts, can't use more than= one condition for the trigger). On 06/09, Max Kovgan wrote: the code freeze. pers.=20 than 1 times.=20 them.=20 then it=20 the chicken and egg problem.=20 people say.=20
=20
=20 That way you both don't need a new flag, and you don't waste resource=
s on=20
non-manually-verified bugs.=20 =20
=20 =20 =20 > > Once it's finished and humans reviewed the logic of the pat= ch,=20 > > Workflow+1=20 > > should be triggered allowing automation to check the correc= tness of=20 > > the=20 > > patch.=20 > > IMHO there's no reason for wasting CI time on patches that = will be=20 > > correct=20 > > from an automation point of view but nacked by reviewers.= =20 > > Especially=20 > > if=20 > > the=20 > > patches are part of a big patchset.=20 > >=20 > >=20 > > >=20 > > > And one final note, for Workflow+2 -> this is a preparati= on for a=20 > > > gating=20 > > > system, like Zuul used by openstack, that in the future= =20 > > > we might use as automatic merger pending passing a verifi= cation=20 > > > step.=20 > > > this=20 > > > will prevent errors that happen sometimes=20 > > > post merge due to conflicts or other issues, and will be = another=20 > > > level=20 > > > of=20 > > > validation before final merge.=20 > > > But as max said, its all part of the plan and we'll test = it of=20 > > > course=20 > > > before implementing to see its value.=20 > > >=20 > > >=20 > > >>=20 > > >>=20 > > >>=20 > > >> Max Kovgan=20 > > >>=20 > > >> Senior Software Engineer=20 > > >> Red Hat - EMEA ENG Virtualization R&D=20 > > >> Tel.: +972 9769 2060=20 > > >> Email: mkovgan [at] redhat [dot] com=20 > > >> Web: http://www.redhat.com=20 > > >> RHT Global #: 82-72060=20 > > >>=20 > > >> _______________________________________________=20 > > >> Devel mailing list=20 > > >> Devel@ovirt.org=20 > > >> http://lists.ovirt.org/mailman/listinfo/devel=20 > > > _______________________________________________=20 > > > Devel mailing list=20 > > > Devel@ovirt.org=20 > > > http://lists.ovirt.org/mailman/listinfo/devel=20 > > >=20 > >=20 > >=20 > > --=20 > > Sandro Bonazzola=20 > > Better technology. Faster innovation. Powered by community= =20 > > collaboration.=20 > > See how it works at redhat.com=20 > > _______________________________________________=20 > > Infra mailing list=20 > > Infra@ovirt.org=20 > > http://lists.ovirt.org/mailman/listinfo/infra=20 > >=20 > >=20 > >=20 > _______________________________________________=20 > Devel mailing list=20 > Devel@ovirt.org=20 > http://lists.ovirt.org/mailman/listinfo/devel=20 >=20 >=20 >=20 _______________________________________________=20 Infra mailing list=20 Infra@ovirt.org=20 http://lists.ovirt.org/mailman/listinfo/infra=20 =20 _______________________________________________=20 Infra mailing list=20 Infra@ovirt.org=20 http://lists.ovirt.org/mailman/listinfo/infra=20 =20 =20 =20 _______________________________________________=20 Infra mailing list=20 Infra@ovirt.org=20 http://lists.ovirt.org/mailman/listinfo/infra=20 =20 _______________________________________________=20 Infra mailing list=20 Infra@ovirt.org=20 http://lists.ovirt.org/mailman/listinfo/infra=20 =20 =20 =20 _______________________________________________=20 Devel mailing list=20 Devel@ovirt.org=20 http://lists.ovirt.org/mailman/listinfo/devel=20
_______________________________________________ Devel mailing list Devel@ovirt.org http://lists.ovirt.org/mailman/listinfo/devel _______________________________________________ Infra mailing list Infra@ovirt.org http://lists.ovirt.org/mailman/listinfo/infra
--=20 David Caro Red Hat S.L. Continuous Integration Engineer - EMEA ENG Virtualization R&D Tel.: +420 532 294 605 Email: dcaro@redhat.com Web: www.redhat.com RHT Global #: 82-62605 --i7F3eY7HS/tUJxUd Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQEcBAEBAgAGBQJVdwkcAAoJEEBxx+HSYmnDfEAH/il/ed5ZiAYMp9cUKtchSizw LR0N4uhWJjZffFSIpt+YhRPTRm9/Ymbpw/2fuQTFpeY6tQ5ls43dIhZsX6lMdBPd qYZhmR8WSpWBnANUI631vhElp9jLwCuYT5G/wRPBGC4q7vxNDfhMLCSWQv3zdNY2 vGHPTjGhSe87tJmeXvFr41eksrvBIfsHCA6pmyFhMehYhn4A+ByOgr3y0U8AQraw EuXZDNM19vzA5WMerXBlh4EEmiHTX5rlyGQd5sIrgA8BQ2moUo3lowRaJX2eI4xM eYtBicXuupYHBxDwr5FY3FGqp2TW/QrijlTnaBzk1HeVZyssGgm5NobKVIF4d1o= =OTxj -----END PGP SIGNATURE----- --i7F3eY7HS/tUJxUd--

Thanks! 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 ----- Original Message ----- From: "David Caro" <dcaroest@redhat.com> To: "Max Kovgan" <mkovgan@redhat.com> Cc: devel@ovirt.org, infra@ovirt.org Sent: Tuesday, June 9, 2015 6:41:16 PM Subject: Re: [urgent] call for developers - upstream jenkins: Build Queue (543) WAS: Fwd: [ovirt-devel] gerrit+ci improvement proposal As a first contention measure to alleviate the flood, I've changed the way findbugs is triggered to get triggered only on verified +1 (it will set code review flag on pass or failure, and will run on drafts, can't use more than one condition for the trigger). On 06/09, Max Kovgan wrote:
hi, Dear Developers!
We are aware of the urge and pressure to push your patches a.s.a.p before the code freeze. Howeever, with current flow of patch updates, we currently have an overloaded CI, which will result in a very long waiting time for jobs to start SO, in order to reduce that time, please make sure you are using DRAFTs [1] for early stage patches [during human reviews]
how to use drafts: 1) using plain git push - refer to [1] 2) using git review plugin if you've installed git review plugin:
git review -D -r <repo> <branch> example with repo "origin" and branch "master": git review -D -r origin master
plugin can be installed as explained here: [2]
[1] http://stackoverflow.com/questions/18106064/how-to-push-drafts-to-gerrit [2] http://www.mediawiki.org/wiki/Gerrit/git-review#Fedora.2FCentOS
N.B.
Using drafts is the only alternative for adding 2 new gerrit flags. If you have better ideas - you are still welcome to suggest.
Earlier today I did some mining on gerrit patches status: out of ~1400 open patches ~350 are drafts, which was incouraging. Yet out of all 66 committers for those patches only 6 are using drafts: In [25]: for c in changes: ....: if c.get('status') != 'DRAFT': ....: continue ....: saints.add(c.get('owner').get('name')) ....: In [26]: saints Out[26]: {u'Alon Bar-Lev', u'Liron Aravot', u'Martin Mucha', u'Nir Soffer', u'Piotr Kliczewski', u'Tomer Saban'} Kudos.
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
----- Forwarded Message ----- From: "Oved Ourfali" <oourfali@redhat.com> To: "Eyal Edri" <eedri@redhat.com> Cc: "Oved Ourfali" <ovedo@redhat.com>, devel@ovirt.org, "infra" <infra@ovirt.org> Sent: Sunday, June 7, 2015 10:05:23 AM Subject: Re: [ovirt-devel] gerrit+ci improvement proposal
On Jun 7, 2015 10:00 AM, Eyal Edri <eedri@redhat.com> wrote:
----- Original Message -----
From: "Oved Ourfali" <ovedo@redhat.com> To: "Eyal Edri" <eedri@redhat.com> Cc: infra@ovirt.org, devel@ovirt.org Sent: Sunday, June 7, 2015 9:55:56 AM Subject: Re: [ovirt-devel] gerrit+ci improvement proposal
----- Original Message -----
From: "Eyal Edri" <eedri@redhat.com> To: "Eli Mesika" <emesika@redhat.com> Cc: "Oved Ourfali" <ovedo@redhat.com>, devel@ovirt.org, infra@ovirt.org Sent: Sunday, June 7, 2015 9:52:15 AM Subject: Re: [ovirt-devel] gerrit+ci improvement proposal
----- Original Message -----
From: "Eli Mesika" <emesika@redhat.com> To: "Oved Ourfali" <ovedo@redhat.com> Cc: "Eyal Edri" <eedri@redhat.com>, infra@ovirt.org, devel@ovirt.org Sent: Thursday, June 4, 2015 3:49:05 PM Subject: Re: [ovirt-devel] gerrit+ci improvement proposal
----- Original Message -----
From: "Oved Ourfali" <ovedo@redhat.com> To: "Eyal Edri" <eedri@redhat.com> Cc: devel@ovirt.org, infra@ovirt.org Sent: Thursday, June 4, 2015 10:03:02 AM Subject: Re: [ovirt-devel] gerrit+ci improvement proposal
----- Original Message ----- > From: "Eyal Edri" <eedri@redhat.com> > To: "Sandro Bonazzola" <sbonazzo@redhat.com> > Cc: infra@ovirt.org, devel@ovirt.org > Sent: Thursday, June 4, 2015 9:46:40 AM > Subject: Re: [ovirt-devel] gerrit+ci improvement proposal > > > > ----- Original Message ----- > > From: "Sandro Bonazzola" <sbonazzo@redhat.com> > > To: "Eyal Edri" <eedri@redhat.com>, "Max Kovgan" > > <mkovgan@redhat.com> > > Cc: devel@ovirt.org, infra@ovirt.org > > Sent: Thursday, June 4, 2015 9:11:10 AM > > Subject: Re: [ovirt-devel] gerrit+ci improvement proposal > > > > Il 03/06/2015 21:46, Eyal Edri ha scritto: > > > > > > > > > ----- Original Message ----- > > >> From: "Max Kovgan" <mkovgan@redhat.com> > > >> To: devel@ovirt.org > > >> Cc: infra@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 > > >> 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 from me, releasing CI from running non critical and > > > un-essential > > > jobs > > > will not only reduce load from ci, > > > and shorted response time for developers, it will allow us to add > > > much > > > more > > > powerful tests such as functional & system > > > tests that actually add hosts and run VMs, improving our ability > > > to > > > find > > > regression much more effectively. > > > > > > Another benefit to consider is saving reviewers time. I.e not > > > only > > > jenkins > > > benefits from Worklow+1, but also human reviewers. > > > Instead of looking at a patch that is too early to be reviewed, > > > the > > > author > > > can set the Workflow+1 when the code is ready to review > > > (even if he didn't verified it yet), thus saving time to other > > > reviewers > > > - > > > for example people can add an email rule > > > to alert them only when they are added to patches that have > > > Workflow+1, > > > and > > > not before. > > > > For human reviewers I suggest to keep using drafts until the patch > > is > > finished. > > keep using? how many developers do you know are working with drafts > until > their patch is ready? > i agree if everyone would use drafts load on jenkins was already much > lower, > unfortunately its not the case. >
IMO we don't need the "workflow" flag. I'm okay with CI not running on "drafts". And yes... we do use them. We can try and educate people to use them more where needed. Drafts should be widely used in first-phase development, and less on bug-fixes.
In addition, I think the patch owners shouldn't add reviewers, unless they need their input in the stage of the development. Once they want input, they should add reviewers.
1. So, if the patch is draft then no CI runs on it. 2. Once it turns into non-draft, you can run "light-CI" on it. 3. Once the patch has at least one +1 from a (human) reviewer, then it should run the "heavy" CI. 4. Once the patch has +1 from heavy CI, and +2 from reviewer (maintainer), then it can be merged.
That's the process we have today, with slight change on when to run the CI and what CI to run (no CI on drafts, light CI on non-draft, heavy CI on +1 patches).
+1
This is he right approach to go (I am also using drafts and if other don't, we can change that....) Also, regarding the claim that publishing a draft is a one-way process, I don't think that this is problematic, you should publish a draft after it is stable and you addressed all comments and run all tests locally
this might be true, but the problem is: 1. we can't enforce people to use drafts (technically), so until they do, we'll still have a resource problem
We can educate, and I don't see an issue with that.
2. until we do, even "light ci" jobs running per patch will overload the ci without need, this is why relying on another flag will help - if adding workflow is a problem, we can use the CR+1 as first attempt to improve the flow, and consider in the future to use workflow if it will be needed. (maybe we can even set it automatically somehow)
Perhaps marking as "verified" can be this flag. If the patch is verified by the author, then you run light CI on it. If it was also CR+1, run the heavy CI.
question is how soon does an author ticks verify on his patch? does he wait for code review before? for e.g. - i heard from some developers they wait for CI to give them +1 until they even add reviewers, so this might be the chicken and egg problem.
It depends on the patch I guess. Again, I think drafts are enough, and that we shouldn't add another flag here, so suggesting alternatives for that. We can "vote" on that flag addition, and other alternatives, and see what people say.
That way you both don't need a new flag, and you don't waste resources on non-manually-verified bugs.
> > Once it's finished and humans reviewed the logic of the patch, > > Workflow+1 > > should be triggered allowing automation to check the correctness of > > the > > patch. > > IMHO there's no reason for wasting CI time on patches that will be > > correct > > from an automation point of view but nacked by reviewers. > > Especially > > if > > the > > patches are part of a big patchset. > > > > > > > > > > And one final note, for Workflow+2 -> this is a preparation for a > > > gating > > > system, like Zuul used by openstack, that in the future > > > we might use as automatic merger pending passing a verification > > > step. > > > this > > > will prevent errors that happen sometimes > > > post merge due to conflicts or other issues, and will be another > > > level > > > of > > > validation before final merge. > > > But as max said, its all part of the plan and we'll test it of > > > course > > > before implementing to see its value. > > > > > > > > >> > > >> > > >> > > >> 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@ovirt.org > > >> http://lists.ovirt.org/mailman/listinfo/devel > > > _______________________________________________ > > > Devel mailing list > > > Devel@ovirt.org > > > http://lists.ovirt.org/mailman/listinfo/devel > > > > > > > > > -- > > Sandro Bonazzola > > Better technology. Faster innovation. Powered by community > > collaboration. > > See how it works at redhat.com > > _______________________________________________ > > Infra mailing list > > Infra@ovirt.org > > http://lists.ovirt.org/mailman/listinfo/infra > > > > > > > _______________________________________________ > Devel mailing list > Devel@ovirt.org > http://lists.ovirt.org/mailman/listinfo/devel > > > _______________________________________________ Infra mailing list Infra@ovirt.org http://lists.ovirt.org/mailman/listinfo/infra
_______________________________________________ Infra mailing list Infra@ovirt.org http://lists.ovirt.org/mailman/listinfo/infra
_______________________________________________ Infra mailing list Infra@ovirt.org http://lists.ovirt.org/mailman/listinfo/infra
_______________________________________________ Infra mailing list Infra@ovirt.org http://lists.ovirt.org/mailman/listinfo/infra
_______________________________________________ Devel mailing list Devel@ovirt.org http://lists.ovirt.org/mailman/listinfo/devel
_______________________________________________ Devel mailing list Devel@ovirt.org http://lists.ovirt.org/mailman/listinfo/devel _______________________________________________ Infra mailing list Infra@ovirt.org http://lists.ovirt.org/mailman/listinfo/infra
-- David Caro Red Hat S.L. Continuous Integration Engineer - EMEA ENG Virtualization R&D Tel.: +420 532 294 605 Email: dcaro@redhat.com Web: www.redhat.com RHT Global #: 82-62605

=20 On Jun 7, 2015 10:00 AM, Eyal Edri <eedri@redhat.com> wrote:
----- Original Message -----=20
From: "Oved Ourfali" <ovedo@redhat.com>=20 To: "Eyal Edri" <eedri@redhat.com>=20 Cc: infra@ovirt.org, devel@ovirt.org=20 Sent: Sunday, June 7, 2015 9:55:56 AM=20 Subject: Re: [ovirt-devel] gerrit+ci improvement proposal=20 =20 =20 =20 ----- Original Message -----=20
From: "Eyal Edri" <eedri@redhat.com>=20 To: "Eli Mesika" <emesika@redhat.com>=20 Cc: "Oved Ourfali" <ovedo@redhat.com>, devel@ovirt.org, infra@ovirt=
=2Eorg=20
Sent: Sunday, June 7, 2015 9:52:15 AM=20 Subject: Re: [ovirt-devel] gerrit+ci improvement proposal=20 =20 =20 =20 ----- Original Message -----=20
From: "Eli Mesika" <emesika@redhat.com>=20 To: "Oved Ourfali" <ovedo@redhat.com>=20 Cc: "Eyal Edri" <eedri@redhat.com>, infra@ovirt.org, devel@ovirt.= org=20 Sent: Thursday, June 4, 2015 3:49:05 PM=20 Subject: Re: [ovirt-devel] gerrit+ci improvement proposal=20 =20 =20 =20 ----- Original Message -----=20
From: "Oved Ourfali" <ovedo@redhat.com>=20 To: "Eyal Edri" <eedri@redhat.com>=20 Cc: devel@ovirt.org, infra@ovirt.org=20 Sent: Thursday, June 4, 2015 10:03:02 AM=20 Subject: Re: [ovirt-devel] gerrit+ci improvement proposal=20 =20 =20 =20 ----- Original Message -----=20 > From: "Eyal Edri" <eedri@redhat.com>=20 > To: "Sandro Bonazzola" <sbonazzo@redhat.com>=20 > Cc: infra@ovirt.org, devel@ovirt.org=20 > Sent: Thursday, June 4, 2015 9:46:40 AM=20 > Subject: Re: [ovirt-devel] gerrit+ci improvement proposal=20 >=20 >=20 >=20 > ----- Original Message -----=20 > > From: "Sandro Bonazzola" <sbonazzo@redhat.com>=20 > > To: "Eyal Edri" <eedri@redhat.com>, "Max Kovgan"=20 > > <mkovgan@redhat.com>=20 > > Cc: devel@ovirt.org, infra@ovirt.org=20 > > Sent: Thursday, June 4, 2015 9:11:10 AM=20 > > Subject: Re: [ovirt-devel] gerrit+ci improvement proposal= =20 > >=20 > > Il 03/06/2015 21:46, Eyal Edri ha scritto:=20 > > >=20 > > >=20 > > > ----- Original Message -----=20 > > >> From: "Max Kovgan" <mkovgan@redhat.com>=20 > > >> To: devel@ovirt.org=20 > > >> Cc: infra@ovirt.org=20 > > >> Sent: Wednesday, June 3, 2015 8:22:54 PM=20 > > >> Subject: [ovirt-devel] gerrit+ci improvement proposal=20 > > >>=20 > > >> Hi everyone!=20 > > >> We really want to have reliable and snappy CI: to allow = short=20 > > >> cycles=20 > > >> and=20 > > >> encourage developers to write tests.=20 > > >>=20 > > >> # Problem=20 > > >>=20 > > >> Many patches are neither ready for review nor for CI upo= n=20 > > >> submission,=20 > > >> which=20 > > >> is OK.=20 > > >> But running all the jobs on those patches with limited r= esources=20 > > >> results=20 > > >> in:=20 > > >> overloaded resources, slow response time, unhappy develo=
> > >>=20 > > >> # Proposed Solution=20 > > >>=20 > > >> To run less jobs we know we don=E2=80=99t need to, thus = making more=20 > > >> resources=20 > > >> for=20 > > >> the=20 > > >> jobs we need to run.=20 > > >> We have been experimenting to make our CI stabler and qu= icker to=20 > > >> respond=20 > > >> by=20 > > >> using gerrit flags. This has improved in both directions= very=20 > > >> well=20 > > >> internally.=20 > > >> Now it seems a good time to let all the oVirt projects t= o use=20 > > >> this.=20 > > >> This solution indirectly promotes reviews and quick test= s - =E2=80=9Cto=20 > > >> fail=20 > > >> early=E2=80=9D,=20 > > >> yet full blown static code analysis and long tests to ru= n =E2=80=9Cwhen=20 > > >> ready=E2=80=9D.=20 > > >>=20 > > >> # How it works=20 > > >>=20 > > >> 2 new gerrit independent flags are added to gerrit.=20 > > >>=20 > > >> ## CI flag=20 > > >>=20 > > >> Will express patch CI status. Values:=20 > > >>=C2=A0 * +1 CI passed=20 > > >>=C2=A0 *=C2=A0 0 CI did not run yet=20 > > >>=C2=A0 * -1 CI failed=20 > > >> Permissions for setting: project maintainers (for specia= l cases)=20 > > >> should=20 > > >> be=20 > > >> able to set/override (except Jenkins).=20 > > >>=20 > > >> ## Workflow flag=20 > > >>=20 > > >> Will express patch =E2=80=9Cworkflow=E2=80=9D state. Val= ues:=20 > > >>=C2=A0 *=C2=A0 0 Work In Progress=20 > > >>=C2=A0 * +1 Ready For Review=20 > > >>=C2=A0 * +2 Ready For Merge=20 > > >> Permissions for setting: Owner can set +1, Project Maint= ainers=20 > > >> can=20 > > >> set=20 > > >> +2=20 > > >>=20 > > >> ## Review + CI Integration:=20 > > >>=20 > > >> Merging [=E2=80=9CSubmit=E2=80=9D button to appear] will= require: Review+1,=20 > > >> CI+1,=20 > > >> Workflow+2=20 > > >> Patch lifecycle now is:=20 > > >> --------------------------------------------------------= -------=20 > > >> patch state=C2=A0=C2=A0 |owner=C2=A0=C2=A0=C2=A0=C2=A0 |= reviewer |maintainer |CI tests |pass=20 > > >> --------------------------------------------------------= -------=20 > > >> added/updated |-=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0 |-=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |-=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |quick=C2=A0=C2=A0=C2=A0 |CI+1=20 > > >> review=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |Workfl= ow+1|Review+1 |-=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |hea= vy |CI+1=20 > > >> merge ready=C2=A0=C2=A0 |-=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0 |-=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |Workflow+2= |gating=C2=A0=C2=A0 |CI+1=20 > > >> merge=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |-= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |-=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0 |merge=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |merge=C2=A0=C2=A0= =C2=A0 |CI+1=20 > > >>=20 > > >> Changes from current workflow:=20 > > >> Owner only adds reviewers, now owner needs to set "Workf= low+1"=20 > > >> for=20 > > >> the=20 > > >> patch=20 > > >> to be reviewed, and heavily auto-tested.=20 > > >> Maintainer now needs to set "Workflow+2" and wait for "S= ubmit"=20 > > >> button=20 > > >> to=20 > > >> appear after CI has completed running gating tests.=20 > > >>=20 > > >>=20 > > >> Next step will be to automate merge the change after Wor= kflow+2=20 > > >> has=20 > > >> been=20 > > >> set=20 > > >> by the Maintainer and gating tests passed.=20 > > >>=20 > > >>=20 > > >> ## Why now?=20 > > >>=20 > > >> It is elimination of waste. The sooner - the better.=20 > > >> The solution has been used for a while and it works.=20 > > >> Resolving the problem without gerrit involved will lead = to=20 > > >> adding=20 > > >> unreliable=20 > > >> code into jobs, and will still be prone to problems:=20 > > >>=C2=A0=C2=A0 Just recently, 3d ago we=E2=80=99ve tried de= tecting what to run from=20 > > >>=C2=A0=C2=A0 jenkins=20 > > >>=C2=A0=C2=A0 relying only on gerrit comments so that upon= Verified+1, we=E2=80=99d=20 > > >>=C2=A0=C2=A0 run=20 > > >>=C2=A0=C2=A0 the=20 > > >>=C2=A0=C2=A0 job.=20 > > >>=C2=A0=C2=A0 We could not use =E2=80=9CReview+1=E2=80=9D,= because it makes no sense at all,=20 > > >>=C2=A0=C2=A0 so=20 > > >>=C2=A0=C2=A0 we=20 > > >>=C2=A0=C2=A0 left=20 > > >>=C2=A0=C2=A0 the job to set Verified+1.=20 > > >>=C2=A0=C2=A0 Meaning - re-trigger itself immediately more=
> > >>=C2=A0=C2=A0=20 > > >>=C2=A0=C2=A0 Jenkins and its visitors very unhappy, and w= e had to stop=20 > > >>=C2=A0=C2=A0 those=20 > > >>=C2=A0=C2=A0 jobs,=20 > > >>=C2=A0=C2=A0 clean=20 > > >>=C2=A0=C2=A0 up the queue, and spam developers.=20 > > >>=20 > > >> ## OK OK OK. Now what?=20 > > >>=20 > > >> Now we want your comments and opinions before pushing th= is=20 > > >> further:=20 > > >> Please participate in this thread, so we can start tryin= g it=20 > > >> out.=20 > > >> Ask, Suggest better ideas, all this is welcome.=20 > > >>=20 > > >>=20 > > >> Best Regards!=20 > > >>=20 > > >>=20 > > >> N.B.=20 > > >> Of course, this is not written in stone, in case we find= a=20 > > >> better=20 > > >> approach=20 > > >> on=20 > > >> solving those issues, we will change to it.=20 > > >> And we will keep improving so don't be afraid that it wi= ll be=20 > > >> enforced:=20 > > >> if=20 > > >> this does not work out we will discard it.=20 > > >>=20 > > >> P.S.=20 > > >> Kudos to dcaro, most of the work was done by him, and mo= st of=20 > > >> this=20 > > >> text=20 > > >> too.=20 > > >>=20 > > >=20 > > > +1 from me, releasing CI from running non critical and=20 > > > un-essential=20 > > > jobs=20 > > > will not only reduce load from ci,=20 > > > and shorted response time for developers, it will allow u= s to add=20 > > > much=20 > > > more=20 > > > powerful tests such as functional & system=20 > > > tests that actually add hosts and run VMs, improving our = ability=20 > > > to=20 > > > find=20 > > > regression much more effectively.=20 > > >=20 > > > Another benefit to consider is saving reviewers time. I.e= not=20 > > > only=20 > > > jenkins=20 > > > benefits from Worklow+1, but also human reviewers.=20 > > > Instead of looking at a patch that is too early to be rev= iewed,=20 > > > the=20 > > > author=20 > > > can set the Workflow+1 when the code is ready to review= =20 > > > (even if he didn't verified it yet), thus saving time to = other=20 > > > reviewers=20 > > > -=20 > > > for example people can add an email rule=20 > > > to alert them only when they are added to patches that ha= ve=20 > > > Workflow+1,=20 > > > and=20 > > > not before.=20 > >=20 > > For human reviewers I suggest to keep using drafts until th= e patch=20 > > is=20 > > finished.=20 >=20 > keep using? how many developers do you know are working with = drafts=20 > until=20 > their patch is ready?=20 > i agree if everyone would use drafts load on jenkins was alre= ady much=20 > lower,=20 > unfortunately its not the case.=20 >=20 =20 IMO we don't need the "workflow" flag.=20 I'm okay with CI not running on "drafts". And yes... we do use =
We can try and educate people to use them more where needed.=20 Drafts should be widely used in first-phase development, and le= ss on=20 bug-fixes.=20 =20 In addition, I think the patch owners shouldn't add reviewers, = unless=20 they=20 need their input in the stage of the development.=20 Once they want input, they should add reviewers.=20 =20 1. So, if the patch is draft then no CI runs on it.=20 2. Once it turns into non-draft, you can run "light-CI" on it.= =20 3. Once the patch has at least one +1 from a (human) reviewer, =
should=20 run the "heavy" CI.=20 4. Once the patch has +1 from heavy CI, and +2 from reviewer=20 (maintainer),=20 then it can be merged.=20 =20 That's the process we have today, with slight change on when to= run the=20 CI=20 and what CI to run (no CI on drafts, light CI on non-draft, hea= vy CI on=20 +1=20 patches).=20 =20 +1=20 =20 This is he right approach to go (I am also using drafts and if ot= her=20 don't,=20 we can change that....)=20 Also, regarding the claim that publishing a draft is a one-way pr= ocess, I=20 don't think that this is problematic, you should publish a draft = after it=20 is=20 stable and you addressed all comments and run all tests locally= =20 =20 =20 this might be true, but the problem is:=20 =C2=A0 1. we can't enforce people to use drafts (technically), so un= til they do,=20 =C2=A0 we'll still have a resource problem=20 =20 =20 We can educate, and I don't see an issue with that.=20 =20 =C2=A0 2. until we do, even "light ci" jobs running per patch will o= verload the=20 =C2=A0 ci=20 =C2=A0 without need, this is why relying on another=20 =C2=A0=C2=A0=C2=A0=C2=A0 flag will help - if adding workflow is a pr= oblem, we can use the CR+1=20 =C2=A0=C2=A0=C2=A0=C2=A0 as=20 =C2=A0=C2=A0=C2=A0=C2=A0 first attempt to improve the flow,=20 =C2=A0=C2=A0=C2=A0=C2=A0 and consider in the future to use workflow = if it will be needed. (maybe=20 =C2=A0=C2=A0=C2=A0=C2=A0 we can even set it automatically somehow)= =20 =20 =20 Perhaps marking as "verified" can be this flag.=20 If the patch is verified by the author, then you run light CI on it.= =20 If it was also CR+1, run the heavy CI.=20
question is how soon does an author ticks verify on his patch?=20 does he wait for code review before? for e.g. - i heard from some devel= opers they wait=20 for CI to give them +1 until they even add reviewers, so this might be =
=20 It depends on the patch I guess.=20 Again, I think drafts are enough, and that we shouldn't add another flag= here, so suggesting alternatives for that.=20 We can "vote" on that flag addition, and other alternatives, and see what=
--dCSxeJc5W8HZXZrD Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable For now can we agree that we want the ci flag at least? On 06/07, Oved Ourfali wrote: pers.=20 than 1 times.=20 them.=20 then it=20 the chicken and egg problem.=20 people say.=20
=20
=20 That way you both don't need a new flag, and you don't waste resource=
s on=20
non-manually-verified bugs.=20 =20
=20 =20 =20 > > Once it's finished and humans reviewed the logic of the pat= ch,=20 > > Workflow+1=20 > > should be triggered allowing automation to check the correc= tness of=20 > > the=20 > > patch.=20 > > IMHO there's no reason for wasting CI time on patches that = will be=20 > > correct=20 > > from an automation point of view but nacked by reviewers.= =20 > > Especially=20 > > if=20 > > the=20 > > patches are part of a big patchset.=20 > >=20 > >=20 > > >=20 > > > And one final note, for Workflow+2 -> this is a preparati= on for a=20 > > > gating=20 > > > system, like Zuul used by openstack, that in the future= =20 > > > we might use as automatic merger pending passing a verifi= cation=20 > > > step.=20 > > > this=20 > > > will prevent errors that happen sometimes=20 > > > post merge due to conflicts or other issues, and will be = another=20 > > > level=20 > > > of=20 > > > validation before final merge.=20 > > > But as max said, its all part of the plan and we'll test = it of=20 > > > course=20 > > > before implementing to see its value.=20 > > >=20 > > >=20 > > >>=20 > > >>=20 > > >>=20 > > >> Max Kovgan=20 > > >>=20 > > >> Senior Software Engineer=20 > > >> Red Hat - EMEA ENG Virtualization R&D=20 > > >> Tel.: +972 9769 2060=20 > > >> Email: mkovgan [at] redhat [dot] com=20 > > >> Web: http://www.redhat.com=20 > > >> RHT Global #: 82-72060=20 > > >>=20 > > >> _______________________________________________=20 > > >> Devel mailing list=20 > > >> Devel@ovirt.org=20 > > >> http://lists.ovirt.org/mailman/listinfo/devel=20 > > > _______________________________________________=20 > > > Devel mailing list=20 > > > Devel@ovirt.org=20 > > > http://lists.ovirt.org/mailman/listinfo/devel=20 > > >=20 > >=20 > >=20 > > --=20 > > Sandro Bonazzola=20 > > Better technology. Faster innovation. Powered by community= =20 > > collaboration.=20 > > See how it works at redhat.com=20 > > _______________________________________________=20 > > Infra mailing list=20 > > Infra@ovirt.org=20 > > http://lists.ovirt.org/mailman/listinfo/infra=20 > >=20 > >=20 > >=20 > _______________________________________________=20 > Devel mailing list=20 > Devel@ovirt.org=20 > http://lists.ovirt.org/mailman/listinfo/devel=20 >=20 >=20 >=20 _______________________________________________=20 Infra mailing list=20 Infra@ovirt.org=20 http://lists.ovirt.org/mailman/listinfo/infra=20 =20 _______________________________________________=20 Infra mailing list=20 Infra@ovirt.org=20 http://lists.ovirt.org/mailman/listinfo/infra=20 =20 =20 =20 _______________________________________________=20 Infra mailing list=20 Infra@ovirt.org=20 http://lists.ovirt.org/mailman/listinfo/infra=20 =20 _______________________________________________=20 Infra mailing list=20 Infra@ovirt.org=20 http://lists.ovirt.org/mailman/listinfo/infra=20 =20 =20 =20 _______________________________________________=20 Devel mailing list=20 Devel@ovirt.org=20 http://lists.ovirt.org/mailman/listinfo/devel=20
_______________________________________________ Infra mailing list Infra@ovirt.org http://lists.ovirt.org/mailman/listinfo/infra
--=20 David Caro Red Hat S.L. Continuous Integration Engineer - EMEA ENG Virtualization R&D Tel.: +420 532 294 605 Email: dcaro@redhat.com Web: www.redhat.com RHT Global #: 82-62605 --dCSxeJc5W8HZXZrD Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQEcBAEBAgAGBQJVeWCVAAoJEEBxx+HSYmnDspcH/09dUBy31XXk57GW3m4eo+3O rvUxKehUsoeH4Zo8ltvPCiwE7PdkbfFQhjbpfHeiamMSoiBwu1ZwhOdBy6NOBhcT z42MWNb4EYLh4rhzSngYMkL6ixiPLpbY7IRU3eeoJ8Di0gDQFRq02iqBrZGyx62j RhNCEFc1RKhOuGdXROku00LVOPjmvUYZTPva9mq0YoAGH5UFIreblJIEXLSorEDQ WI0BZ526Nnh/ytQYISpFT8wPZ59/fspumJOTvOeF30vdMapqEEdt5TOLdl8jKBOO aJ9UQt4A8jPfpS3OP/bIjQ0OpKwHNBFdP0gGp54HqRR15CNOwBkpyt+7u4Ixv+8= =XaLx -----END PGP SIGNATURE----- --dCSxeJc5W8HZXZrD--

Il 11/06/2015 12:19, David Caro ha scritto:
For now can we agree that we want the ci flag at least?
+1
On 06/07, Oved Ourfali wrote:
On Jun 7, 2015 10:00 AM, Eyal Edri <eedri@redhat.com> wrote:
----- Original Message -----
From: "Oved Ourfali" <ovedo@redhat.com> To: "Eyal Edri" <eedri@redhat.com> Cc: infra@ovirt.org, devel@ovirt.org Sent: Sunday, June 7, 2015 9:55:56 AM Subject: Re: [ovirt-devel] gerrit+ci improvement proposal
----- Original Message -----
From: "Eyal Edri" <eedri@redhat.com> To: "Eli Mesika" <emesika@redhat.com> Cc: "Oved Ourfali" <ovedo@redhat.com>, devel@ovirt.org, infra@ovirt.org Sent: Sunday, June 7, 2015 9:52:15 AM Subject: Re: [ovirt-devel] gerrit+ci improvement proposal
----- Original Message -----
From: "Eli Mesika" <emesika@redhat.com> To: "Oved Ourfali" <ovedo@redhat.com> Cc: "Eyal Edri" <eedri@redhat.com>, infra@ovirt.org, devel@ovirt.org Sent: Thursday, June 4, 2015 3:49:05 PM Subject: Re: [ovirt-devel] gerrit+ci improvement proposal
----- Original Message ----- > From: "Oved Ourfali" <ovedo@redhat.com> > To: "Eyal Edri" <eedri@redhat.com> > Cc: devel@ovirt.org, infra@ovirt.org > Sent: Thursday, June 4, 2015 10:03:02 AM > Subject: Re: [ovirt-devel] gerrit+ci improvement proposal > > > > ----- Original Message ----- >> From: "Eyal Edri" <eedri@redhat.com> >> To: "Sandro Bonazzola" <sbonazzo@redhat.com> >> Cc: infra@ovirt.org, devel@ovirt.org >> Sent: Thursday, June 4, 2015 9:46:40 AM >> Subject: Re: [ovirt-devel] gerrit+ci improvement proposal >> >> >> >> ----- Original Message ----- >>> From: "Sandro Bonazzola" <sbonazzo@redhat.com> >>> To: "Eyal Edri" <eedri@redhat.com>, "Max Kovgan" >>> <mkovgan@redhat.com> >>> Cc: devel@ovirt.org, infra@ovirt.org >>> Sent: Thursday, June 4, 2015 9:11:10 AM >>> Subject: Re: [ovirt-devel] gerrit+ci improvement proposal >>> >>> Il 03/06/2015 21:46, Eyal Edri ha scritto: >>>> >>>> >>>> ----- Original Message ----- >>>>> From: "Max Kovgan" <mkovgan@redhat.com> >>>>> To: devel@ovirt.org >>>>> Cc: infra@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 >>>>> 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 from me, releasing CI from running non critical and >>>> un-essential >>>> jobs >>>> will not only reduce load from ci, >>>> and shorted response time for developers, it will allow us to add >>>> much >>>> more >>>> powerful tests such as functional & system >>>> tests that actually add hosts and run VMs, improving our ability >>>> to >>>> find >>>> regression much more effectively. >>>> >>>> Another benefit to consider is saving reviewers time. I.e not >>>> only >>>> jenkins >>>> benefits from Worklow+1, but also human reviewers. >>>> Instead of looking at a patch that is too early to be reviewed, >>>> the >>>> author >>>> can set the Workflow+1 when the code is ready to review >>>> (even if he didn't verified it yet), thus saving time to other >>>> reviewers >>>> - >>>> for example people can add an email rule >>>> to alert them only when they are added to patches that have >>>> Workflow+1, >>>> and >>>> not before. >>> >>> For human reviewers I suggest to keep using drafts until the patch >>> is >>> finished. >> >> keep using? how many developers do you know are working with drafts >> until >> their patch is ready? >> i agree if everyone would use drafts load on jenkins was already much >> lower, >> unfortunately its not the case. >> > > IMO we don't need the "workflow" flag. > I'm okay with CI not running on "drafts". And yes... we do use them. > We can try and educate people to use them more where needed. > Drafts should be widely used in first-phase development, and less on > bug-fixes. > > In addition, I think the patch owners shouldn't add reviewers, unless > they > need their input in the stage of the development. > Once they want input, they should add reviewers. > > 1. So, if the patch is draft then no CI runs on it. > 2. Once it turns into non-draft, you can run "light-CI" on it. > 3. Once the patch has at least one +1 from a (human) reviewer, then it > should > run the "heavy" CI. > 4. Once the patch has +1 from heavy CI, and +2 from reviewer > (maintainer), > then it can be merged. > > That's the process we have today, with slight change on when to run the > CI > and what CI to run (no CI on drafts, light CI on non-draft, heavy CI on > +1 > patches).
+1
This is he right approach to go (I am also using drafts and if other don't, we can change that....) Also, regarding the claim that publishing a draft is a one-way process, I don't think that this is problematic, you should publish a draft after it is stable and you addressed all comments and run all tests locally
this might be true, but the problem is: 1. we can't enforce people to use drafts (technically), so until they do, we'll still have a resource problem
We can educate, and I don't see an issue with that.
2. until we do, even "light ci" jobs running per patch will overload the ci without need, this is why relying on another flag will help - if adding workflow is a problem, we can use the CR+1 as first attempt to improve the flow, and consider in the future to use workflow if it will be needed. (maybe we can even set it automatically somehow)
Perhaps marking as "verified" can be this flag. If the patch is verified by the author, then you run light CI on it. If it was also CR+1, run the heavy CI.
question is how soon does an author ticks verify on his patch? does he wait for code review before? for e.g. - i heard from some developers they wait for CI to give them +1 until they even add reviewers, so this might be the chicken and egg problem.
It depends on the patch I guess. Again, I think drafts are enough, and that we shouldn't add another flag here, so suggesting alternatives for that. We can "vote" on that flag addition, and other alternatives, and see what people say.
That way you both don't need a new flag, and you don't waste resources on non-manually-verified bugs.
> > > >>> Once it's finished and humans reviewed the logic of the patch, >>> Workflow+1 >>> should be triggered allowing automation to check the correctness of >>> the >>> patch. >>> IMHO there's no reason for wasting CI time on patches that will be >>> correct >>> from an automation point of view but nacked by reviewers. >>> Especially >>> if >>> the >>> patches are part of a big patchset. >>> >>> >>>> >>>> And one final note, for Workflow+2 -> this is a preparation for a >>>> gating >>>> system, like Zuul used by openstack, that in the future >>>> we might use as automatic merger pending passing a verification >>>> step. >>>> this >>>> will prevent errors that happen sometimes >>>> post merge due to conflicts or other issues, and will be another >>>> level >>>> of >>>> validation before final merge. >>>> But as max said, its all part of the plan and we'll test it of >>>> course >>>> before implementing to see its value. >>>> >>>> >>>>> >>>>> >>>>> >>>>> 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@ovirt.org >>>>> http://lists.ovirt.org/mailman/listinfo/devel >>>> _______________________________________________ >>>> Devel mailing list >>>> Devel@ovirt.org >>>> http://lists.ovirt.org/mailman/listinfo/devel >>>> >>> >>> >>> -- >>> Sandro Bonazzola >>> Better technology. Faster innovation. Powered by community >>> collaboration. >>> See how it works at redhat.com >>> _______________________________________________ >>> Infra mailing list >>> Infra@ovirt.org >>> http://lists.ovirt.org/mailman/listinfo/infra >>> >>> >>> >> _______________________________________________ >> Devel mailing list >> Devel@ovirt.org >> http://lists.ovirt.org/mailman/listinfo/devel >> >> >> > _______________________________________________ > Infra mailing list > Infra@ovirt.org > http://lists.ovirt.org/mailman/listinfo/infra > _______________________________________________ Infra mailing list Infra@ovirt.org http://lists.ovirt.org/mailman/listinfo/infra
_______________________________________________ Infra mailing list Infra@ovirt.org http://lists.ovirt.org/mailman/listinfo/infra
_______________________________________________ Infra mailing list Infra@ovirt.org http://lists.ovirt.org/mailman/listinfo/infra
_______________________________________________ Devel mailing list Devel@ovirt.org http://lists.ovirt.org/mailman/listinfo/devel
_______________________________________________ Infra mailing list Infra@ovirt.org http://lists.ovirt.org/mailman/listinfo/infra
_______________________________________________ Devel mailing list Devel@ovirt.org http://lists.ovirt.org/mailman/listinfo/devel
-- Sandro Bonazzola Better technology. Faster innovation. Powered by community collaboration. See how it works at redhat.com

----- Original Message -----
From: "David Caro" <dcaroest@redhat.com> To: "Oved Ourfali" <oourfali@redhat.com> Cc: "Oved Ourfali" <ovedo@redhat.com>, "Eyal Edri" <eedri@redhat.com>, "infra" <infra@ovirt.org>, devel@ovirt.org Sent: Thursday, June 11, 2015 1:19:01 PM Subject: Re: [ovirt-devel] gerrit+ci improvement proposal
For now can we agree that we want the ci flag at least?
We should not vote on the "how the system will be implemented", but on "what the system should do".
On 06/07, Oved Ourfali wrote:
On Jun 7, 2015 10:00 AM, Eyal Edri <eedri@redhat.com> wrote:
----- Original Message -----
From: "Oved Ourfali" <ovedo@redhat.com> To: "Eyal Edri" <eedri@redhat.com> Cc: infra@ovirt.org, devel@ovirt.org Sent: Sunday, June 7, 2015 9:55:56 AM Subject: Re: [ovirt-devel] gerrit+ci improvement proposal
----- Original Message -----
From: "Eyal Edri" <eedri@redhat.com> To: "Eli Mesika" <emesika@redhat.com> Cc: "Oved Ourfali" <ovedo@redhat.com>, devel@ovirt.org, infra@ovirt.org Sent: Sunday, June 7, 2015 9:52:15 AM Subject: Re: [ovirt-devel] gerrit+ci improvement proposal
----- Original Message -----
From: "Eli Mesika" <emesika@redhat.com> To: "Oved Ourfali" <ovedo@redhat.com> Cc: "Eyal Edri" <eedri@redhat.com>, infra@ovirt.org, devel@ovirt.org Sent: Thursday, June 4, 2015 3:49:05 PM Subject: Re: [ovirt-devel] gerrit+ci improvement proposal
----- Original Message ----- > From: "Oved Ourfali" <ovedo@redhat.com> > To: "Eyal Edri" <eedri@redhat.com> > Cc: devel@ovirt.org, infra@ovirt.org > Sent: Thursday, June 4, 2015 10:03:02 AM > Subject: Re: [ovirt-devel] gerrit+ci improvement proposal > > > > ----- Original Message ----- > > From: "Eyal Edri" <eedri@redhat.com> > > To: "Sandro Bonazzola" <sbonazzo@redhat.com> > > Cc: infra@ovirt.org, devel@ovirt.org > > Sent: Thursday, June 4, 2015 9:46:40 AM > > Subject: Re: [ovirt-devel] gerrit+ci improvement proposal > > > > > > > > ----- Original Message ----- > > > From: "Sandro Bonazzola" <sbonazzo@redhat.com> > > > To: "Eyal Edri" <eedri@redhat.com>, "Max Kovgan" > > > <mkovgan@redhat.com> > > > Cc: devel@ovirt.org, infra@ovirt.org > > > Sent: Thursday, June 4, 2015 9:11:10 AM > > > Subject: Re: [ovirt-devel] gerrit+ci improvement proposal > > > > > > Il 03/06/2015 21:46, Eyal Edri ha scritto: > > > > > > > > > > > > ----- Original Message ----- > > > >> From: "Max Kovgan" <mkovgan@redhat.com> > > > >> To: devel@ovirt.org > > > >> Cc: infra@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 > > > >> 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 from me, releasing CI from running non critical and > > > > un-essential > > > > jobs > > > > will not only reduce load from ci, > > > > and shorted response time for developers, it will allow us > > > > to add > > > > much > > > > more > > > > powerful tests such as functional & system > > > > tests that actually add hosts and run VMs, improving our > > > > ability > > > > to > > > > find > > > > regression much more effectively. > > > > > > > > Another benefit to consider is saving reviewers time. I.e > > > > not > > > > only > > > > jenkins > > > > benefits from Worklow+1, but also human reviewers. > > > > Instead of looking at a patch that is too early to be > > > > reviewed, > > > > the > > > > author > > > > can set the Workflow+1 when the code is ready to review > > > > (even if he didn't verified it yet), thus saving time to > > > > other > > > > reviewers > > > > - > > > > for example people can add an email rule > > > > to alert them only when they are added to patches that have > > > > Workflow+1, > > > > and > > > > not before. > > > > > > For human reviewers I suggest to keep using drafts until the > > > patch > > > is > > > finished. > > > > keep using? how many developers do you know are working with > > drafts > > until > > their patch is ready? > > i agree if everyone would use drafts load on jenkins was > > already much > > lower, > > unfortunately its not the case. > > > > IMO we don't need the "workflow" flag. > I'm okay with CI not running on "drafts". And yes... we do use > them. > We can try and educate people to use them more where needed. > Drafts should be widely used in first-phase development, and less > on > bug-fixes. > > In addition, I think the patch owners shouldn't add reviewers, > unless > they > need their input in the stage of the development. > Once they want input, they should add reviewers. > > 1. So, if the patch is draft then no CI runs on it. > 2. Once it turns into non-draft, you can run "light-CI" on it. > 3. Once the patch has at least one +1 from a (human) reviewer, > then it > should > run the "heavy" CI. > 4. Once the patch has +1 from heavy CI, and +2 from reviewer > (maintainer), > then it can be merged. > > That's the process we have today, with slight change on when to > run the > CI > and what CI to run (no CI on drafts, light CI on non-draft, heavy > CI on > +1 > patches).
+1
This is he right approach to go (I am also using drafts and if other don't, we can change that....) Also, regarding the claim that publishing a draft is a one-way process, I don't think that this is problematic, you should publish a draft after it is stable and you addressed all comments and run all tests locally
this might be true, but the problem is: 1. we can't enforce people to use drafts (technically), so until they do, we'll still have a resource problem
We can educate, and I don't see an issue with that.
2. until we do, even "light ci" jobs running per patch will overload the ci without need, this is why relying on another flag will help - if adding workflow is a problem, we can use the CR+1 as first attempt to improve the flow, and consider in the future to use workflow if it will be needed. (maybe we can even set it automatically somehow)
Perhaps marking as "verified" can be this flag. If the patch is verified by the author, then you run light CI on it. If it was also CR+1, run the heavy CI.
question is how soon does an author ticks verify on his patch? does he wait for code review before? for e.g. - i heard from some developers they wait for CI to give them +1 until they even add reviewers, so this might be the chicken and egg problem.
It depends on the patch I guess. Again, I think drafts are enough, and that we shouldn't add another flag here, so suggesting alternatives for that. We can "vote" on that flag addition, and other alternatives, and see what people say.
That way you both don't need a new flag, and you don't waste resources on non-manually-verified bugs.
> > > > > > Once it's finished and humans reviewed the logic of the > > > patch, > > > Workflow+1 > > > should be triggered allowing automation to check the > > > correctness of > > > the > > > patch. > > > IMHO there's no reason for wasting CI time on patches that > > > will be > > > correct > > > from an automation point of view but nacked by reviewers. > > > Especially > > > if > > > the > > > patches are part of a big patchset. > > > > > > > > > > > > > > And one final note, for Workflow+2 -> this is a preparation > > > > for a > > > > gating > > > > system, like Zuul used by openstack, that in the future > > > > we might use as automatic merger pending passing a > > > > verification > > > > step. > > > > this > > > > will prevent errors that happen sometimes > > > > post merge due to conflicts or other issues, and will be > > > > another > > > > level > > > > of > > > > validation before final merge. > > > > But as max said, its all part of the plan and we'll test it > > > > of > > > > course > > > > before implementing to see its value. > > > > > > > > > > > >> > > > >> > > > >> > > > >> 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@ovirt.org > > > >> http://lists.ovirt.org/mailman/listinfo/devel > > > > _______________________________________________ > > > > Devel mailing list > > > > Devel@ovirt.org > > > > http://lists.ovirt.org/mailman/listinfo/devel > > > > > > > > > > > > > -- > > > Sandro Bonazzola > > > Better technology. Faster innovation. Powered by community > > > collaboration. > > > See how it works at redhat.com > > > _______________________________________________ > > > Infra mailing list > > > Infra@ovirt.org > > > http://lists.ovirt.org/mailman/listinfo/infra > > > > > > > > > > > _______________________________________________ > > Devel mailing list > > Devel@ovirt.org > > http://lists.ovirt.org/mailman/listinfo/devel > > > > > > > _______________________________________________ > Infra mailing list > Infra@ovirt.org > http://lists.ovirt.org/mailman/listinfo/infra > _______________________________________________ Infra mailing list Infra@ovirt.org http://lists.ovirt.org/mailman/listinfo/infra
_______________________________________________ Infra mailing list Infra@ovirt.org http://lists.ovirt.org/mailman/listinfo/infra
_______________________________________________ Infra mailing list Infra@ovirt.org http://lists.ovirt.org/mailman/listinfo/infra
_______________________________________________ Devel mailing list Devel@ovirt.org http://lists.ovirt.org/mailman/listinfo/devel
_______________________________________________ Infra mailing list Infra@ovirt.org http://lists.ovirt.org/mailman/listinfo/infra
-- David Caro
Red Hat S.L. Continuous Integration Engineer - EMEA ENG Virtualization R&D
Tel.: +420 532 294 605 Email: dcaro@redhat.com Web: www.redhat.com RHT Global #: 82-62605
_______________________________________________ Infra mailing list Infra@ovirt.org http://lists.ovirt.org/mailman/listinfo/infra

--Pk6IbRAofICFmK5e Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On 06/11, Nir Soffer wrote:
----- Original Message -----
From: "David Caro" <dcaroest@redhat.com> To: "Oved Ourfali" <oourfali@redhat.com> Cc: "Oved Ourfali" <ovedo@redhat.com>, "Eyal Edri" <eedri@redhat.com>, = "infra" <infra@ovirt.org>, devel@ovirt.org Sent: Thursday, June 11, 2015 1:19:01 PM Subject: Re: [ovirt-devel] gerrit+ci improvement proposal =20 =20 =20 For now can we agree that we want the ci flag at least? =20 We should not vote on the "how the system will be implemented", but on "what the system should do".
I'm not asking for a vote, I'm asking for agreement on a small solution to solve an issue that is hurting us right now, that will grant us time to discuss the direction we want to take. When you are bleeding a lot the first step is stopping the bleed, then you = can reevaluate the situation and decide if you should or should not to put your hand in the blender again.
=20
=20 On 06/07, Oved Ourfali wrote:
=20 On Jun 7, 2015 10:00 AM, Eyal Edri <eedri@redhat.com> wrote:
----- Original Message -----
From: "Oved Ourfali" <ovedo@redhat.com> To: "Eyal Edri" <eedri@redhat.com> Cc: infra@ovirt.org, devel@ovirt.org Sent: Sunday, June 7, 2015 9:55:56 AM Subject: Re: [ovirt-devel] gerrit+ci improvement proposal =20 =20 =20 ----- Original Message -----
From: "Eyal Edri" <eedri@redhat.com> To: "Eli Mesika" <emesika@redhat.com> Cc: "Oved Ourfali" <ovedo@redhat.com>, devel@ovirt.org, infra@ovirt.org Sent: Sunday, June 7, 2015 9:52:15 AM Subject: Re: [ovirt-devel] gerrit+ci improvement proposal =20 =20 =20 ----- Original Message ----- > From: "Eli Mesika" <emesika@redhat.com> > To: "Oved Ourfali" <ovedo@redhat.com> > Cc: "Eyal Edri" <eedri@redhat.com>, infra@ovirt.org, > devel@ovirt.org > Sent: Thursday, June 4, 2015 3:49:05 PM > Subject: Re: [ovirt-devel] gerrit+ci improvement proposal >=20 >=20 >=20 > ----- Original Message ----- > > From: "Oved Ourfali" <ovedo@redhat.com> > > To: "Eyal Edri" <eedri@redhat.com> > > Cc: devel@ovirt.org, infra@ovirt.org > > Sent: Thursday, June 4, 2015 10:03:02 AM > > Subject: Re: [ovirt-devel] gerrit+ci improvement proposal > >=20 > >=20 > >=20 > > ----- Original Message ----- > > > From: "Eyal Edri" <eedri@redhat.com> > > > To: "Sandro Bonazzola" <sbonazzo@redhat.com> > > > Cc: infra@ovirt.org, devel@ovirt.org > > > Sent: Thursday, June 4, 2015 9:46:40 AM > > > Subject: Re: [ovirt-devel] gerrit+ci improvement proposal > > >=20 > > >=20 > > >=20 > > > ----- Original Message ----- > > > > From: "Sandro Bonazzola" <sbonazzo@redhat.com> > > > > To: "Eyal Edri" <eedri@redhat.com>, "Max Kovgan" > > > > <mkovgan@redhat.com> > > > > Cc: devel@ovirt.org, infra@ovirt.org > > > > Sent: Thursday, June 4, 2015 9:11:10 AM > > > > Subject: Re: [ovirt-devel] gerrit+ci improvement propos=
al
> > > >=20 > > > > Il 03/06/2015 21:46, Eyal Edri ha scritto: > > > > >=20 > > > > >=20 > > > > > ----- Original Message ----- > > > > >> From: "Max Kovgan" <mkovgan@redhat.com> > > > > >> To: devel@ovirt.org > > > > >> Cc: infra@ovirt.org > > > > >> Sent: Wednesday, June 3, 2015 8:22:54 PM > > > > >> Subject: [ovirt-devel] gerrit+ci improvement proposal > > > > >>=20 > > > > >> Hi everyone! > > > > >> We really want to have reliable and snappy CI: to al= low > > > > >> short > > > > >> cycles > > > > >> and > > > > >> encourage developers to write tests. > > > > >>=20 > > > > >> # Problem > > > > >>=20 > > > > >> Many patches are neither ready for review nor for CI= upon > > > > >> submission, > > > > >> which > > > > >> is OK. > > > > >> But running all the jobs on those patches with limit= ed > > > > >> resources > > > > >> results > > > > >> in: > > > > >> overloaded resources, slow response time, unhappy > > > > >> developers. > > > > >>=20 > > > > >> # Proposed Solution > > > > >>=20 > > > > >> To run less jobs we know we don=E2=80=99t need to, t= hus 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 direct= ions > > > > >> very > > > > >> well > > > > >> internally. > > > > >> Now it seems a good time to let all the oVirt projec= ts to > > > > >> use > > > > >> this. > > > > >> This solution indirectly promotes reviews and quick = tests > > > > >> - =E2=80=9Cto > > > > >> fail > > > > >> early=E2=80=9D, > > > > >> yet full blown static code analysis and long tests t= o run > > > > >> =E2=80=9Cwhen > > > > >> ready=E2=80=9D. > > > > >>=20 > > > > >> # How it works > > > > >>=20 > > > > >> 2 new gerrit independent flags are added to gerrit. > > > > >>=20 > > > > >> ## CI flag > > > > >>=20 > > > > >> Will express patch CI status. Values: > > > > >>=C2=A0 * +1 CI passed > > > > >>=C2=A0 *=C2=A0 0 CI did not run yet > > > > >>=C2=A0 * -1 CI failed > > > > >> Permissions for setting: project maintainers (for sp= ecial > > > > >> cases) > > > > >> should > > > > >> be > > > > >> able to set/override (except Jenkins). > > > > >>=20 > > > > >> ## Workflow flag > > > > >>=20 > > > > >> Will express patch =E2=80=9Cworkflow=E2=80=9D state.= Values: > > > > >>=C2=A0 *=C2=A0 0 Work In Progress > > > > >>=C2=A0 * +1 Ready For Review > > > > >>=C2=A0 * +2 Ready For Merge > > > > >> Permissions for setting: Owner can set +1, Project > > > > >> Maintainers > > > > >> can > > > > >> set > > > > >> +2 > > > > >>=20 > > > > >> ## Review + CI Integration: > > > > >>=20 > > > > >> Merging [=E2=80=9CSubmit=E2=80=9D button to appear] = will require: > > > > >> Review+1, > > > > >> CI+1, > > > > >> Workflow+2 > > > > >> Patch lifecycle now is: > > > > >> ----------------------------------------------------=
> > > > >> patch state=C2=A0=C2=A0 |owner=C2=A0=C2=A0=C2=A0=C2= =A0 |reviewer |maintainer |CI tests > > > > >> |pass > > > > >> ----------------------------------------------------=
> > > > >> added/updated |-=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0 |-=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |-=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |quick > > > > >> =C2=A0=C2=A0=C2=A0 |CI+1 > > > > >> review=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |Wo= rkflow+1|Review+1 |-=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 = |heavy > > > > >> |CI+1 > > > > >> merge ready=C2=A0=C2=A0 |-=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0 |-=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |Work= flow+2 |gating > > > > >> =C2=A0=C2=A0 |CI+1 > > > > >> merge=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0 |-=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |-=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0 |merge=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |merge > > > > >> =C2=A0=C2=A0=C2=A0 |CI+1 > > > > >>=20 > > > > >> 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. > > > > >>=20 > > > > >>=20 > > > > >> Next step will be to automate merge the change after > > > > >> Workflow+2 > > > > >> has > > > > >> been > > > > >> set > > > > >> by the Maintainer and gating tests passed. > > > > >>=20 > > > > >>=20 > > > > >> ## Why now? > > > > >>=20 > > > > >> 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 l= ead to > > > > >> adding > > > > >> unreliable > > > > >> code into jobs, and will still be prone to problems: > > > > >>=C2=A0=C2=A0 Just recently, 3d ago we=E2=80=99ve trie= d detecting what to run > > > > >>=C2=A0=C2=A0 from > > > > >>=C2=A0=C2=A0 jenkins > > > > >>=C2=A0=C2=A0 relying only on gerrit comments so that = upon Verified+1, > > > > >>=C2=A0=C2=A0 we=E2=80=99d > > > > >>=C2=A0=C2=A0 run > > > > >>=C2=A0=C2=A0 the > > > > >>=C2=A0=C2=A0 job. > > > > >>=C2=A0=C2=A0 We could not use =E2=80=9CReview+1=E2=80= =9D, because it makes no sense > > > > >>=C2=A0=C2=A0 at all, > > > > >>=C2=A0=C2=A0 so > > > > >>=C2=A0=C2=A0 we > > > > >>=C2=A0=C2=A0 left > > > > >>=C2=A0=C2=A0 the job to set Verified+1. > > > > >>=C2=A0=C2=A0 Meaning - re-trigger itself immediately = more than 1 > > > > >>=C2=A0=C2=A0 times. > > > > >>=C2=A0=C2=A0=20 > > > > >>=C2=A0=C2=A0 Jenkins and its visitors very unhappy, a= nd we had to > > > > >>=C2=A0=C2=A0 stop > > > > >>=C2=A0=C2=A0 those > > > > >>=C2=A0=C2=A0 jobs, > > > > >>=C2=A0=C2=A0 clean > > > > >>=C2=A0=C2=A0 up the queue, and spam developers. > > > > >>=20 > > > > >> ## OK OK OK. Now what? > > > > >>=20 > > > > >> Now we want your comments and opinions before pushin= g this > > > > >> further: > > > > >> Please participate in this thread, so we can start t= rying > > > > >> it > > > > >> out. > > > > >> Ask, Suggest better ideas, all this is welcome. > > > > >>=20 > > > > >>=20 > > > > >> Best Regards! > > > > >>=20 > > > > >>=20 > > > > >> 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 i= t will > > > > >> be > > > > >> enforced: > > > > >> if > > > > >> this does not work out we will discard it. > > > > >>=20 > > > > >> P.S. > > > > >> Kudos to dcaro, most of the work was done by him, an= d most > > > > >> of > > > > >> this > > > > >> text > > > > >> too. > > > > >>=20 > > > > >=20 > > > > > +1 from me, releasing CI from running non critical and > > > > > un-essential > > > > > jobs > > > > > will not only reduce load from ci, > > > > > and shorted response time for developers, it will all= ow us > > > > > to add > > > > > much > > > > > more > > > > > powerful tests such as functional & system > > > > > tests that actually add hosts and run VMs, improving = our > > > > > ability > > > > > to > > > > > find > > > > > regression much more effectively. > > > > >=20 > > > > > Another benefit to consider is saving reviewers time.= I.e > > > > > not > > > > > only > > > > > jenkins > > > > > benefits from Worklow+1, but also human reviewers. > > > > > Instead of looking at a patch that is too early to be > > > > > reviewed, > > > > > the > > > > > author > > > > > can set the Workflow+1 when the code is ready to revi= ew > > > > > (even if he didn't verified it yet), thus saving time= to > > > > > other > > > > > reviewers > > > > > - > > > > > for example people can add an email rule > > > > > to alert them only when they are added to patches tha= t have > > > > > Workflow+1, > > > > > and > > > > > not before. > > > >=20 > > > > For human reviewers I suggest to keep using drafts unti= l the > > > > patch > > > > is > > > > finished. > > >=20 > > > keep using? how many developers do you know are working w= ith > > > drafts > > > until > > > their patch is ready? > > > i agree if everyone would use drafts load on jenkins was > > > already much > > > lower, > > > unfortunately its not the case. > > >=20 > >=20 > > IMO we don't need the "workflow" flag. > > I'm okay with CI not running on "drafts". And yes... we do = use > > them. > > We can try and educate people to use them more where needed. > > Drafts should be widely used in first-phase development, an= d less > > on > > bug-fixes. > >=20 > > In addition, I think the patch owners shouldn't add reviewe= rs, > > unless > > they > > need their input in the stage of the development. > > Once they want input, they should add reviewers. > >=20 > > 1. So, if the patch is draft then no CI runs on it. > > 2. Once it turns into non-draft, you can run "light-CI" on = it. > > 3. Once the patch has at least one +1 from a (human) review= er, > > then it > > should > > run the "heavy" CI. > > 4. Once the patch has +1 from heavy CI, and +2 from reviewer > > (maintainer), > > then it can be merged. > >=20 > > That's the process we have today, with slight change on whe= n to > > run the > > CI > > and what CI to run (no CI on drafts, light CI on non-draft,= heavy > > CI on > > +1 > > patches). >=20 > +1 >=20 > This is he right approach to go (I am also using drafts and if > other > don't, > we can change that....) > Also, regarding the claim that publishing a draft is a one-way > process, I > don't think that this is problematic, you should publish a dr= aft > after it > is > stable and you addressed all comments and run all tests local= ly >=20 =20 this might be true, but the problem is: =C2=A0 1. we can't enforce people to use drafts (technically), s= o until =C2=A0 they do, =C2=A0 we'll still have a resource problem =20 =20 We can educate, and I don't see an issue with that. =20 =C2=A0 2. until we do, even "light ci" jobs running per patch wi= ll overload =C2=A0 the =C2=A0 ci =C2=A0 without need, this is why relying on another =C2=A0=C2=A0=C2=A0=C2=A0 flag will help - if adding workflow is = a problem, we can use the =C2=A0=C2=A0=C2=A0=C2=A0 CR+1 =C2=A0=C2=A0=C2=A0=C2=A0 as =C2=A0=C2=A0=C2=A0=C2=A0 first attempt to improve the flow, =C2=A0=C2=A0=C2=A0=C2=A0 and consider in the future to use workf= low if it will be needed. =C2=A0=C2=A0=C2=A0=C2=A0 (maybe =C2=A0=C2=A0=C2=A0=C2=A0 we can even set it automatically someho= w) =20 =20 Perhaps marking as "verified" can be this flag. If the patch is verified by the author, then you run light CI on = it. If it was also CR+1, run the heavy CI.
question is how soon does an author ticks verify on his patch? does he wait for code review before? for e.g. - i heard from some developers they wait for CI to give them +1 until they even add reviewers, so this might= be the chicken and egg problem. =20 It depends on the patch I guess. Again, I think drafts are enough, and that we shouldn't add another = flag here, so suggesting alternatives for that. We can "vote" on that flag addition, and other alternatives, and see = what people say. =20
=20 That way you both don't need a new flag, and you don't waste reso= urces on non-manually-verified bugs. =20
> >=20 > >=20 > >=20 > > > > Once it's finished and humans reviewed the logic of the > > > > patch, > > > > Workflow+1 > > > > should be triggered allowing automation to check the > > > > correctness of > > > > the > > > > patch. > > > > IMHO there's no reason for wasting CI time on patches t= hat > > > > will be > > > > correct > > > > from an automation point of view but nacked by reviewer= s. > > > > Especially > > > > if > > > > the > > > > patches are part of a big patchset. > > > >=20 > > > >=20 > > > > >=20 > > > > > And one final note, for Workflow+2 -> this is a prepa= ration > > > > > for a > > > > > gating > > > > > system, like Zuul used by openstack, that in the futu= re > > > > > we might use as automatic merger pending passing a > > > > > verification > > > > > step. > > > > > this > > > > > will prevent errors that happen sometimes > > > > > post merge due to conflicts or other issues, and will= be > > > > > another > > > > > level > > > > > of > > > > > validation before final merge. > > > > > But as max said, its all part of the plan and we'll t= est it > > > > > of > > > > > course > > > > > before implementing to see its value. > > > > >=20 > > > > >=20 > > > > >>=20 > > > > >>=20 > > > > >>=20 > > > > >> Max Kovgan > > > > >>=20 > > > > >> 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 > > > > >>=20 > > > > >> _______________________________________________ > > > > >> Devel mailing list > > > > >> Devel@ovirt.org > > > > >> http://lists.ovirt.org/mailman/listinfo/devel > > > > > _______________________________________________ > > > > > Devel mailing list > > > > > Devel@ovirt.org > > > > > http://lists.ovirt.org/mailman/listinfo/devel > > > > >=20 > > > >=20 > > > >=20 > > > > -- > > > > Sandro Bonazzola > > > > Better technology. Faster innovation. Powered by commun= ity > > > > collaboration. > > > > See how it works at redhat.com > > > > _______________________________________________ > > > > Infra mailing list > > > > Infra@ovirt.org > > > > http://lists.ovirt.org/mailman/listinfo/infra > > > >=20 > > > >=20 > > > >=20 > > > _______________________________________________ > > > Devel mailing list > > > Devel@ovirt.org > > > http://lists.ovirt.org/mailman/listinfo/devel > > >=20 > > >=20 > > >=20 > > _______________________________________________ > > Infra mailing list > > Infra@ovirt.org > > http://lists.ovirt.org/mailman/listinfo/infra > >=20 > _______________________________________________ > Infra mailing list > Infra@ovirt.org > http://lists.ovirt.org/mailman/listinfo/infra >=20 >=20 >=20 _______________________________________________ Infra mailing list Infra@ovirt.org http://lists.ovirt.org/mailman/listinfo/infra =20
Infra mailing list Infra@ovirt.org http://lists.ovirt.org/mailman/listinfo/infra =20 =20 =20
Devel mailing list Devel@ovirt.org http://lists.ovirt.org/mailman/listinfo/devel
_______________________________________________ Infra mailing list Infra@ovirt.org http://lists.ovirt.org/mailman/listinfo/infra =20 -- David Caro =20 Red Hat S.L. Continuous Integration Engineer - EMEA ENG Virtualization R&D =20 Tel.: +420 532 294 605 Email: dcaro@redhat.com Web: www.redhat.com RHT Global #: 82-62605 =20
Infra mailing list Infra@ovirt.org http://lists.ovirt.org/mailman/listinfo/infra =20
--=20 David Caro Red Hat S.L. Continuous Integration Engineer - EMEA ENG Virtualization R&D Tel.: +420 532 294 605 Email: dcaro@redhat.com Web: www.redhat.com RHT Global #: 82-62605 --Pk6IbRAofICFmK5e Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQEcBAEBAgAGBQJVeZ2nAAoJEEBxx+HSYmnDTXAH/ROekk+O92yyt+Uoa28Q8gjR aQNbFAGnVnxeidTOWn6q9osaa1E+3V6d4w0ZSp3YB6gR1kUJms7qTxmhPuMqwq/b pILZA6P37hMEL3fa2tQRGm06ccYiIH6ZL6GkYrG5oc5+3n6GvUyB2UqMXAaR/zqu YkxTKOcPgssKg8ncwrVnNFIP2hMT7rEGrb1CWPVsROvjvo2dMogUMj8m8XitXXPE Q0EQ7/B9BhMJZZES+6VuHBDJV2wO8G+zazj3BNYZvGjZlpojue185pX9n+4joULN dUtNw04x+RCJnb7lzYRdJtxL/SqndX4zsXwNaTKh5yzVqbV2wWa0xdU4YCGGJls= =lXz0 -----END PGP SIGNATURE----- --Pk6IbRAofICFmK5e--
participants (5)
-
David Caro
-
Max Kovgan
-
Nir Soffer
-
Oved Ourfali
-
Sandro Bonazzola