159 lines
7.5 KiB
HTML
Executable File
159 lines
7.5 KiB
HTML
Executable File
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
|
<html>
|
|
<head>
|
|
<title>CruiseControl.NET : IssueUrlBuilder</title>
|
|
<link rel="stylesheet" href="styles/site.css" type="text/css" />
|
|
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
|
</head>
|
|
|
|
<body>
|
|
<table class="pagecontent" border="0" cellpadding="0" cellspacing="0" width="100%" bgcolor="#ffffff">
|
|
<tr>
|
|
<td valign="top" class="pagebody">
|
|
<div class="pageheader">
|
|
<span class="pagetitle">
|
|
CruiseControl.NET : IssueUrlBuilder
|
|
</span>
|
|
</div>
|
|
<div class="pagesubheading">
|
|
This page last changed on Sep 29, 2008 by <font color="#0050B2">williams</font>.
|
|
</div>
|
|
|
|
<p>This addition to the sourcecontrol provider allows easy linking with an issue tracking system like Jira, Gemini, Bugzilla, ...<br/>
|
|
The issueUrlBuilder will try to convert the comment (or parts from it) into an url pointing to the issue for this build.<br/>
|
|
These are the items that will have the comment transformed into an url linking to the issue :</p>
|
|
<ul>
|
|
<li>Rss publisher</li>
|
|
<li>Modification history page</li>
|
|
<li>Project Build Report</li>
|
|
</ul>
|
|
|
|
|
|
<h4><a name="IssueUrlBuilder-%26nbsp%3BConfiguration%3A"></a> Configuration :</h4>
|
|
|
|
<p>This must be placed inside the sourcecontrol block.
|
|
<br clear="all" /></p>
|
|
<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
|
|
<pre class="code-java"><issueUrlBuilder type=<span class="code-quote">"defaultIssueTracker"</span>>
|
|
<url>http:<span class="code-comment">//jira.<span class="code-keyword">public</span>.thoughtworks.org/browse/CCNET-{0}</url>
|
|
</span></issueUrlBuilder></pre>
|
|
</div></div>
|
|
<p>There are 3 types :</p>
|
|
<ul>
|
|
<li>defaultIssueTracker</li>
|
|
<li>regexIssueTracker</li>
|
|
<li>multiIssueTracker
|
|
<br clear="all" /></li>
|
|
</ul>
|
|
|
|
|
|
<h4><a name="IssueUrlBuilder-Types"></a>Types</h4>
|
|
|
|
|
|
<h5><a name="IssueUrlBuilder-defaultIssueTracker"></a>defaultIssueTracker</h5>
|
|
|
|
<p>For the defaultIssueTracker there is 1 element needed : url</p>
|
|
|
|
<p>It contains the url of the involved project, with the issue number as a parameter :{0}</p>
|
|
|
|
<p>Whenever a checkin is done, the following logic is applied :</p>
|
|
<ul>
|
|
<li>split the comment into a string array; separator is space</li>
|
|
<li>from the first part, take all the numeric parts, starting from the end of this part</li>
|
|
<li>paste this number into the parameter
|
|
<br clear="all" /></li>
|
|
</ul>
|
|
|
|
|
|
<p>ex.: with the mentioned configuration the following comments will be converted into <a href="http://jira.public.thoughtworks.org/browse/CCNET-1223">http://jira.public.thoughtworks.org/browse/CCNET-1223</a></p>
|
|
<ul>
|
|
<li>CCNET-1223: CCnet should foresee a way to transform the comments into hyperlinks for integration with issue tracking systems</li>
|
|
<li>CCNET-1223 CCnet should foresee a way to transform the comments into hyperlinks for integration with issue tracking systems</li>
|
|
<li>CCNET-1223</li>
|
|
<li>1223 </li>
|
|
</ul>
|
|
|
|
|
|
<p>Example :
|
|
<br clear="all" /></p>
|
|
<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
|
|
<pre class="code-java"><issueUrlBuilder type=<span class="code-quote">"defaultIssueTracker"</span>>
|
|
<url>http:<span class="code-comment">//jira.<span class="code-keyword">public</span>.thoughtworks.org/browse/CCNET-{0}</url>
|
|
</span></issueUrlBuilder></pre>
|
|
</div></div>
|
|
|
|
<h4><a name="IssueUrlBuilder-regexIssueTracker"></a>regexIssueTracker</h4>
|
|
|
|
<p>For the regexIssueTracker there are 2 elements needed : find and replace<br/>
|
|
This will use regular expressions to convert the comment into an url.<br/>
|
|
<em>find</em> is the string to be sought, and will be replaced by the string in <em>replace</em></p>
|
|
|
|
<p>Example :
|
|
<br clear="all" /></p>
|
|
<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
|
|
<pre class="code-java"><issueUrlBuilder type=<span class="code-quote">"regexIssueTracker"</span>>
|
|
<find>^.*(CCNET-\d*).*$</find>
|
|
<replace>http:<span class="code-comment">//jira.<span class="code-keyword">public</span>.thoughtworks.org/browse/$1</replace>
|
|
</span></issueUrlBuilder></pre>
|
|
</div></div>
|
|
<p>For the ones not familiar with regular expressions :</p>
|
|
|
|
<p> <em><ins>find</ins></em> statement :</p>
|
|
|
|
<p>Assert position at the beginning of the string <b>«^»</b><br/>
|
|
Match any single character that is not a line break character <b>«.</b>»*<br/>
|
|
Between zero and unlimited times, as many times as possible, giving back as needed (greedy) <b>«</b>»*<br/>
|
|
Match the regular expression below and capture its match into backreference number 1 <b>«(CCNET-\d</b>)»*<br/>
|
|
Match the characters "CCNET-" literally <b>«CCNET-»</b><br/>
|
|
Match a single digit 0..9 <b>«\d</b>»*<br/>
|
|
Between zero and unlimited times, as many times as possible, giving back as needed (greedy) <b>«</b>»*<br/>
|
|
Match any single character that is not a line break character <b>«.</b>»*<br/>
|
|
Between zero and unlimited times, as many times as possible, giving back as needed (greedy) <b>«</b>»*<br/>
|
|
Assert position at the end of the string (or before the line break at the end of the string, if any) <b>«$»</b></p>
|
|
|
|
<p><em><ins>replace</ins></em> statement:</p>
|
|
|
|
<p>replace with <a href="http://jira.public.thoughtworks.org/browse/backreference1">http://jira.public.thoughtworks.org/browse/backreference1</a>; <b>«$1»</b>
|
|
<br clear="all" /></p>
|
|
|
|
<h4><a name="IssueUrlBuilder-multiIssueTracker"></a>multiIssueTracker</h4>
|
|
|
|
<p>This issue tracker allows a combination of the other issuetrackers.<br/>
|
|
It has 1 element : <em>issueTrackers</em><br/>
|
|
This is an array of other issuetrackers.
|
|
<br clear="all" /></p>
|
|
|
|
<p>Example :
|
|
<br clear="all" /></p>
|
|
<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
|
|
<pre class="code-java"><issueUrlBuilder type=<span class="code-quote">"multiIssueTracker"</span>>
|
|
<issueTrackers>
|
|
<defaultIssueTracker>
|
|
<url>http:<span class="code-comment">//jira.<span class="code-keyword">public</span>.thoughtworks.org/browse/CCNET-{0}</url>
|
|
</span> </defaultIssueTracker>
|
|
<regexIssueTracker>
|
|
<find>^.*(CCNET-\d*).*$</find>
|
|
<replace>http:<span class="code-comment">//jira.<span class="code-keyword">public</span>.thoughtworks.org/browse/$1</replace>
|
|
</span> </regexIssueTracker>
|
|
</issueUrlBuilder></pre>
|
|
</div></div>
|
|
<p>This will first apply the default issueTracker on the comment, and afterwards the regexIssueTracker, overwriting a previous result.
|
|
<br clear="all" />
|
|
<br clear="all" />
|
|
<br clear="all" />
|
|
<br clear="all" /></p>
|
|
|
|
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<table border="0" cellpadding="0" cellspacing="0" width="100%">
|
|
<tr>
|
|
<td height="12" background="http://confluence.public.thoughtworks.org//images/border/border_bottom.gif"><img src="images/border/spacer.gif" width="1" height="1" border="0"/></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="center"><font color="grey">Document generated by Confluence on Mar 14, 2009 02:55</font></td>
|
|
</tr>
|
|
</table>
|
|
</body>
|
|
</html> |