Re: Please stop committing on a broken build! ([Testbot] Plone 5.0 - Python 2.7 - Build # 1925 - Regression! - 6 failure(s))

"David Glick (Plone)" <david.glick-z4DKO/[email protected]>
Newsgroups gmane.comp.web.zope.plone.devel
Message-ID <[email protected]>
On 3/22/14, 12:19 PM, Gil Forcada wrote:
> El dv 21 de 03 de 2014 a les 09:27 +0100, en/na Timo Stollenwerk va
> escriure:
>> Am 21.03.2014 08:38, schrieb Laurence Rowe:
>>>      We can't just merge features and then keep the build broken for weeks.
>>>      People are committing anyways, breaking more stuff without notice and in
>>>      the end someone has to clean up that mess. The longer we keep the build
>>>      broken the harder it gets...
>>>
>>>      I try to keep track and remind people if they break things, but that
>>>      only works well if the build is green in the first place.
>>>
>>>
>>> Would it be possible to get tests running on feature branches as well as
>>> master / version branches? It seems unavoidable that occasionally
>>> checkins will break the build, but if those checkins are always made to
>>> a feature branch and merging of the feature to master happens only after
>>> looking at the build status then master should stay green. (Ideally one
>>> first merges from master to the feature branch to ensure the merge back
>>> is clean.)
>>>
>>> I realise the above is very tricky for a system as complex as Plone, but
>>> I've found it to be a great help in my (much smaller) current project.
>> This is what I would love to have. Though, as you said, this is not
>> trivial to implement.
>>
>> Cheers,
>> Timo
> Hi all,
>
> My 0,5 cents (and 100+ words) about it:
>
> What we have at the company I work works quite well for us (a simplified
> version of [1] actually and modified to fit in Plone below):
> - master branch should never fail and is only used to merge already
> proved changes (i.e. you usually never push commits there)
> - a develop branch is used to do you day to day commits (or feature
> branches if your changes are big enough)
> - once your feature branch is complete and all tests passes you should
> be able to update the branch in buildout.coredev (develop branch)
> - if that still works you can rebase buildout.coredev master branch into
> develop branch (so make both branches point to the same commit)

This falls apart somewhat once you have multiple repositories like we do 
for Plone. Merging a PLIP usually means merging a number of branches of 
different packages in sequence. That's necessarily going to break master 
for a time if there are interdependent changes in different packages.

> Regarding PLIPs, we already have jenkins jobs for that, isn't it? Maybe
> we should extend the PLIP definition to also say that a jenkins job
> needs to be created for it.

We could indeed do better at setting this up and paying attention to it 
for all PLIPs.

> And to top it all, it would be cool if we have a branch in
> buildout.coredev called "tests-passed" this is updated only by jenkins
> once a buildout.coredev specific build is green. Then all PLIPs jenkins
> jobs could be instrumented to checkout buildout.coredev on that specific
> branch and then run the tests for the given PLIP they are supposed to
> run tests for.
>
> This way PLIPs will always run from a "green" buildout and thus if they
> fail it will be most likely integration problems due to the PLIP changes
> not unrelated ones.
>

If buildout.coredev is checked out on this branch, it won't have recent 
updates to the PLIP buildout configuration.

------------------------------------------------------------------------------
Learn Graph Databases - Download FREE O'Reilly Book
"Graph Databases" is the definitive new guide to graph databases and their
applications. Written by three acclaimed leaders in the field,
this first edition is now available. Download your free book today!
http://p.sf.net/sfu/13534_NeoTech
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.