[OpenStack-Infra] Zuul v3: proposed new Depends-On syntax
James E. Blair
corvus at inaugust.com
Fri May 26 14:53:50 UTC 2017
Joshua Hesketh <joshua.hesketh at gmail.com> writes:
> On Fri, May 26, 2017 at 1:09 AM, James E. Blair <corvus at inaugust.com> wrote:
>> So I think that we should start out by simply silently ignoring any
>> patchset elements in the URL. We could consider having Zuul leave a
>> note indicating that the patchset component is not necessary and is
>> being ignored.
>>
>
> Hmm, I'm not sure if that's the best way to handle it. If somebody clicks
> the link they'll be shown a particular patchset (whether they are aware of
> not) and it may cause confusion if something else is applied in testing.
> zuul leaving a message could help clarify this, but perhaps we should
> honour the patchset in the URL to allow for some very specific testing or
> re-runs. This also links into what I was saying (in my now forwarded
> message) about "tested-with" vs "must be merged first". We could test with
> a patchset but that is irrelevant once something has merged (unless we add
> complexity such as detecting if the provided patchset version has merged or
> if it was a different one and therefore the dependency isn't met and needs
> updating).
>
> Either way I like the idea of zuul (or something) leave a message to be
> explicit.
I think when someone uses Depends-On, they invariably mean "this change
depends on this other change" not "this other patchset". Referring to a
previous patchset may have some utility, however, it would be
counter-intuitive and doesn't help developers in the way that Zuul is
designed to.
Fundamentally Zuul is about making sure that it's okay to land a change.
It creates a proposed future state of one or more repositories, and
verifies that future state is correct. Depending on a patchset would
violate this in two ways.
First, if A Depends-On: B and B is updated, there is no feedback to the
developers whether the new revision of B is correct. We use Depends-On
not only to ensure that change A has a way to pass tests, but also that
B is a correct change that enables the behavior desired in A.
In other words, we're not answering the question "Is it okay to merge B?"
Second, we would be creating a proposed future state that we know can
not exist. If A Depends-On: an old patchset of B, and we run that test,
it would be pointless because we know that old patchset of B is not
going to merge. So we're not answering the question "Will A be able to
merge?"
We merge every change with its target branch before testing in check
(rather than testing the change as it was written) for the same
reason -- we test what *will be*, not *what was*.
-Jim
More information about the OpenStack-Infra
mailing list