TT#43813 trunk fixes

* release-copy-debs-yml job expects relase-trunk-$(distribution)
* trigger_builds: use 'trunk' as release parameter
  so is clear a trunk build
  If we use 'release-trunk-$dist' it gets detected as a release
* repoapi: filter out settings.BUILD_RELEASE_JOBS of the list of projects
  when release_uuid is set

Change-Id: I7e522bc05cf4388889fa4aba8828d3254cf983ee
changes/39/38339/9
Victor Seva 6 years ago
parent 772681bdf6
commit 36402a2e4c
No known key found for this signature in database
GPG Key ID: B1589889727198E0

@ -44,7 +44,7 @@ def jbi_manage(sender, **kwargs):
if jbi.jobname in settings.BUILD_RELEASE_JOBS:
if not release.startswith("release-"):
release = "release-{}".format(jbi.param_release)
if jbi.param_release == "none":
if jbi.param_release_uuid in [None, "none", ""]:
logger.debug(
"jbi release:%s release_uuid:%s, no ReleaseBuild link, skip",
jbi.param_release,
@ -52,14 +52,10 @@ def jbi_manage(sender, **kwargs):
)
return
try:
br = BuildRelease.objects.get(
release=release, uuid=jbi.param_release_uuid,
)
br = BuildRelease.objects.get(uuid=jbi.param_release_uuid,)
except BuildRelease.DoesNotExist:
logger.error(
"BuildRelease:%s[%s] not found",
jbi.param_release,
jbi.param_release_uuid,
"BuildRelease:%s not found", jbi.param_release_uuid,
)
return
if not br.append_built(jbi):

@ -32,8 +32,12 @@ def build_release(self, pk):
instance = br.get(id=pk)
except BuildRelease.DoesNotExist as exc:
raise self.retry(countdown=60 * 5, exc=exc)
if instance.release == "trunk":
release = "release-trunk-{}".format(instance.distribution)
else:
release = instance.release
url = trigger_copy_deps(
release=instance.release, internal=True, release_uuid=instance.uuid,
release=release, internal=True, release_uuid=instance.uuid,
)
logger.info("%s triggered" % url)

@ -31,7 +31,7 @@ class BuildReleaseManagerTestCase(BaseTest):
def test_create_trunk(self, dlf):
br = BuildRelease.objects.create_build_release("AAA", "trunk")
self.assertEqual(br.release, "release-trunk-buster")
self.assertEqual(br.release, "trunk")
self.assertEqual(br.distribution, "buster")
self.assertIsNone(br.tag)
self.assertEqual(br.branch, "master")

@ -56,9 +56,10 @@ class TestRest(APIAuthenticatedTestCase):
}
response = self.client.post(self.url, data, format="json")
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
self.assertEqual(response.data["release"], "release-trunk-buster")
self.assertEqual(response.data["release"], "trunk")
self.assertIsNone(response.data["tag"])
self.assertEqual(response.data["branch"], "master")
self.assertEqual(response.data["distribution"], "buster")
def test_trunk(self):
data = {
@ -68,9 +69,10 @@ class TestRest(APIAuthenticatedTestCase):
response = self.client.post(self.url, data, format="json")
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
self.assertEqual(response.data["uuid"], data["uuid"])
self.assertEqual(response.data["release"], "release-trunk-buster")
self.assertEqual(response.data["release"], "trunk")
self.assertIsNone(response.data["tag"])
self.assertEqual(response.data["branch"], "master")
self.assertEqual(response.data["distribution"], "buster")
projects = response.data["projects"].split(",")
self.assertEqual(len(projects), 73)

@ -117,7 +117,7 @@ class ReleaseConfigTestCase(SimpleTestCase):
def test_release_value(self):
rc = ReleaseConfig("trunk")
self.assertEqual(rc.release, "release-trunk-buster")
self.assertEqual(rc.release, "trunk")
def test_branch_tag_value_trunk(self):
rc = ReleaseConfig("trunk")
@ -234,3 +234,45 @@ class TriggerBuild(SimpleTestCase):
params["token"] = settings.JENKINS_TOKEN
self.assertEqual(res, "{base}/job/{project}/".format(**params))
openurl.assert_called_once_with(url.format(**params))
def test_project_build_trunk(self, openurl):
params = {
"project": "kamailio-get-code",
"release_uuid": "UUID_mr8.2",
"trigger_release": "trunk",
"trigger_branch_or_tag": "branch/master",
"trigger_distribution": "buster",
"uuid": "UUID_A",
}
url = (
"{base}/job/{project}/buildWithParameters?"
"token={token}&cause={trigger_release}&uuid={uuid}&"
"release_uuid={release_uuid}&"
"branch=master&tag=none&"
"release=trunk&distribution={trigger_distribution}"
)
res = trigger_build(**params)
params["base"] = settings.JENKINS_URL
params["token"] = settings.JENKINS_TOKEN
self.assertEqual(res, "{base}/job/{project}/".format(**params))
openurl.assert_called_once_with(url.format(**params))
def test_copy_debs_build_trunk(self, openurl):
params = {
"release": "release-trunk-buster",
"internal": True,
"release_uuid": "UUID_master",
"uuid": "UUID_B",
}
url = (
"{base}/job/{project}/buildWithParameters?"
"token={token}&cause={release}&uuid={uuid}&"
"release_uuid={release_uuid}&"
"release=release-trunk-buster&internal=true"
)
res = trigger_copy_deps(**params)
params["project"] = "release-copy-debs-yml"
params["base"] = settings.JENKINS_URL
params["token"] = settings.JENKINS_TOKEN
self.assertEqual(res, "{base}/job/{project}/".format(**params))
openurl.assert_called_once_with(url.format(**params))

@ -59,7 +59,10 @@ def get_common_release(version):
def trigger_copy_deps(release, internal, release_uuid, uuid=None):
simple = get_simple_release(release)
if release.startswith("release-trunk-"):
simple = release
else:
simple = get_simple_release(release)
if uuid is None:
uuid = uuid4()
params = {
@ -215,7 +218,7 @@ class ReleaseConfig(object):
@property
def branch(self):
release = self.release
if release.startswith("release-trunk-"):
if release == "trunk":
return "master"
release_count = release.count(".")
if release_count in [1, 2]:
@ -231,6 +234,8 @@ class ReleaseConfig(object):
@property
def release(self):
for dist in self.config["distris"]:
if dist.startswith("release-trunk-"):
return "trunk"
if dist.startswith("release-"):
return dist

@ -113,5 +113,28 @@
},
"model": "repoapi.jenkinsbuildinfo",
"pk": 5
},
{
"fields": {
"buildnumber": 1,
"date": "2015-05-04T17:04:57.802Z",
"gerrit_change": null,
"gerrit_eventtype": null,
"gerrit_patchset": null,
"job_url": "https://jenkins.mgm.sipwise.com/job/release-copy-debs-yml/",
"param_branch": null,
"param_distribution": "wheezy",
"param_ppa": null,
"param_release": "mr3.1-fake",
"param_release_uuid": null,
"param_tag": null,
"projectname": "release-copy-debs-yml",
"jobname": "release-copy-debs-yml",
"repo_name": null,
"result": "SUCCESS",
"tag": null
},
"model": "repoapi.jenkinsbuildinfo",
"pk": 6
}
]

@ -196,5 +196,28 @@
},
"model": "repoapi.jenkinsbuildinfo",
"pk": 8
},
{
"fields": {
"buildnumber": 13,
"date": "2017-05-04T17:04:57.802Z",
"gerrit_change": null,
"gerrit_eventtype": null,
"gerrit_patchset": null,
"job_url": "https://jenkins.mgm.sipwise.com/job/foo-get-code/",
"param_branch": null,
"param_distribution": "buster",
"param_ppa": null,
"param_release": "release-mr8.1",
"param_release_uuid": "UUID_mr8.1",
"param_tag": null,
"projectname": "release-copy-debs-yml",
"jobname": "release-copy-debs-yml",
"repo_name": null,
"result": "SUCCESS",
"tag": "UUID4"
},
"model": "repoapi.jenkinsbuildinfo",
"pk": 9
}
]

@ -80,6 +80,9 @@ class JenkinsBuildInfoManager(models.Manager):
"param_release": release,
"tag__isnull": False,
}
exclude_params = {
"jobname__in": settings.BUILD_RELEASE_JOBS,
}
if release_uuid:
params["param_release_uuid"] = release_uuid
if failed is not None:
@ -87,8 +90,10 @@ class JenkinsBuildInfoManager(models.Manager):
params["result"] = "FAILURE"
else:
params["result__in"] = ["SUCCESS", "UNSTABLE"]
qs = self.get_queryset()
res = qs.filter(**params).values("projectname").distinct()
qs = self.get_queryset().filter(**params)
if release_uuid:
qs = qs.exclude(**exclude_params)
res = qs.values("projectname").distinct()
if res.exists():
if flat:
return res.values_list("projectname", flat=True)

@ -33,7 +33,7 @@ class JBIQueriesTestCase(BaseTest):
"fake",
]
check = JenkinsBuildInfo.objects.release_projects("mr3.1-fake")
self.assertCountEqual(check, projects)
self.assertListEqual(list(check), projects)
def test_release_project_uuids(self):
projects = [
@ -77,16 +77,18 @@ class JBIQueriesTestCase(BaseTest):
)
def test_purge_release(self):
prev_count = JenkinsBuildInfo.objects.count()
jbi = JenkinsBuildInfo.objects.get(pk=1)
jbi.date = datetime.now()
jbi.save()
self.assertEqual(JenkinsBuildInfo.objects.count(), 5)
self.assertEqual(JenkinsBuildInfo.objects.count(), prev_count)
JenkinsBuildInfo.objects.purge_release(
"mr3.1-fake", timedelta(weeks=3)
)
self.assertEqual(JenkinsBuildInfo.objects.count(), 1)
def test_purge_release_none(self):
prev_count = JenkinsBuildInfo.objects.count()
jbi = JenkinsBuildInfo.objects.get(pk=1)
jbi.param_release = None
jbi.save()
@ -96,9 +98,9 @@ class JBIQueriesTestCase(BaseTest):
).count(),
1,
)
self.assertEqual(JenkinsBuildInfo.objects.count(), 5)
self.assertEqual(JenkinsBuildInfo.objects.count(), prev_count)
JenkinsBuildInfo.objects.purge_release(None, timedelta(weeks=3))
self.assertEqual(JenkinsBuildInfo.objects.count(), 4)
self.assertEqual(JenkinsBuildInfo.objects.count(), prev_count - 1)
class JBIQueriesUUIDTest(BaseTest):
@ -113,7 +115,7 @@ class JBIQueriesUUIDTest(BaseTest):
check = JenkinsBuildInfo.objects.release_projects(
self.release, release_uuid=self.release_uuid
)
self.assertCountEqual(check, projects)
self.assertListEqual(list(check), projects)
def test_release_project_uuids(self):
projects = [

@ -23,14 +23,16 @@ class TasksTestCase(BaseTest):
fixtures = ["test_model_queries.json"]
def test_purge(self):
prev_count = JenkinsBuildInfo.objects.count()
jbi = JenkinsBuildInfo.objects.get(pk=1)
jbi.date = datetime.now()
jbi.save()
self.assertEqual(JenkinsBuildInfo.objects.count(), 5)
self.assertEqual(JenkinsBuildInfo.objects.count(), prev_count)
tasks.jbi_purge.delay("mr3.1-fake", 3)
self.assertEqual(JenkinsBuildInfo.objects.count(), 1)
def test_purge_none(self):
prev_count = JenkinsBuildInfo.objects.count()
jbi = JenkinsBuildInfo.objects.get(pk=1)
jbi.param_release = None
jbi.save()
@ -40,6 +42,6 @@ class TasksTestCase(BaseTest):
).count(),
1,
)
self.assertEqual(JenkinsBuildInfo.objects.count(), 5)
self.assertEqual(JenkinsBuildInfo.objects.count(), prev_count)
tasks.jbi_purge.delay(None, 3)
self.assertEqual(JenkinsBuildInfo.objects.count(), 4)
self.assertEqual(JenkinsBuildInfo.objects.count(), prev_count - 1)

Loading…
Cancel
Save