TT#43813 build: stop sending jobs if any previous build_deps is missing

Change-Id: I9b62902053ea82869fdb71e965cd318bc7f93a84
changes/49/39749/1
Victor Seva 5 years ago
parent c9361655c6
commit 62f29bb28f

@ -228,10 +228,19 @@ class BuildRelease(models.Model):
return
t_list = self.triggered_projects_list
built_list = self.built_projects_list
deps_missing = []
for grp in self.build_deps:
for prj in grp:
if prj not in built_list and prj not in t_list:
return prj
if prj not in built_list:
if prj not in t_list:
return prj
else:
deps_missing.append(prj)
else:
if len(deps_missing) > 0:
msg = "release {} has build_deps {} missing"
logger.info(msg.format(self, deps_missing))
return None
for prj in self.projects_list:
if prj not in built_list and prj not in t_list:
return prj
@ -240,7 +249,8 @@ class BuildRelease(models.Model):
def next(self):
failed_projects = self.failed_projects_list
if any(job in failed_projects for job in settings.BUILD_RELEASE_JOBS):
logger.info("release has failed release_jobs, stop sending jobs")
msg = "release {} has failed release_jobs, stop sending jobs"
logger.info(msg.format(self))
return
res = self._next()
if res is not None:

@ -274,6 +274,28 @@ class BuildReleaseStepsTest(BaseTest):
self.assertTrue(self.br.append_built(self.jbi))
self.assertEqual(self.br.next, "asterisk-voicemail")
def test_next_build_deps_stop(self):
build_deps = [
"data-hal",
"libinewrate",
"libswrate",
"libtcap",
"sipwise-base",
"check-tools",
]
i = 1
self.jbi.projectname = "release-copy-debs-yml"
self.assertTrue(self.br.append_built(self.jbi))
for prj in build_deps:
self.jbi.projectname = prj
self.assertTrue(self.br.append_triggered(prj))
_next = self.br.next
try:
self.assertEqual(_next, build_deps[i])
i += 1
except IndexError:
self.assertIsNone(_next)
def test_next_last(self):
pl = self.br.projects_list[:-1]
pl.insert(0, "release-copy-debs-yml")

@ -147,3 +147,118 @@ class JBIManageTest(BaseTest):
tb.assert_called_once_with(**params)
self.assertEqual(br.pool_size, 2)
self.assertEqual(br.triggered_projects, "libinewrate,libswrate")
@override_settings(BUILD_POOL=3)
def test_jbi_manage_pool_deps(self, tb, dl):
br = BuildRelease.objects.get(uuid=self.release_uuid)
self.assertEqual(br.pool_size, 0)
JenkinsBuildInfo.objects.create(
job_url="http://fake.local/job/release-copy-debs-yml/",
projectname="release-copy-debs-yml",
jobname="release-copy-debs-yml",
tag="UUIDA",
param_release="mr8.1",
param_release_uuid=self.release_uuid,
buildnumber=1,
result="SUCCESS",
)
params = {
"project": "data-hal-get-code",
"release_uuid": br.uuid,
"trigger_release": br.release,
"trigger_branch_or_tag": br.branch_or_tag,
"trigger_distribution": br.distribution,
}
calls = [call(**params)]
params["project"] = "libinewrate-get-code"
calls.append(call(**params))
params["project"] = "libswrate-get-code"
calls.append(call(**params))
tb.assert_has_calls(calls)
JenkinsBuildInfo.objects.create(
job_url="http://fake.local/job/data-hal-repos/",
projectname="data-hal",
jobname="data-hal-repos",
tag="UUIDA",
param_release=self.release,
param_release_uuid=self.release_uuid,
buildnumber=1,
result="SUCCESS",
)
params["project"] = "libtcap-get-code"
tb.assert_called_with(**params)
JenkinsBuildInfo.objects.create(
job_url="http://fake.local/job/libswrate-repos/",
projectname="libswrate",
jobname="libswrate-repos",
tag="UUIDA",
param_release=self.release,
param_release_uuid=self.release_uuid,
buildnumber=1,
result="SUCCESS",
)
params["project"] = "sipwise-base-get-code"
tb.assert_called_with(**params)
JenkinsBuildInfo.objects.create(
job_url="http://fake.local/job/libinewrate-repos/",
projectname="libinewrate",
jobname="libinewrate-repos",
tag="UUIDA",
param_release=self.release,
param_release_uuid=self.release_uuid,
buildnumber=1,
result="SUCCESS",
)
br = BuildRelease.objects.get(uuid=self.release_uuid)
self.assertEqual(
br.triggered_projects, "libtcap,sipwise-base,check-tools"
)
params["project"] = "check-tools-get-code"
tb.assert_called_with(**params)
tb.reset_mock()
JenkinsBuildInfo.objects.create(
job_url="http://fake.local/job/libtcap-repos/",
projectname="libtcap",
jobname="libtcap-repos",
tag="UUIDA",
param_release=self.release,
param_release_uuid=self.release_uuid,
buildnumber=1,
result="SUCCESS",
)
br = BuildRelease.objects.get(uuid=self.release_uuid)
self.assertEqual(br.triggered_projects, "sipwise-base,check-tools")
tb.assert_not_called()
JenkinsBuildInfo.objects.create(
job_url="http://fake.local/job/check-tools-repos/",
projectname="check-tools",
jobname="check-tools-repos",
tag="UUIDA",
param_release=self.release,
param_release_uuid=self.release_uuid,
buildnumber=1,
result="SUCCESS",
)
br = BuildRelease.objects.get(uuid=self.release_uuid)
self.assertEqual(br.triggered_projects, "sipwise-base")
tb.assert_not_called()
JenkinsBuildInfo.objects.create(
job_url="http://fake.local/job/sipwise-base-repos/",
projectname="sipwise-base",
jobname="sipwise-base-repos",
tag="UUIDA",
param_release=self.release,
param_release_uuid=self.release_uuid,
buildnumber=1,
result="SUCCESS",
)
br = BuildRelease.objects.get(uuid=self.release_uuid)
self.assertEqual(br.triggered_projects, "ngcp-schema")
params["project"] = "ngcp-schema-get-code"
tb.assert_called_with(**params)

Loading…
Cancel
Save