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;\"> — “<em>%m</em>”</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);