Thanks a ton, Antoine, for this! It has just made our lives sooo much easier for properly testing https://gerrit.wikimedia.org/r/#/c/254086/ :)
On 2 December 2015 at 18:44, Jon Robson jdlrobson@gmail.com wrote:
This is great. Just tried it out on https://gerrit.wikimedia.org/r/#/c/238992/ and hopefully it will soon be passing. This should hopefully help bubble up important dependent patches that might be overlooked if developers are not watching certain repositories and simply ignoring patches to Jenkins -2ing which can be for a variety of reasons :)
Now I just need to get out of the habit of writing "Dependency:" in favour of "Depends-On:" :)
True. My favourite line was:
Note: depends on <changeset-id>
In my case, I just need to drop "note:" and change the casing :P
Cheers, Marko
On Thu, Nov 19, 2015 at 2:51 PM, Brian Gerstle bgerstle@wikimedia.org wrote:
Jenkins as a huge collections of independent shell scripts that are waiting to be executed with appropriate parameters.
Right that made me wonder... but then you said:
OpenStack has a spec to get rid of Jenkins entirely and instead have
Zuul create an Ansible play book to run on a machine. But really that is another topic.
Makes sense that we should drop Jenkins if we're not leveraging it's features.
Congrats again on contributing back to the OSS community!
On Thu, Nov 19, 2015 at 2:27 PM, Antoine Musso hashar+wmf@free.fr
wrote:
Le 19/11/2015 18:51, Brian Gerstle a écrit :
Nice work!
Is this at all related to upstream/downstream Jenkins jobs?
The Zuul system does not rely at all on Jenkins upstream/downstream. One can think of Jenkins as a huge collections of independent shell scripts that are waiting to be executed with appropriate parameters.
OpenStack has a spec to get rid of Jenkins entirely and instead have Zuul create an Ansible play book to run on a machine. But really that is another topic.
To elaborate a bit more:
Gerrit does support dependencies between changes, but only in the same repository and branch. You can see that in the Gerrit web interface, and Gerrit will refuse to merge a change for which the parent is not merged yet.
Zuul does the same but independently from Gerrit. It is merely filling the gap of Gerrit lacks of cross repositories dependencies.
When a change is voted +2, it is enqueued in 'gate-and-submit'. Zuul immediately verify whether the dependencies are either merged or ahead in the queue, else it will reject the change and report back in Gerrit.
So if you have change A and change B depending on A. You +2 A then B and the queue is:
A <-- B (depend on A)
A is processed (no dependency) For B, Zuul find the dependency A ahead and thus it is processed.
If A fails the tests, B tests are automatically cancelled and the change dequeued. Zuul knows B depends on A.
Assuming all changes are merged by Zuul (via CR+2), Zuul dependency comes on top of Gerrit and nicely enforce dependencies.
-- Antoine "hashar" Musso
Wikitech-l mailing list Wikitech-l@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/wikitech-l
-- EN Wikipedia user page: https://en.wikipedia.org/wiki/User:Brian.gerstle IRC: bgerstle _______________________________________________ Wikitech-l mailing list Wikitech-l@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/wikitech-l
-- Jon Robson
Wikitech-l mailing list Wikitech-l@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/wikitech-l