[OpenStack-Infra] Problem with Cross-Repo Dependencies in Zuul

James E. Blair corvus at inaugust.com
Wed Jun 22 15:52:28 UTC 2016


Artur Zarzycki <azarzycki at mirantis.com> writes:

> ...
> And now as I understand zuul should recognize dependencies between patches.
> So I created patch1 in repo1 and patch2 in repo2 with Depends-On:
> I45137d1186caeafda0cee3504370d01ef3d9d271 (patch1)
> and I'm trying to merge patch2. I see that zuul run  gate jobs for
> repo2 and above area with job I see message:
> Queue: some/repo1, some/repo2
> When job finish with success -  code from repo2 is merged.
>
> In zuul debug log I see:
> 2016-06-22 12:09:39,079 DEBUG zuul.DependentPipelineManager: Checking
> for changes needed by <Change 0x7fb2ac1b2f90 22411,1>:
> 2016-06-22 12:09:39,080 DEBUG zuul.DependentPipelineManager:   No
> changes needed
> 2016-06-22 12:09:39,080 DEBUG zuul.DependentPipelineManager: Adding
> change <Change 0x7fb2ac1b2f90 22411,1> to queue <ChangeQueue gate:
> some/repo1, some/repo2>
>
> Could you please give me some hints what I did wrong? Do I need to
> make something else to get it working?

>From what you describe, I don't see anything configured incorrectly.
Those log entries suggest that Zuul did not recognize the Depends-On
header and associate the two changes.  First, I would check:

* You are running a version of Zuul that supports Depends-On
* The syntax of the Depends-On header is correct (the line in the commit
  message must match this regex):
  "^Depends-On: (I[0-9a-f]{40})\s*$"

Then I would suggest looking in the debug log for entries near when Zuul
queried Gerrit for the change.  Assuming you are running git master, you
should see log messages like:

INFO zuul.source.Gerrit: Updating <Change ... patch2>
DEBUG zuul.source.Gerrit: Updating <Change ... patch2>: Running query change:I45137d1186caeafda0cee3504370d01ef3d9d271 to find needed changes
DEBUG zuul.source.Gerrit: Updating <Change ... patch2>: Getting commit-dependent change patch1
INFO zuul.source.Gerrit: Updating <Change ... patch1>

Indicating that when it loaded the data for patch2, it parsed the
Depends-On header, saw the I..271 change id, queried for it, and found
patch1 as a result.

> Can it cause problems if I download code with
>           git clone ssh://some_user@repo_url:29418/$ZUUL_PROJECT .
>           git fetch $ZUUL_URL/$ZUUL_PROJECT $ZUUL_REF
>           git checkout FETCH_HEAD
> instead of using zuul_cloner?

What you do in the job should not affect this problem, however, I would
strongly recommend using zuul-cloner as it contains the collective
wisdom of the best way to prepare a git repo for testing.

-Jim



More information about the OpenStack-Infra mailing list