Merge "Fix wedged scheduler on force-merge of non-existing template"
This commit is contained in:
commit
e1c0eb080d
2
tests/fixtures/config/force-merge-template/git/common-config/playbooks/test.yaml
vendored
Normal file
2
tests/fixtures/config/force-merge-template/git/common-config/playbooks/test.yaml
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
- hosts: all
|
||||
tasks: []
|
|
@ -0,0 +1,35 @@
|
|||
- pipeline:
|
||||
name: check
|
||||
manager: independent
|
||||
trigger:
|
||||
gerrit:
|
||||
- event: patchset-created
|
||||
success:
|
||||
gerrit:
|
||||
Verified: 1
|
||||
failure:
|
||||
gerrit:
|
||||
Verified: -1
|
||||
|
||||
- pipeline:
|
||||
name: post
|
||||
manager: independent
|
||||
trigger:
|
||||
gerrit:
|
||||
- event: ref-updated
|
||||
ref: ^(?!refs/).*$
|
||||
precedence: low
|
||||
|
||||
|
||||
- job:
|
||||
name: base
|
||||
parent: null
|
||||
|
||||
- job:
|
||||
name: post-job
|
||||
run: playbooks/test.yaml
|
||||
|
||||
- job:
|
||||
name: other-job
|
||||
run: playbooks/test.yaml
|
||||
|
|
@ -0,0 +1 @@
|
|||
test
|
|
@ -0,0 +1,7 @@
|
|||
- project:
|
||||
check:
|
||||
jobs:
|
||||
- noop
|
||||
post:
|
||||
jobs:
|
||||
- post-job
|
|
@ -0,0 +1 @@
|
|||
test
|
|
@ -0,0 +1,4 @@
|
|||
- project:
|
||||
check:
|
||||
jobs:
|
||||
- other-job
|
|
@ -0,0 +1,17 @@
|
|||
- tenant:
|
||||
name: tenant-one
|
||||
source:
|
||||
gerrit:
|
||||
config-projects:
|
||||
- common-config
|
||||
untrusted-projects:
|
||||
- org/project
|
||||
|
||||
- tenant:
|
||||
name: tenant-two
|
||||
source:
|
||||
gerrit:
|
||||
config-projects:
|
||||
- common-config
|
||||
untrusted-projects:
|
||||
- org/project2
|
|
@ -5002,3 +5002,47 @@ class TestProvidesRequires(ZuulDBTestCase):
|
|||
])
|
||||
self.assertIn('image-user : SKIPPED', B.messages[0])
|
||||
self.assertIn('not met by build', B.messages[0])
|
||||
|
||||
|
||||
class TestForceMergeMissingTemplate(ZuulTestCase):
|
||||
tenant_config_file = "config/force-merge-template/main.yaml"
|
||||
|
||||
def test_force_merge_missing_template(self):
|
||||
"""
|
||||
Tests that force merging a change using a non-existent project
|
||||
template triggering a post job doesn't wedge zuul on reporting.
|
||||
"""
|
||||
|
||||
# Create change that adds uses a non-existent project template
|
||||
conf = textwrap.dedent(
|
||||
"""
|
||||
- project:
|
||||
templates:
|
||||
- non-existent
|
||||
check:
|
||||
jobs:
|
||||
- noop
|
||||
post:
|
||||
jobs:
|
||||
- post-job
|
||||
""")
|
||||
|
||||
file_dict = {'zuul.yaml': conf}
|
||||
A = self.fake_gerrit.addFakeChange('org/project', 'master', 'A',
|
||||
files=file_dict)
|
||||
|
||||
# Now force merge the change
|
||||
A.setMerged()
|
||||
self.fake_gerrit.addEvent(A.getChangeMergedEvent())
|
||||
self.waitUntilSettled()
|
||||
self.fake_gerrit.addEvent(A.getRefUpdatedEvent())
|
||||
self.waitUntilSettled()
|
||||
|
||||
B = self.fake_gerrit.addFakeChange('org/project2', 'master', 'B')
|
||||
self.fake_gerrit.addEvent(B.getPatchsetCreatedEvent(1))
|
||||
self.waitUntilSettled()
|
||||
|
||||
self.assertEqual(B.reported, 1)
|
||||
self.assertHistory([
|
||||
dict(name='other-job', result='SUCCESS', changes='2,1'),
|
||||
])
|
||||
|
|
|
@ -912,7 +912,12 @@ class PipelineManager(object):
|
|||
layout = (item.layout or self.pipeline.tenant.layout)
|
||||
|
||||
project_in_pipeline = True
|
||||
if not layout.getProjectPipelineConfig(item):
|
||||
ppc = None
|
||||
try:
|
||||
ppc = layout.getProjectPipelineConfig(item)
|
||||
except Exception:
|
||||
self.log.exception("Invalid config for change %s" % item.change)
|
||||
if not ppc:
|
||||
self.log.debug("Project %s not in pipeline %s for change %s" % (
|
||||
item.change.project, self.pipeline, item.change))
|
||||
project_in_pipeline = False
|
||||
|
|
Loading…
Reference in New Issue