Merge lp:~mrazik/jenkins-launchpad-plugin/rebuild_link into lp:~private-ps-quality-team/jenkins-launchpad-plugin/trunk

Proposed by Martin Mrazik
Status: Merged
Approved by: Martin Mrazik
Approved revision: 70
Merged at revision: 63
Proposed branch: lp:~mrazik/jenkins-launchpad-plugin/rebuild_link
Merge into: lp:~private-ps-quality-team/jenkins-launchpad-plugin/trunk
Diff against target: 146 lines (+48/-14)
3 files modified
autoland.py (+4/-2)
launchpad.py (+18/-8)
tests/test_launchpadTrigger.py (+26/-4)
To merge this branch: bzr merge lp:~mrazik/jenkins-launchpad-plugin/rebuild_link
Reviewer Review Type Date Requested Status
PS Jenkins bot continuous-integration Needs Fixing
Michael Zanetti (community) Approve
Review via email: mp+135131@code.launchpad.net

Commit message

Adding a direct link to trigger a (CI only) rebuild.
I don't want to add the link for autolanding as it is a bit more tricky there (you need to set the state to approve anyway and that will trigger the building; if you would trigger manually _and_ change the state to Approved there is a potential for race condition).

Description of the change

Adding a direct link to trigger a (CI only) rebuild.
I don't want to add the link for autolanding as it is a bit more tricky there (you need to set the state to approve anyway and that will trigger the building; if you would trigger manually _and_ change the state to Approved there is a potential for race condition).

To post a comment you must log in.
Revision history for this message
Martin Mrazik (mrazik) wrote :
70. By Martin Mrazik

ppe8 fix

Revision history for this message
Michael Zanetti (mzanetti) wrote :

looks good to me

review: Approve
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
Martin Mrazik (mrazik) wrote :

I killed the last CI job as it was blocking autolanding.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'autoland.py'
--- autoland.py 2012-11-15 16:24:05 +0000
+++ autoland.py 2012-11-20 12:07:24 +0000
@@ -56,8 +56,10 @@
56def change_mp_status(launchpad, mp, reason, args, vote):56def change_mp_status(launchpad, mp, reason, args, vote):
57 args[reason] = True57 args[reason] = True
58 mp_state, message, subject = build_state(args)58 mp_state, message, subject = build_state(args)
59 message = launchpad.format_message_for_mp_update(args['build_job_url'],59 message = launchpad.format_message_for_mp_update(
60 message)60 args['build_job_url'],
61 message,
62 include_rebuild_link=False)
61 launchpad.change_mp_status(mp, mp_state, message, subject,63 launchpad.change_mp_status(mp, mp_state, message, subject,
62 args['revision'], vote)64 args['revision'], vote)
6365
6466
=== modified file 'launchpad.py'
--- launchpad.py 2012-11-06 12:45:09 +0000
+++ launchpad.py 2012-11-20 12:07:24 +0000
@@ -11,6 +11,7 @@
11from xml.dom.minidom import parseString11from xml.dom.minidom import parseString
12import re12import re
13from jsonjenkins import JSONJenkins13from jsonjenkins import JSONJenkins
14from textwrap import dedent
1415
1516
16class LaunchpadAgent():17class LaunchpadAgent():
@@ -198,22 +199,22 @@
198 def approve_mp(self, mp, revision, build_url):199 def approve_mp(self, mp, revision, build_url):
199 state = 'PASSED: Continuous integration, rev:' + str(revision)200 state = 'PASSED: Continuous integration, rev:' + str(revision)
200 logger.debug(state)201 logger.debug(state)
202 content = self.format_message_for_mp_update(build_url,
203 state + "\n")
201 mp.createComment(review_type=LAUNCHPAD_REVIEW_TYPE,204 mp.createComment(review_type=LAUNCHPAD_REVIEW_TYPE,
202 vote=LaunchpadVote.APPROVE, subject=state,205 vote=LaunchpadVote.APPROVE, subject=state,
203 content=state + "\n" +206 content=content)
204 self.hide_jenkins_url(build_url) +
205 self.get_executed_test_runs(build_url))
206 review = MergeProposalReview(mp)207 review = MergeProposalReview(mp)
207 review.unlock()208 review.unlock()
208209
209 def disapprove_mp(self, mp, revision, build_url):210 def disapprove_mp(self, mp, revision, build_url):
210 state = 'FAILED: Continuous integration, rev:' + str(revision)211 state = 'FAILED: Continuous integration, rev:' + str(revision)
211 logger.debug(state)212 logger.debug(state)
213 content = self.format_message_for_mp_update(build_url,
214 state + "\n")
212 mp.createComment(review_type=LAUNCHPAD_REVIEW_TYPE,215 mp.createComment(review_type=LAUNCHPAD_REVIEW_TYPE,
213 vote=LaunchpadVote.NEEDS_FIXING, subject=state,216 vote=LaunchpadVote.NEEDS_FIXING, subject=state,
214 content=state + "\n" +217 content=content)
215 self.hide_jenkins_url(build_url) +
216 self.get_executed_test_runs(build_url))
217 review = MergeProposalReview(mp)218 review = MergeProposalReview(mp)
218 review.unlock()219 review.unlock()
219220
@@ -234,8 +235,17 @@
234 self.hide_jenkins_url(run['url']) + 'console')235 self.hide_jenkins_url(run['url']) + 'console')
235 return ret236 return ret
236237
237 def format_message_for_mp_update(self, build_url, message=None):238 def format_message_for_mp_update(self, build_url, message=None,
238 formatted_message = '{message}{build_url}{executed_test_runs}'239 include_rebuild_link=True):
240 formatted_message = dedent('''\
241 {message}{build_url}{executed_test_runs}
242 ''')
243 if include_rebuild_link:
244 formatted_message = formatted_message + dedent('''\
245
246 Click here to trigger a rebuild:
247 {build_url}/rebuild/?
248 ''')
239 if not message:249 if not message:
240 message = ''250 message = ''
241 if not build_url:251 if not build_url:
242252
=== modified file 'tests/test_launchpadTrigger.py'
--- tests/test_launchpadTrigger.py 2012-10-05 07:26:19 +0000
+++ tests/test_launchpadTrigger.py 2012-11-20 12:07:24 +0000
@@ -256,22 +256,36 @@
256 mp.web_link = 'http://mp'256 mp.web_link = 'http://mp'
257 self.launchpadTrigger.approve_mp(mp, '1', 'http://url')257 self.launchpadTrigger.approve_mp(mp, '1', 'http://url')
258 subject = 'PASSED: Continuous integration, rev:1'258 subject = 'PASSED: Continuous integration, rev:1'
259 content = dedent('''\
260 {subject}
261 http://url
262
263 Click here to trigger a rebuild:
264 http://url/rebuild/?
265 ''').format(subject=subject)
259 mp.createComment.assert_called_once_with(266 mp.createComment.assert_called_once_with(
260 review_type=LAUNCHPAD_REVIEW_TYPE,267 review_type=LAUNCHPAD_REVIEW_TYPE,
261 vote=launchpad.LaunchpadVote.APPROVE,268 vote=launchpad.LaunchpadVote.APPROVE,
262 subject=subject,269 subject=subject,
263 content=subject + "\nhttp://url")270 content=content)
264271
265 def test_disapprove_mp(self):272 def test_disapprove_mp(self):
266 mp = MagicMock()273 mp = MagicMock()
267 mp.web_link = 'http://mp'274 mp.web_link = 'http://mp'
268 self.launchpadTrigger.disapprove_mp(mp, '1', 'http://url')275 self.launchpadTrigger.disapprove_mp(mp, '1', 'http://url')
269 subject = 'FAILED: Continuous integration, rev:1'276 subject = 'FAILED: Continuous integration, rev:1'
277 content = dedent('''\
278 {subject}
279 http://url
280
281 Click here to trigger a rebuild:
282 http://url/rebuild/?
283 ''').format(subject=subject)
270 mp.createComment.assert_called_once_with(284 mp.createComment.assert_called_once_with(
271 review_type=LAUNCHPAD_REVIEW_TYPE,285 review_type=LAUNCHPAD_REVIEW_TYPE,
272 vote=launchpad.LaunchpadVote.NEEDS_FIXING,286 vote=launchpad.LaunchpadVote.NEEDS_FIXING,
273 subject=subject,287 subject=subject,
274 content=subject + "\nhttp://url")288 content=content)
275289
276290
277class TestLaunchpadTrigger(unittest.TestCase):291class TestLaunchpadTrigger(unittest.TestCase):
@@ -551,7 +565,11 @@
551 http://jenkins/34565 http://jenkins/34
552 Executed test runs:566 Executed test runs:
553 Passed: http://url/console567 Passed: http://url/console
554 Passed: http://url/console""")568 Passed: http://url/console
569
570 Click here to trigger a rebuild:
571 http://jenkins/34/rebuild/?
572 """)
555 actual = self.launchpadTrigger.format_message_for_mp_update(573 actual = self.launchpadTrigger.format_message_for_mp_update(
556 'http://jenkins/34',574 'http://jenkins/34',
557 "mymessage\n")575 "mymessage\n")
@@ -562,7 +580,11 @@
562 http://jenkins/34580 http://jenkins/34
563 Executed test runs:581 Executed test runs:
564 Passed: http://url/console582 Passed: http://url/console
565 Passed: http://url/console""")583 Passed: http://url/console
584
585 Click here to trigger a rebuild:
586 http://jenkins/34/rebuild/?
587 """)
566588
567 actual = self.launchpadTrigger.format_message_for_mp_update(589 actual = self.launchpadTrigger.format_message_for_mp_update(
568 'http://jenkins/34')590 'http://jenkins/34')

Subscribers

People subscribed via source and target branches

to all changes: