Jenkins email-ext, сценарий предварительной отправки: Как заменить строку Jira Issue непосредственно ссылкой на проблему?

Вопрос о возможности сценария предварительной отправки email-ext: На данный момент это "содержимое по умолчанию" уведомления по электронной почте:

<h3>$PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS</h3>
<p>
Check console output at $BUILD_URL/console to view the results.
</p>
...
<hr/>
<b>Changes since last build</b><br/>
<div style="padding-left: 15px; padding-bottom: 15px;">
    ${CHANGES,format="<div><b>%a</b></div><div style=\"padding-left:30px;\"> &#8212; &#8220;<em>%m</em>&#8221;</div><br/>"}
</div>

Это будет включать сообщения о фиксации в полученном электронном письме... и, поскольку мы даем идентификатор проблемы Jira при каждой фиксации, было бы неплохо заменить идентификатор проблемы Jira, например, TESTPROJECT-1234, ссылкой на него.

Может ли кто-нибудь помочь мне добиться такого поведения? Лучший способ сделать это - использовать регулярные выражения, верно? лайк

    (TESTPROJECT-[1-9][0-9]*)

и заменить его на

    <a href="http://jira.server.com/browse/$1">$1</a>

Но на данный момент у меня нет клея, как использовать Groovy и сценарий предварительной отправки, чтобы сделать это.:(

2 ответа

Вам даже не нужно регулярное выражение. Посмотрите этот пример сценария: https://github.com/jenkinsci/email-ext-plugin/blob/master/src/main/resources/hudson/plugins/emailext/templates/groovy-html.template который показывает, как выполнить цикл по вашей ревизии.

Если это все еще актуально, ниже приведен скрипт для заметки о выпуске со ссылками, которые вы искали

import hudson.model.*;
import hudson.util.*;

import java.util.regex.Pattern;
import java.util.regex.Matcher;


println build.getEnvVars()['JiraReleaseNotes']

def txt = build.getEnvVars()['JiraReleaseNotes']

def JiraReleaseNotes2 = txt.replaceAll(/# ([^]]*)/){ all, it ->
    "</br>$all"
}


def JiraReleaseNotes1 = JiraReleaseNotes2.replaceAll(/- \[([^]]*)]/){ all, it ->
    "</br><li><a href=\"http://server.com/browse/${it}\">${it}</a>"
}


println JiraReleaseNotes1

def thr = Thread.currentThread();
def currentBuild = thr.executable;

def newParamAction = new hudson.model.ParametersAction(new hudson.model.StringParameterValue("JiraReleaseNotes2", JiraReleaseNotes1 ));
currentBuild.addAction(newParamAction);
Другие вопросы по тегам