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
1=== modified file 'autoland.py'
2--- autoland.py 2012-11-15 16:24:05 +0000
3+++ autoland.py 2012-11-20 12:07:24 +0000
4@@ -56,8 +56,10 @@
5 def change_mp_status(launchpad, mp, reason, args, vote):
6 args[reason] = True
7 mp_state, message, subject = build_state(args)
8- message = launchpad.format_message_for_mp_update(args['build_job_url'],
9- message)
10+ message = launchpad.format_message_for_mp_update(
11+ args['build_job_url'],
12+ message,
13+ include_rebuild_link=False)
14 launchpad.change_mp_status(mp, mp_state, message, subject,
15 args['revision'], vote)
16
17
18=== modified file 'launchpad.py'
19--- launchpad.py 2012-11-06 12:45:09 +0000
20+++ launchpad.py 2012-11-20 12:07:24 +0000
21@@ -11,6 +11,7 @@
22 from xml.dom.minidom import parseString
23 import re
24 from jsonjenkins import JSONJenkins
25+from textwrap import dedent
26
27
28 class LaunchpadAgent():
29@@ -198,22 +199,22 @@
30 def approve_mp(self, mp, revision, build_url):
31 state = 'PASSED: Continuous integration, rev:' + str(revision)
32 logger.debug(state)
33+ content = self.format_message_for_mp_update(build_url,
34+ state + "\n")
35 mp.createComment(review_type=LAUNCHPAD_REVIEW_TYPE,
36 vote=LaunchpadVote.APPROVE, subject=state,
37- content=state + "\n" +
38- self.hide_jenkins_url(build_url) +
39- self.get_executed_test_runs(build_url))
40+ content=content)
41 review = MergeProposalReview(mp)
42 review.unlock()
43
44 def disapprove_mp(self, mp, revision, build_url):
45 state = 'FAILED: Continuous integration, rev:' + str(revision)
46 logger.debug(state)
47+ content = self.format_message_for_mp_update(build_url,
48+ state + "\n")
49 mp.createComment(review_type=LAUNCHPAD_REVIEW_TYPE,
50 vote=LaunchpadVote.NEEDS_FIXING, subject=state,
51- content=state + "\n" +
52- self.hide_jenkins_url(build_url) +
53- self.get_executed_test_runs(build_url))
54+ content=content)
55 review = MergeProposalReview(mp)
56 review.unlock()
57
58@@ -234,8 +235,17 @@
59 self.hide_jenkins_url(run['url']) + 'console')
60 return ret
61
62- def format_message_for_mp_update(self, build_url, message=None):
63- formatted_message = '{message}{build_url}{executed_test_runs}'
64+ def format_message_for_mp_update(self, build_url, message=None,
65+ include_rebuild_link=True):
66+ formatted_message = dedent('''\
67+ {message}{build_url}{executed_test_runs}
68+ ''')
69+ if include_rebuild_link:
70+ formatted_message = formatted_message + dedent('''\
71+
72+ Click here to trigger a rebuild:
73+ {build_url}/rebuild/?
74+ ''')
75 if not message:
76 message = ''
77 if not build_url:
78
79=== modified file 'tests/test_launchpadTrigger.py'
80--- tests/test_launchpadTrigger.py 2012-10-05 07:26:19 +0000
81+++ tests/test_launchpadTrigger.py 2012-11-20 12:07:24 +0000
82@@ -256,22 +256,36 @@
83 mp.web_link = 'http://mp'
84 self.launchpadTrigger.approve_mp(mp, '1', 'http://url')
85 subject = 'PASSED: Continuous integration, rev:1'
86+ content = dedent('''\
87+ {subject}
88+ http://url
89+
90+ Click here to trigger a rebuild:
91+ http://url/rebuild/?
92+ ''').format(subject=subject)
93 mp.createComment.assert_called_once_with(
94 review_type=LAUNCHPAD_REVIEW_TYPE,
95 vote=launchpad.LaunchpadVote.APPROVE,
96 subject=subject,
97- content=subject + "\nhttp://url")
98+ content=content)
99
100 def test_disapprove_mp(self):
101 mp = MagicMock()
102 mp.web_link = 'http://mp'
103 self.launchpadTrigger.disapprove_mp(mp, '1', 'http://url')
104 subject = 'FAILED: Continuous integration, rev:1'
105+ content = dedent('''\
106+ {subject}
107+ http://url
108+
109+ Click here to trigger a rebuild:
110+ http://url/rebuild/?
111+ ''').format(subject=subject)
112 mp.createComment.assert_called_once_with(
113 review_type=LAUNCHPAD_REVIEW_TYPE,
114 vote=launchpad.LaunchpadVote.NEEDS_FIXING,
115 subject=subject,
116- content=subject + "\nhttp://url")
117+ content=content)
118
119
120 class TestLaunchpadTrigger(unittest.TestCase):
121@@ -551,7 +565,11 @@
122 http://jenkins/34
123 Executed test runs:
124 Passed: http://url/console
125- Passed: http://url/console""")
126+ Passed: http://url/console
127+
128+ Click here to trigger a rebuild:
129+ http://jenkins/34/rebuild/?
130+ """)
131 actual = self.launchpadTrigger.format_message_for_mp_update(
132 'http://jenkins/34',
133 "mymessage\n")
134@@ -562,7 +580,11 @@
135 http://jenkins/34
136 Executed test runs:
137 Passed: http://url/console
138- Passed: http://url/console""")
139+ Passed: http://url/console
140+
141+ Click here to trigger a rebuild:
142+ http://jenkins/34/rebuild/?
143+ """)
144
145 actual = self.launchpadTrigger.format_message_for_mp_update(
146 'http://jenkins/34')

Subscribers

People subscribed via source and target branches

to all changes: