Browse Source

Merge "Allow zuul to cleanup jobs outside window"

changes/73/66173/2
Jenkins 8 years ago committed by Gerrit Code Review
parent
commit
27f3b26e8e
  1. 2
      zuul/layoutvalidator.py
  2. 6
      zuul/model.py
  3. 11
      zuul/scheduler.py

2
zuul/layoutvalidator.py

@ -61,7 +61,7 @@ class LayoutSchema(object):
'subject': str,
},
}
window = v.All(int, v.Range(min=1))
window = v.All(int, v.Range(min=0))
window_floor = v.All(int, v.Range(min=1))
window_type = v.Any('linear', 'exponential')
window_factor = v.All(int, v.Range(min=1))

6
zuul/model.py

@ -462,11 +462,11 @@ class ChangeQueue(object):
self.window = min(self.window, other.window)
# TODO merge semantics
def getActionableItems(self):
def isActionable(self, item):
if self.dependent and self.window:
return self.queue[:self.window]
return item in self.queue[:self.window]
else:
return self.queue[:]
return True
def increaseWindowSize(self):
if self.dependent:

11
zuul/scheduler.py

@ -1151,10 +1151,11 @@ class BasePipelineManager(object):
change_queue.moveItem(item, nnfi)
changed = True
self.cancelJobs(item)
self.prepareRef(item)
if item.current_build_set.unable_to_merge:
failing_reasons.append("it has a merge conflict")
if self.launchJobs(item):
if change_queue.isActionable(item):
self.prepareRef(item)
if item.current_build_set.unable_to_merge:
failing_reasons.append("it has a merge conflict")
if change_queue.isActionable(item) and self.launchJobs(item):
changed = True
if self.pipeline.didAnyJobFail(item):
failing_reasons.append("at least one job failed")
@ -1185,7 +1186,7 @@ class BasePipelineManager(object):
for queue in self.pipeline.queues:
queue_changed = False
nnfi = None # Nearest non-failing item
for item in queue.getActionableItems():
for item in queue.queue[:]:
item_changed, nnfi = self._processOneItem(item, nnfi)
if item_changed:
queue_changed = True

Loading…
Cancel
Save