diff --git a/build/fixtures/test_trunk_next.yaml b/build/fixtures/test_trunk_next.yaml index 80a2bb4..d0b733f 100644 --- a/build/fixtures/test_trunk_next.yaml +++ b/build/fixtures/test_trunk_next.yaml @@ -2,14 +2,9 @@ pk: 1 fields: branch: master - built_projects: release-copy-debs-yml distribution: bookworm - failed_projects: '' pool_size: 0 projects: 'asterisk-voicemail,backup-tools,bulk-processor,bulk-processor-projects,bootenv,cdr-exporter,cfg-schema,check-tools,cleanup-tools,cloudpbx-sources,codec-chain,csta-testsuite,data-hal,db-schema,deployment-iso,dhtest,documentation,faxserver,installer,kamailio,kamailio-config-tests,keyring,libswrate,libtcap,license-client,lnpd,lua-ngcp-kamailio,mediator,metapackages,monitoring-tools,ngcp-admin-ui,ngcp-api-tools,ngcp-csc-ui,ngcp-cudecs,ngcp-exporter,ngcp-fauditd,ngcp-freeswitch-appserv,ngcp-inventory,ngcp-js-api-client,ngcp-logfs,ngcp-panel,ngcp-prompts,ngcp-rest-api,ngcp-schema,ngcp-status,ngcp-sudo-plugin,ngcp-support,ngcp-task-agent,ngcp-user-framework,ngcp-web-tests-e2e,ngcpcfg,ngcpcfg-api,ngcpcfg-ha,ngrep-sip,prosody,pushd,rate-o-mat,reminder,rtpengine,sems,sems-pbx,sipwise-base,snmp-agent,system-tests,system-tools,templates,upgrade,vmnotify,voisniff-ng,websocket' release: trunk-next start_date: '2024-10-14T10:28:01.000Z' - tag: '' - triggered_jobs: '' - triggered_projects: '' uuid: 53f9e166-4271-4581-ae3d-b3c1bb0bb081 diff --git a/build/models.py b/build/models.py index 83be375..df2a748 100644 --- a/build/models.py +++ b/build/models.py @@ -1,4 +1,4 @@ -# Copyright (C) 2017-2023 The Sipwise Team - http://sipwise.com +# Copyright (C) 2017-2024 The Sipwise Team - http://sipwise.com # # This program is free software: you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the Free @@ -356,6 +356,12 @@ class BuildRelease(models.Model): return None return prj + @property + def build_release(self) -> str: + if self.release in ["trunk", "trunk-next"]: + return "trunk" + return self.release + @property def build_deps(self) -> list: return self.config.levels_build_deps diff --git a/build/tasks.py b/build/tasks.py index f0da68b..e5d89dd 100644 --- a/build/tasks.py +++ b/build/tasks.py @@ -1,4 +1,4 @@ -# Copyright (C) 2017-2022 The Sipwise Team - http://sipwise.com +# Copyright (C) 2017-2024 The Sipwise Team - http://sipwise.com # # This program is free software: you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the Free @@ -56,7 +56,7 @@ def build_project(pk, project): url = trigger_build( "{}-get-code".format(project), br.uuid, - br.release, + br.build_release, trigger_branch_or_tag=br.branch_or_tag, trigger_distribution=br.distribution, ) @@ -74,7 +74,7 @@ def build_resume(pk): return params = { "release_uuid": br.uuid, - "trigger_release": br.release, + "trigger_release": br.build_release, "trigger_branch_or_tag": br.branch_or_tag, "trigger_distribution": br.distribution, } @@ -88,7 +88,7 @@ def build_resume(pk): prj = br.next if prj: params["project"] = "{}-get-code".format(prj) - logger.debug("trigger project", project=params["project"]) + logger.debug("trigger project", params=params) trigger_build(**params) br.append_triggered(prj) else: diff --git a/build/test/test_models.py b/build/test/test_models.py index 5a1f441..d78a3f8 100644 --- a/build/test/test_models.py +++ b/build/test/test_models.py @@ -161,6 +161,13 @@ class BuildReleaseTestCase(BaseTest): self.assertIsNotNone(config) self.assertIs(config, build.config) + def test_build_release(self): + br = BuildRelease.objects.get(uuid=self.release_uuid) + self.assertEqual(br.build_release, "release-mr8.1") + + br = BuildRelease.objects.create_build_release("AAA", "trunk") + self.assertEqual(br.build_release, "trunk") + def test_branch_or_tag_trunk(self): build = BuildRelease.objects.create_build_release("AAA", "trunk") self.assertEqual(build.branch_or_tag, "branch/master") diff --git a/build/test/test_next.py b/build/test/test_next.py index fdf0d5e..abab887 100644 --- a/build/test/test_next.py +++ b/build/test/test_next.py @@ -22,6 +22,7 @@ from build.models import BuildRelease from build.models import ReleaseConfig from build.utils import get_simple_release from build.utils import guess_trunk_filename +from repoapi.models import JenkinsBuildInfo from repoapi.test.base import BaseTest FIXTURES_PATH = settings.BASE_DIR.joinpath("build", "fixtures") @@ -36,9 +37,48 @@ class BuildReleaseTestCase(BaseTest): def test_distribution(self): br = BuildRelease.objects.get(uuid=self.release_uuid) - self.assertEqual(br.release, "trunk-next") self.assertEqual(br.distribution, "bookworm") + def test_build_release(self): + br = BuildRelease.objects.get(uuid=self.release_uuid) + self.assertEqual(br.release, "trunk-next") + self.assertEqual(br.build_release, "trunk") + + +@override_settings( + BUILD_REPOS_SCRIPTS_CONFIG_DIR=FIXTURES_PATH.joinpath("config.next"), + JBI_ALLOWED_HOSTS=["fake.local"], +) +@patch("repoapi.utils.dlfile") +@patch("build.tasks.trigger_build") +class BuildReleaseBuilds(BaseTest): + fixtures = ["test_trunk_next"] + release = "trunk" + release_uuid = "53f9e166-4271-4581-ae3d-b3c1bb0bb081" + project = "ngcpcfg" + + def test_jbi_manage_ok_release_job(self, tb, _): + 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=self.release, + param_release_uuid=self.release_uuid, + buildnumber=1, + result="SUCCESS", + ) + params = { + "project": f"{self.project}-get-code", + "release_uuid": self.release_uuid, + "trigger_release": self.release, + "trigger_branch_or_tag": "branch/master", + "trigger_distribution": "bookworm", + } + tb.assert_called_once_with(**params) + @override_settings( BUILD_REPOS_SCRIPTS_CONFIG_DIR=FIXTURES_PATH.joinpath("config.next")