diff --git a/build/tasks.py b/build/tasks.py index 869830d..ed0e1f4 100644 --- a/build/tasks.py +++ b/build/tasks.py @@ -94,6 +94,9 @@ def build_resume(pk): br.append_triggered(prj) else: log.debug("BuildRelease has no next") + if not br.done: + log.debug("not done yet") + continue if br.release == "release-trunk-weekly": url = trigger_build_matrix(br) if url is not None: diff --git a/build/test/test_tasks.py b/build/test/test_tasks.py index f5f2d96..631bd20 100644 --- a/build/test/test_tasks.py +++ b/build/test/test_tasks.py @@ -18,6 +18,7 @@ from unittest.mock import patch from django.test import override_settings from build.models import BuildRelease +from build.utils import remove_from_textlist from repoapi.models import JenkinsBuildInfo from repoapi.test.base import BaseTest @@ -293,3 +294,55 @@ class WeeklyTest(BaseTest): self.assertEqual(br.pool_size, 0) tb.assert_not_called() tbm.assert_called_once_with(br) + + @override_settings(BUILD_POOL=2) + def test_jbi_manage_failed(self, tbm, tb, dl): + br = BuildRelease.objects.get(uuid=self.release_uuid) + remove_from_textlist(br, "built_projects", "installer") + JenkinsBuildInfo.objects.create( + job_url="http://fake.local/job/installer-repos/", + projectname="installer", + jobname="installer-repos", + tag="UUIDB", + param_release=self.release, + param_release_uuid=self.release_uuid, + buildnumber=1, + result="FAILURE", + ) + JenkinsBuildInfo.objects.create( + job_url="http://fake.local/job/ngcp-prompts-repos/", + projectname="ngcp-prompts", + jobname="ngcp-prompts-repos", + tag="UUIDA", + param_release=self.release, + param_release_uuid=self.release_uuid, + buildnumber=1, + result="SUCCESS", + ) + br = BuildRelease.objects.get(pk=br.pk) + self.assertTrue(br.built_projects.endswith("ngcp-prompts")) + self.assertEqual(br.pool_size, 0) + tb.assert_not_called() + tbm.assert_not_called() + + @override_settings(BUILD_POOL=2) + def test_jbi_manage_building(self, tbm, tb, dl): + br = BuildRelease.objects.get(uuid=self.release_uuid) + remove_from_textlist(br, "built_projects", "installer") + br.append_triggered("installer") + self.assertEqual(br.pool_size, 1) + JenkinsBuildInfo.objects.create( + job_url="http://fake.local/job/ngcp-prompts-repos/", + projectname="ngcp-prompts", + jobname="ngcp-prompts-repos", + tag="UUIDA", + param_release=self.release, + param_release_uuid=self.release_uuid, + buildnumber=1, + result="SUCCESS", + ) + br = BuildRelease.objects.get(pk=br.pk) + self.assertTrue(br.built_projects.endswith("ngcp-prompts")) + self.assertEqual(br.pool_size, 0) + tb.assert_not_called() + tbm.assert_not_called()