TT#11437 set workfront release_target

Change-Id: I6809a5cf0476cfb3d3f0a7ef56b2ad7aa0a36d82
changes/52/13252/3
Victor Seva 8 years ago
parent 711f94ad36
commit 15ecc1443b

5
debian/control vendored

@ -2,12 +2,12 @@ Source: repoapi
Priority: extra
Maintainer: Sipwise Development Team <support@sipwise.com>
Build-Depends:
debhelper (>= 8~),
debhelper (>= 9~),
dh-systemd (>= 1.5),
libpq-dev,
python-dev,
virtualenv,
Standards-Version: 3.9.7
Standards-Version: 3.9.8
Section: python
Homepage: http://sipwise.com/
@ -21,6 +21,7 @@ Depends:
postgresql,
python,
python-dev,
sipwise-repos-scripts-helpers,
uwsgi,
uwsgi-plugin-python,
virtualenv,

@ -21,6 +21,7 @@ from repoapi import utils
logger = logging.getLogger(__name__)
workfront_re = re.compile(r"TT#(\d+)")
workfront_re_branch = re.compile('^mr[0-9]+\.[0-9]+\.[0-9]+$')
commit_re = re.compile(r"^(\w{7}) ")
@ -58,7 +59,16 @@ class WorkfrontNoteInfo(models.Model):
return "%s:%s" % (self.workfront_id, self.gerrit_change)
def workfront_note_add(instance, message):
def workfront_release_target(instance, wid):
branch = instance.param_branch
if workfront_re_branch.search(branch):
release = branch
else:
release = utils.get_next_release(branch)
utils.workfront_set_release_target(wid, release)
def workfront_note_add(instance, message, release_target=False):
wni = WorkfrontNoteInfo.objects
workfront_ids = WorkfrontNoteInfo.getIds(instance.git_commit_msg)
@ -79,6 +89,8 @@ def workfront_note_add(instance, message):
if not utils.workfront_note_send(wid, "%s %s " % (message, url)):
logger.error("remove releated WorkfrontNoteInfo")
note.delete()
if release_target:
workfront_release_target(instance, wid)
def workfront_note_manage(sender, **kwargs):
@ -90,11 +102,14 @@ def workfront_note_manage(sender, **kwargs):
instance = kwargs["instance"]
if instance.jobname.endswith("-get-code") and \
instance.result == "SUCCESS":
set_release_target = True
if instance.gerrit_eventtype == 'change-merged':
msg = "%s[%s] review merged"
elif instance.gerrit_eventtype == 'patchset-created':
msg = "%s[%s] review created"
set_release_target = False
else:
msg = "%s[%s] commit created"
workfront_note_add(instance, msg % (instance.projectname,
instance.param_branch))
instance.param_branch),
set_release_target)

@ -0,0 +1,41 @@
# Copyright (C) 2017 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
# Software Foundation, either version 3 of the License, or (at your option)
# any later version.
# This program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
# more details.
# You should have received a copy of the GNU General Public License along
# with this program. If not, see <http://www.gnu.org/licenses/>.
from django.test import TestCase
from repoapi.test.base import BaseTest
from mock import patch
from repoapi import utils
class UtilsTestCase(BaseTest):
@patch('repoapi.utils.executeAndReturnOutput')
def test_get_next_release_ko(self, ear):
ear.return_value = [1, "", ""]
val = utils.get_next_release("whatever")
self.assertIsNone(val)
@patch('repoapi.utils.executeAndReturnOutput')
def test_get_next_release0(self, ear):
ear.return_value = [0, "mr5.5.1\n", ""]
val = utils.get_next_release("master")
self.assertEquals(val, 'mr5.5.1')
@patch('repoapi.utils.executeAndReturnOutput')
def test_get_next_release0(self, ear):
ear.return_value = [0, "mr5.4.2\n", ""]
val = utils.get_next_release("mr5.4")
self.assertEquals(val, 'mr5.4.2')

@ -65,8 +65,10 @@ class WorkfrontNoteTestCase(BaseTest):
del defaults['gerrit_eventtype']
return defaults
@patch('repoapi.utils.workfront_set_release_target')
@patch('repoapi.utils.get_next_release')
@patch('repoapi.utils.workfront_note_send')
def test_note_gerrit(self, utils):
def test_note_gerrit(self, wns, gnr, wsrt):
param = self.get_defaults()
JenkinsBuildInfo.objects.create(**param)
@ -87,10 +89,14 @@ class WorkfrontNoteTestCase(BaseTest):
param['projectname'],
param['param_branch'],
settings.GERRIT_URL.format("2054"))
utils.assert_called_once_with("0001", msg)
wsrt.assert_not_called()
gnr.assert_not_called()
wns.assert_called_once_with("0001", msg)
@patch('repoapi.utils.workfront_set_release_target')
@patch('repoapi.utils.get_next_release')
@patch('repoapi.utils.workfront_note_send')
def test_note_merge(self, utils):
def test_note_merge(self, wns, gnr, wsrt):
param = self.get_defaults()
JenkinsBuildInfo.objects.create(**param)
@ -116,11 +122,14 @@ class WorkfrontNoteTestCase(BaseTest):
param['projectname'],
param['param_branch'],
settings.GERRIT_URL.format("2054"))
utils.assert_called_once_with("0001", msg)
wsrt.assert_not_called()
gnr.assert_not_called()
wns.assert_called_once_with("0001", msg)
param['jobname'] = "kamailio-get-code"
param['buildnumber'] = 898
param['gerrit_eventtype'] = "change-merged"
gnr.return_value = "mr5.5.1"
JenkinsBuildInfo.objects.create(**param)
gri = WorkfrontNoteInfo.objects.filter(
@ -136,12 +145,17 @@ class WorkfrontNoteTestCase(BaseTest):
param['projectname'],
param['param_branch'],
settings.GERRIT_URL.format("2054"))
utils.assert_called_with("0001", msg)
wsrt.assert_called_once_with("0001", "mr5.5.1")
gnr.assert_called_once_with("master")
wns.assert_called_with("0001", msg)
@patch('repoapi.utils.workfront_set_release_target')
@patch('repoapi.utils.get_next_release')
@patch('repoapi.utils.workfront_note_send')
def test_note_commit(self, utils):
def test_note_commit(self, wns, gnr, wsrt):
param = self.get_non_gerrit_defaults()
param['jobname'] = 'kamailio-get-code'
gnr.return_value = "mr5.5.1"
JenkinsBuildInfo.objects.create(**param)
gri = WorkfrontNoteInfo.objects.filter(
@ -161,4 +175,68 @@ class WorkfrontNoteTestCase(BaseTest):
param['projectname'],
param['param_branch'],
settings.GITWEB_URL.format("kamailio", "7fg4567"))
utils.assert_called_once_with("0001", msg)
wsrt.assert_called_once_with("0001", "mr5.5.1")
gnr.assert_called_once_with("master")
wns.assert_called_once_with("0001", msg)
@patch('repoapi.utils.workfront_set_release_target')
@patch('repoapi.utils.get_next_release')
@patch('repoapi.utils.workfront_note_send')
def test_note_commit_mrXX(self, wns, gnr, wsrt):
param = self.get_non_gerrit_defaults()
param['jobname'] = 'kamailio-get-code'
param['param_branch'] = 'mr5.5'
param['param_release'] = 'release-mr5.5-update'
gnr.return_value = "mr5.5.2"
JenkinsBuildInfo.objects.create(**param)
gri = WorkfrontNoteInfo.objects.filter(
workfront_id="0001",
gerrit_change="7fg4567")
self.assertEquals(gri.count(), 1)
param['jobname'] = "kamailio-binaries"
param['buildnumber'] = 897
JenkinsBuildInfo.objects.create(**param)
gri = WorkfrontNoteInfo.objects.filter(
workfront_id="0001",
gerrit_change="7fg4567")
self.assertEquals(gri.count(), 1)
msg = "%s[%s] commit created %s " % (
param['projectname'],
param['param_branch'],
settings.GITWEB_URL.format("kamailio", "7fg4567"))
wsrt.assert_called_once_with("0001", "mr5.5.2")
gnr.assert_called_once_with("mr5.5")
wns.assert_called_once_with("0001", msg)
@patch('repoapi.utils.workfront_set_release_target')
@patch('repoapi.utils.get_next_release')
@patch('repoapi.utils.workfront_note_send')
def test_note_commit_mrXXX(self, wns, gnr, wsrt):
param = self.get_non_gerrit_defaults()
param['jobname'] = 'kamailio-get-code'
param['param_branch'] = 'mr5.5.2'
JenkinsBuildInfo.objects.create(**param)
gri = WorkfrontNoteInfo.objects.filter(
workfront_id="0001",
gerrit_change="7fg4567")
self.assertEquals(gri.count(), 1)
param['jobname'] = "kamailio-binaries"
param['buildnumber'] = 897
JenkinsBuildInfo.objects.create(**param)
gri = WorkfrontNoteInfo.objects.filter(
workfront_id="0001",
gerrit_change="7fg4567")
self.assertEquals(gri.count(), 1)
msg = "%s[%s] commit created %s " % (
param['projectname'],
param['param_branch'],
settings.GITWEB_URL.format("kamailio", "7fg4567"))
wsrt.assert_called_once_with("0001", "mr5.5.2")
gnr.assert_not_called()
wns.assert_called_once_with("0001", msg)

@ -137,3 +137,33 @@ def workfront_note_send(_id, message):
logger.error("can't post workfront note. %s. %s", res[1], res[2])
return False
return True
def get_next_release(branch):
command = [
"/usr/bin/meta-release-helper",
"--next-release",
branch
]
logger.debug("meta-release-helper command: %s", command)
res = executeAndReturnOutput(command)
if res[0] != 0:
logger.error(
"can't find out next release version. %s. %s", res[1], res[2])
return None
return res[1].rstrip()
def workfront_set_release_target(_id, release):
command = [
"/usr/bin/workfront-target-task",
"--credfile=%s" % settings.WORKFRONT_CREDENTIALS,
"--taskid=%s" % _id,
'--release="%s"' % release
]
logger.debug("workfront-target-task command: %s", command)
res = executeAndReturnOutput(command)
if res[0] != 0:
logger.error("can't set release target. %s. %s", res[1], res[2])
return False
return True

Loading…
Cancel
Save