Change-Id: Id4e6b77f5abba23f46236def28f54509c61fd247
Reviewed-on: https://review.openstack.org/30170
Reviewed-by: Monty Taylor <mordred@inaugust.com>
Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
Approved: Clark Boylan <clark.boylan@gmail.com>
Tested-by: Jenkins
Change-Id: I14dbe148f0ff57e5d0c50cc712120a2708f158b1
Reviewed-on: https://review.openstack.org/31727
Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
Reviewed-by: Khai Do <zaro0508@gmail.com>
Approved: Clark Boylan <clark.boylan@gmail.com>
Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
Tested-by: Jenkins
It dropped some "waitFor..." calls.
Also, update the unit tests to deal with some indeterminism in the
order jobs are run (showed up while testing this patch).
Change-Id: Id77838cc1bf0823ee0ee3795cb9190f405a1ff21
Reviewed-on: https://review.openstack.org/31109
Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
Approved: Clark Boylan <clark.boylan@gmail.com>
Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
Tested-by: Jenkins
Change-Id: I147491d2c08fa1040f41f0c299113e3eb8968252
Reviewed-on: https://review.openstack.org/29158
Reviewed-by: Antoine Musso <hashar@free.fr>
Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
Approved: Clark Boylan <clark.boylan@gmail.com>
Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
Tested-by: Jenkins
So that app.js can be less specific about where it's running.
Change-Id: I2a84a659b43027b7eb59ba707396517d8ba635d3
Reviewed-on: https://review.openstack.org/29286
Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
Approved: James E. Blair <corvus@inaugust.com>
Tested-by: Jenkins
On Debian, all binaries should have an associated manpage. While
building Zuul package we got the following lintian error:
W: zuul: binary-without-manpage usr/bin/zuul-server
This is easily fixed by making sphinx to name the man page zuul-server.
Change-Id: Ie9fa681654a8e7e8785c1dcfa5ec21ba27ae3049
Reviewed-on: https://review.openstack.org/29287
Reviewed-by: James E. Blair <corvus@inaugust.com>
Reviewed-by: Paul Belanger <paul.belanger@polybeacon.com>
Approved: Clark Boylan <clark.boylan@gmail.com>
Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
Tested-by: Jenkins
It is possible the host system does not have git properly configured,
which results in merge failures because the git client is complain. For
example:
GitCommandError: 'git merge FETCH_HEAD' returned exit status 128:
*** Please tell me who you are.
Run
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
to set your account's default identity.
Omit --global to set the identity only in this repository.
Now we can pass user.name and user.email settings to git, if configured
to do so.
Change-Id: I896194d8d1f5334026954b02f3a1a8dd82bed2ac
Signed-off-by: Paul Belanger <paul.belanger@polybeacon.com>
Reviewed-on: https://review.openstack.org/29015
Reviewed-by: James E. Blair <corvus@inaugust.com>
Approved: Clark Boylan <clark.boylan@gmail.com>
Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
Tested-by: Jenkins
This reverts commit 031e23f723
and commit 9ba2068664.
This breaks the ability to have silent pipelines.
Instead, how about the following:
pipelines:
- name: postmerge
manager: IndependentPipelineManager
...
success:
force-message: true
That should work without any additional code.
Change-Id: I0d15b8fcb678a36c46205693ba9a6756ec6a076f
Reviewed-on: https://review.openstack.org/29180
Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
Reviewed-by: Antoine Musso <hashar@free.fr>
Approved: James E. Blair <corvus@inaugust.com>
Reviewed-by: James E. Blair <corvus@inaugust.com>
Tested-by: Jenkins
Remove the Jenkins launcher and add a new Gearman launcher (designed
to be compatible with Jenkins) in its place.
See the documentation for how to set up the Gearman Plugin for
Jenkins.
Change-Id: Ie7224396271d7375f4ea42eebb57f883bc291738
Change-Id: I3a7c6bdfae9f2273cf8059c322d648cda07d830d
Reviewed-on: https://review.openstack.org/28619
Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
Approved: Jeremy Stanley <fungi@yuggoth.org>
Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
Tested-by: Jenkins
031e23f allowed the Gerrit trigger to report a message even when no
action has been given (for the context of postmerge builds where the
change cant be altered). I have noticed the Gerrit lib would stack
trace because it is missing an action (actually None). This patch skip
the action expansion in Gerrit command line whenever there is no action.
Related stacktrace:
INFO zuul.IndependentPipelineManager: Reporting
change <Change 0x7fb72099d190 62446,3>, action: None
DEBUG zuul.Gerrit: Report change <Change 0x7fb72099d190 62446,3>,
action None, message: Build succeeded.
ERROR zuul.IndependentPipelineManager: Exception while reporting:
Traceback (most recent call last):
File "zuul-5b84b5c-py2.7.egg/zuul/scheduler.py",
line 883, in reportChange
ret = self.sched.trigger.report(change, report, action)
File "zuul-5b84b5c-py2.7.egg/zuul/trigger/gerrit.py",
line 142, in report message, action)
File "zuul-5b84b5c-py2.7.egg/zuul/lib/gerrit.py",
line 119, in review
for k, v in action.items():
AttributeError: 'NoneType' object has no attribute 'items'
Change-Id: I51b66025eb6e1d074d79cf77ac4085ba3ffde77e
Reviewed-on: https://review.openstack.org/28395
Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
Approved: James E. Blair <corvus@inaugust.com>
Reviewed-by: James E. Blair <corvus@inaugust.com>
Tested-by: Jenkins
From the pep8 spec:
The closing brace/bracket/parenthesis on multi-line constructs
may either line up under the last item of the list, as in:
...
or it may be lined up under the first character of the line that
starts the multi-line construct, as in:
...
Bizzarly, the pep8 tool ignores the first option.
Change-Id: Ic0e8f8ad964881276d213ffd50deb75a537c250b
Reviewed-on: https://review.openstack.org/28609
Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
Approved: James E. Blair <corvus@inaugust.com>
Tested-by: Jenkins
report times as 1h 22m 08s
only report hours if the job runs longer than an hour
only report minutes if the job runs longer than a minute
don't zero pad whatever the leading time unit is, making it a
little easier to scan and see differences.
Change-Id: Ibb58be233fdef1bbdf4e90a83731d43eb0be47f1
Reviewed-on: https://review.openstack.org/28143
Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
Reviewed-by: matthew-wagoner <matthew.wagoner@hp.com>
Reviewed-by: Antoine Musso <hashar@free.fr>
Approved: James E. Blair <corvus@inaugust.com>
Reviewed-by: James E. Blair <corvus@inaugust.com>
Tested-by: Jenkins
The ability to configure success and failure URL patterns (cf.
'success-pattern' and 'failure-pattern') obsoletes the need to
guess-by-fetching an appropriate link for the build status, which can be
extremely expensive. (Wikimedia's Zuul instance makes three HTTP requests per
invocation -- 'testReport', which 302s to 'testReport/', which 404s, and then
'consoleFull', which often runs to hundreds of kilobytes.)
Also corrects a small typo in README.rst.
Change-Id: Ib222f544c98253152a5e787ec0cdf28fa2d80cf6
Reviewed-on: https://review.openstack.org/28128
Reviewed-by: James E. Blair <corvus@inaugust.com>
Approved: Clark Boylan <clark.boylan@gmail.com>
Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
Tested-by: Jenkins
Whenever a pipeline does not provide any action, the job message would
not be reported which is a bit annoying. This patch makes it so we skip
reporting when there is no action and no message.
My use case is:
A `postmerge` pipeline that simply react to the `change-merged` events,
since the change is closed, there is no point in voting on it. Jobs
then uses the `success-message` and `failure-message` to finely tune
what is reported back to the user.
Configuration exemple
pipelines:
- name: postmerge
manager: IndependentPipelineManager
trigger:
- event: change-merged
projects:
- name: operations/config
postmerge:
- operations-config-deploy
jobs:
- name: operations-config-deploy
branch: ^production$
success-message: 'Your configuration has been deployed by Jenkins.'
failure-message: 'Configuration NOT APPLIED. You broke wikipedia.'
Before this patch, the debug would be:
------------8<---------------8<---------------8<-----------------------
INFO zuul.IndependentPipelineManager: Reporting
change <Change 0x7f67a0d61f50 61980,1>, action: None
DEBUG zuul.Gerrit: Report change <Change
0x7f67a0d61f50 61980,1>, action None, message: Build succeeded.
- https://jenkins-url-goes-there.example.com/
: Your configuration has been deployed by Jenkins.
DEBUG zuul.Gerrit: No action specified; not reporting
DEBUG zuul.IndependentPipelineManager: Removing reported
------------8<---------------8<---------------8<-----------------------
Change-Id: I9ab4d47a8cfc1ae66870e8ac55e8f78dfc29da3d
Reviewed-on: https://review.openstack.org/28045
Reviewed-by: Jesse Keating <jesse.keating@rackspace.com>
Reviewed-by: James E. Blair <corvus@inaugust.com>
Approved: Clark Boylan <clark.boylan@gmail.com>
Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
Tested-by: Jenkins
The poll() system call is not available on all systems (like OS X, for
example), causing the test suite to fail. This change replaces poll()
with select(), which is more portable. With this change the test suite passes
under OS X.
Change-Id: I3ad716b127c8781d8dbf870b0f0c0e1162f264d1
Reviewed-on: https://review.openstack.org/28126
Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
Approved: James E. Blair <corvus@inaugust.com>
Reviewed-by: James E. Blair <corvus@inaugust.com>
Tested-by: Jenkins
status.html:
- Added eventqueue-length status (was already present in production
but not committed here yet).
- HTML5 markup.
- Remove unused jquery-visibility.min.js and jquery-graphite.js.
status.js:
- Clean up (various js best practices and consistent coding style)
- Use empty() instead of html('').
- Use text() for text instead of html().
html() will trigger the parser where text will simply create
a text node with the string literal, much faster, safer and
semantically correct.
- Fix implied global variable leak 'result'.
- Fix reference error that crashes/freezes the page
Property data.trigger_event_queue and data.trigger_event_queue
can be undefined, in which case data.trigger_event_queue.length
causes an uncaught TypeError to be thrown.
- Use a closure instead of polluting global scope.
- Rewrite object oriented.
- Added 'demo' feature for easy local testing.
Downstream commits at
https://gerrit.wikimedia.org/r/#/q/project:integration/docroot+topic:zuul-js+branch:master+owner:Krinkle+is:merged,n,z
Change-Id: Iddd4e2787f2e2eb27bf428f733fbb8b4a9d162d5
Reviewed-on: https://review.openstack.org/26416
Reviewed-by: James E. Blair <corvus@inaugust.com>
Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
Approved: James E. Blair <corvus@inaugust.com>
Tested-by: Jenkins
On setup where Zuul ends up triggering hundreds of projects, you end up
having projects using roughly the same pipeline/jobs. Whenever one want
to add a job in all the similiar project, he has to edit each project
one by one.
To save some precious time, this patch introduces the concept of project
templates. It lets you define a set of pipeline and attached jobs
though the job names can be passed parameters defined on a per project
basis. Thus, updating similiar projects is all about editing a single
template.
A basic example is provided in the documentation.
The voluptuous schema has been updated. It does check whether all
parameters are properly passed to a template but does NOT check whether
the resulting job name exist.
The parameter expansion in templates is borrowed from Jenkins Job
Builder (deep_format function). It has been tweaked to also expand
dictionary keys.
Layout test plan:
$ nosetests -m layout --nocapture
Test layout file validation ...
<...>
bad_template1.yaml
required key not provided @
data['projects'][0]['template']['project']
bad_template2.yaml
extra keys not allowed @
data['projects'][0]['template']['extraparam']
good_template1.yaml
ok
<...>
$
A basic test hasbeen added to verify whether a project-template properly
triggers its tests:
$ nosetests --nocapture \
tests/test_scheduler.py:testScheduler.test_job_from_templates_launched
Test whether a job generated via a template can be launched ... ok
----------------------------------------------------------------------
Ran 1 test in 0.863s
OK
$
Change-Id: Ib82e4719331c204de87fbb4b20c198842b7e32f4
Reviewed-on: https://review.openstack.org/21881
Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
Reviewed-by: James E. Blair <corvus@inaugust.com>
Approved: James E. Blair <corvus@inaugust.com>
Tested-by: Jenkins
In a config test, the scheduler is created without a config object.
Handle that case gracefully in the pipeline constructor.
Add a test that runs the configtest.
Change-Id: Id59b3194aff7b5347fa04fe1cc29b1069d2a3f7f
Reviewed-on: https://review.openstack.org/27585
Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
Approved: James E. Blair <corvus@inaugust.com>
Tested-by: Jenkins
The new format will be:
"http://logs.example.com/6/1/gate/project2-merge/2 : SUCCESS in 00:00:00"
And the option is enabled by default.
Change-Id: Ib50c4948ea0a7b552d46a0e72ecb6c1a9609a771
Reviewed-on: https://review.openstack.org/27570
Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
Approved: Jeremy Stanley <fungi@yuggoth.org>
Tested-by: Jenkins
We used to pin statsd to version 1.0.0. James E. Blair has written a
few tests that now let us allow the current v2.0.1 version. To prevent
unexpected upgrades, we disallow v3.0.0.
Zuul scheduler only do very simple statsd operations. Testing with
statsd 2.0.1:
I have set up a basic listener:
listener$ netcat -l 127.0.0.1 -p 666 --udp
Then wrote the python script:
import extras
statsd = extras.try_import('statsd.statsd')
statsd.incr('zuul.counter')
statsd.timing('zuul.timer', 1234)
statsd.timing('zuul.timer', 1)
statsd.gaug:('zuul.gauge', 1234)
Running it as:
STATSD_HOST='127.0.0.1' STATSD_PORT=666 python statsd-test.py
The listener gets:
zuul.counter:1|czuul.timer:1234|mszuul.timer:1|mszuul.gauge:1234|g
Sounds legit enough.
Fix bug #1169599 'Zuul should depends on statsd 2 or later'
Change-Id: I41b797d606d55eeda300e673b05c2ae4442ce029
Reviewed-on: https://review.openstack.org/27008
Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
Approved: James E. Blair <corvus@inaugust.com>
Reviewed-by: James E. Blair <corvus@inaugust.com>
Tested-by: Jenkins
The documentation was missing recent optional arguments such as
--version.
Change-Id: Iad111d2f5c14c54d1495f2ba837627e0ea42acb0
Reviewed-on: https://review.openstack.org/27172
Reviewed-by: Jesse Keating <jesse.keating@rackspace.com>
Reviewed-by: Khai Do <zaro0508@gmail.com>
Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
Approved: Jeremy Stanley <fungi@yuggoth.org>
Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
Tested-by: Jenkins
Add a fake statsd listener, and actually listen on a random udp
port for statsd messages. Configure STATSD env vars to use it
before each test.
Add a test that exercises all of the statsd methods that we use
explicitly.
Add checks of the statsd output to the basic "run jobs" test case
to make sure that we're covering some of the statsd code in the
scheduler.
Change-Id: I3361c4e334155dda413bf343e6f1c6f4e277a3ff
Reviewed-on: https://review.openstack.org/27306
Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
Approved: Jeremy Stanley <fungi@yuggoth.org>
Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
Tested-by: Jenkins
tools/pip-requires list WebOb in lower case which confuse pip freeze and
gives a false positive:
Before patch:
$ pip freeze -r tools/pip-requires 2>&1|grep -i webob
Requirement file contains webob, but that package is not installed
WebOb==1.1.1
$
The second line comes from another packages which list 'WebOb' as a
dependency.
After patch:
$ pip freeze -r tools/pip-requires 2>&1|grep -i webob
WebOb==1.1.1
$
Change-Id: I73d01c734c25fc65022de146264e5b2c3cc2e67f
Reviewed-on: https://review.openstack.org/26786
Reviewed-by: James E. Blair <corvus@inaugust.com>
Approved: Clark Boylan <clark.boylan@gmail.com>
Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
Tested-by: Jenkins
Change-Id: Iceb9049640aa3e0ff5c030fa5b93225e1e8ff887
Signed-off-by: Paul Belanger <paul.belanger@polybeacon.com>
Reviewed-on: https://review.openstack.org/26381
Reviewed-by: James E. Blair <corvus@inaugust.com>
Approved: Monty Taylor <mordred@inaugust.com>
Reviewed-by: Monty Taylor <mordred@inaugust.com>
Tested-by: Jenkins
Change-Id: Iaf8d066e9ad670dc5fed2375ad5640682a387bb5
Reviewed-on: https://review.openstack.org/25533
Reviewed-by: James E. Blair <corvus@inaugust.com>
Approved: Jeremy Stanley <fungi@yuggoth.org>
Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
Tested-by: Jenkins
When using sphinx-build to generate documentation, it would fail to
properly find our version information.
Change-Id: Iee14aa76b69ca9398688345cb2dcd0db9ecdaedc
Signed-off-by: Paul Belanger <paul.belanger@polybeacon.com>
Reviewed-on: https://review.openstack.org/25524
Reviewed-by: James E. Blair <corvus@inaugust.com>
Approved: Monty Taylor <mordred@inaugust.com>
Reviewed-by: Monty Taylor <mordred@inaugust.com>
Tested-by: Jenkins
I have so many Zuul installation that I somehow loose track of their
version. I am forced to look at the zuul-server wrapper script to figure
out the current version when I could just ask the might zuul-server to
give me its version straight from the command line.
Example:
$ zuul-server --version
Zuul version: 1.1.0.45.g70c7158
Since we might not have a valid zuul.conf passed, the version display
must happen before server.read_config() or we end up with a stracktrace
on a fresh installation.
Change-Id: I284de8da5af6678c7aaa1b17c950390e135f6e89
Reviewed-on: https://review.openstack.org/25007
Reviewed-by: James E. Blair <corvus@inaugust.com>
Reviewed-by: Elizabeth Krumbach <lyz@princessleia.com>
Approved: Jeremy Stanley <fungi@yuggoth.org>
Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
Tested-by: Jenkins
Add an additional job parameter, 'file', that will cause that
job to only run if the change touches files that match the
specification.
Change-Id: I8c8fd3d029e02e338fd1dd266443b9ac56c0e5ac
Reviewed-on: https://review.openstack.org/23710
Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
Reviewed-by: Monty Taylor <mordred@inaugust.com>
Approved: James E. Blair <corvus@inaugust.com>
Tested-by: Jenkins
* tools/pip-requires: A new voluptuous (0.7.0) was released today,
introducing backward-incompatible changes to schema objects and
breaking zuul's layout validation. This is a brown bag fix to keep
zuul functional until voluptuous 0.7 support is implemented.
Change-Id: I5818d3cd529e8682877b368edbc10280a5c167df
Reviewed-on: https://review.openstack.org/24454
Reviewed-by: Anita Kuno <akuno@lavabit.com>
Reviewed-by: Monty Taylor <mordred@inaugust.com>
Approved: James E. Blair <corvus@inaugust.com>
Reviewed-by: James E. Blair <corvus@inaugust.com>
Tested-by: Jenkins
* doc/source/zuul.rst: Mention zuul-changes.py and provide sample
syntax in the restarting section.
Change-Id: I05888ca40e16681111e56b9ebf92acc3dc36175b
Reviewed-on: https://review.openstack.org/23938
Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
Approved: Monty Taylor <mordred@inaugust.com>
Reviewed-by: Monty Taylor <mordred@inaugust.com>
Tested-by: Jenkins
The script prints a gerrit review command for every change in
a given zuul pipeline.
Change-Id: Ibdee87ea64c977e7589cbc3ee9567e866cb78341
Reviewed-on: https://review.openstack.org/23784
Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
Approved: Jeremy Stanley <fungi@yuggoth.org>
Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
Tested-by: Jenkins
The fake jenkins queue may have been modified during the call to
get_queue_info, so operate on a copy of the queue (which is more
like reality than locking the queue because we get a copy of the
queue from the jenkins api).
Also, fix a string formatting error which for some reason was
not raising an exception until we tried running the tests on
quantal.
Change-Id: I51e588fb147515c826395439516cf843c2da83f3
Reviewed-on: https://review.openstack.org/23781
Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
Approved: Jeremy Stanley <fungi@yuggoth.org>
Tested-by: Jenkins
Aborted, lost, skipped, unstable will all cause a change not to
merge, so treat them the same when deciding if any job for a
change failed. This should stop new launches and cancel builds
faster when these alternate failures happen.
Also, make the output of the completed jobs in the test suite
more comprehensible by including the change numbers, and use
a new object with its own string formatting for printing.
Change-Id: I2826b0eb5d26a019fed7d20bb1296624588c9fac
Reviewed-on: https://review.openstack.org/23123
Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
Approved: James E. Blair <corvus@inaugust.com>
Tested-by: Jenkins
Processing result events sooner means that we can potentially
stop builds or at least stop launching builds sooner.
New trigger events are only likely to cause us to start new
builds (which may need to be stopped).
Change-Id: I5c33ed74cf4af84900c96c2155b3cec5252248d5
Reviewed-on: https://review.openstack.org/23117
Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
Approved: James E. Blair <corvus@inaugust.com>
Tested-by: Jenkins
We run Gerrit 2.5 with most of 2.6 cherry picked in. At some point
Gerrit has added some new events to the `stream-events` command:
- draft-published
- merge-failed
- reviewer-added
Each event comes with a field holding the account of the user performing
the action. Since Gerrit uses different names for that field, we have to
maintain a map to find out which key holds the account information.
This patch update the map for the three new events.
Also fixed a minor typo in an error message.
Change-Id: I79032280884e50edf83a3ddf60af7a2f62bde971
Reviewed-on: https://review.openstack.org/22690
Reviewed-by: James E. Blair <corvus@inaugust.com>
Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
Approved: James E. Blair <corvus@inaugust.com>
Tested-by: Jenkins
Whenever receiving a ref-update event, for example when a tag is
created, deleted or changed, the local Zuul git repository would not
reflect the change.
This patch force a git remote update on the local git repository so the
Jenkins git plugin can actually find the new tag. This is done before
enqueing the change in the pipeline to only update the remote once.
Change-Id: I87a29aa15855bfb367f03da3e15cd8a733b757fd
Reviewed-on: https://review.openstack.org/19928
Approved: James E. Blair <corvus@inaugust.com>
Reviewed-by: James E. Blair <corvus@inaugust.com>
Tested-by: Jenkins
We sometime want to update a repository without fetching an actual
refspec. A typical example is to fetch tags, since I did not manage to
pass -t to git.fetch(), I am using instead the GitPython repo.update()
calls which binds to `git remote update`.
reset() add a clearing cache to make sure PyGit does not fail whenever
the remote repository has been updated. Instead of duplicating code
between reset() and update(), I have moved the recache command to
update() and make reset() to call this new update().
Change-Id: I0d989dfc1f31ede6c79ccdd1d5b3968978a418ab
Reviewed-on: https://review.openstack.org/19927
Reviewed-by: James E. Blair <corvus@inaugust.com>
Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
Approved: James E. Blair <corvus@inaugust.com>
Tested-by: Jenkins
Change-Id: I79fc7d1df0612fbe87e9b61499111c2d08d78dd0
Reviewed-on: https://review.openstack.org/23046
Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
Approved: James E. Blair <corvus@inaugust.com>
Tested-by: Jenkins
Even though we're removing from (potentially) the middle of the
queue, restart jobs behind this change since the situation has
changed.
Change-Id: Iab44898bda07d991a3d4c53715bf7a04ff58c9d1
Reviewed-on: https://review.openstack.org/23038
Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
Approved: James E. Blair <corvus@inaugust.com>
Tested-by: Jenkins
Previously Zuul had to merge the entire change tree for each change
in the DependentPipeline. Remember previous merges to save time and
only merge changes against their project and branch.
Co-Authored-By: James E. Blair <jeblair@openstack.org>
Change-Id: I8105ac3aa4e4697e90e8d7fac1e54c5614f79daf
Reviewed-on: https://review.openstack.org/22504
Reviewed-by: James E. Blair <corvus@inaugust.com>
Approved: James E. Blair <corvus@inaugust.com>
Tested-by: Jenkins
The github project has changed from `openstack-ci` to `openstack-infra`,
but two links in the documentation do not reflect this change.
Change-Id: I9359d1071f33719da39fdefd14deea728b9dbfff
Reviewed-on: https://review.openstack.org/23033
Reviewed-by: Monty Taylor <mordred@inaugust.com>
Approved: James E. Blair <corvus@inaugust.com>
Reviewed-by: James E. Blair <corvus@inaugust.com>
Tested-by: Jenkins
Voluptuous has a version 0.6 now which deprecates the any, match, and
required predicates and replaces them with Any, Match, and Required.
Update the minimum required version of Voluptuous and stop using the
deprecated predicates.
Change-Id: I554a6fda2c622a0b63f9247b1eae5eb494af225b
Reviewed-on: https://review.openstack.org/22167
Reviewed-by: Khai Do <zaro0508@gmail.com>
Approved: James E. Blair <corvus@inaugust.com>
Reviewed-by: James E. Blair <corvus@inaugust.com>
Tested-by: Jenkins
Needed by Jenkins 1.502.
(Also don't print the results of error messages so they don't
clutter stdout, but leave them there as a debug option
comments because they are very handy when debugging
Jenkins API issues.)
Change-Id: I2e1dcc1ac2344b1eb9f66292b6fd30900cb45e6d
Reviewed-on: https://review.openstack.org/22579
Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
Approved: James E. Blair <corvus@inaugust.com>
Tested-by: Jenkins
This reverts commit dd26978d5d.
The performance of mergability checking is poor and starves zuul from
processing other things. revert the change until we can come up with a
better performing solution to this problem.
Change-Id: I744031159572236f61b3fca45bb22492135ebcb2
Reviewed-on: https://review.openstack.org/22251
Reviewed-by: James E. Blair <corvus@inaugust.com>
Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
Approved: James E. Blair <corvus@inaugust.com>
Tested-by: James E. Blair <corvus@inaugust.com>
isUpdateOf is passed an "other" changeish that may be a Ref which does
not have number and patchset fields which are compared against in
Change's isUpdateOf method. Check that fields exist before comparisons
are made.
Change-Id: Ifb5a36dcb0377f496e6b0707ae27810b96f2c752
Reviewed-on: https://review.openstack.org/22159
Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
Approved: Clark Boylan <clark.boylan@gmail.com>
Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
Tested-by: Jenkins
In the DependentPipeline remove changes if they have absolutely no
chance of merging (all possible merge combinations fail). This allows
zuul to remove changes as soon as possible when it is known that they
cannot merge and continue testing the remaining changes.
Fixes bug 1123329
Change-Id: I97af03cca997541f6a8b3fb519d2a44825dbd937
Reviewed-on: https://review.openstack.org/21723
Reviewed-by: James E. Blair <corvus@inaugust.com>
Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
Approved: James E. Blair <corvus@inaugust.com>
Tested-by: Jenkins