I mean for you to change the Subject field in the email-ext configuration
to have something like ${SCRIPT, script='get-commit-info.groovy'}, then you
would have a groovy script that grabbed the info and returned it as a
string. Email-ext would then take care of putting the correct text in. You
don't need to do it via a pre-send script.

On Wed, Oct 14, 2015 at 12:31 PM Philippe Payant <[email protected]>
wrote:

> Your suggestion launched me on a track that worked.  But I got it all
> wrong because I did not understand all I could do with a groovy script.
>
> I upgraded my build script (Python based and commited in the sources) to
> use SVN_URL & SVN_REVISION to pull the commit log from Subversion.  The
> build script then parses the commit log to find the bug number.  The bug
> number is printed to stdout and it ends up in the Jenkins build log.
>
> Then I wrote a pre-send groovy script for email-ext to grep the build log
> for the build number.  Once I have the build number, the email subject is
> updated.  Here is my script:
>
> --snip--
> import java.util.regex.Pattern;
> import java.util.regex.Matcher;
> try {
>   log = build.getLog()
>   def pattern =
> Pattern.compile(/7928DEC7-17B5-40a1-B094-282AE167178F\s+(\S+)\s+(.*)/)
>   def matcher = pattern.matcher(log)
>   def found = matcher.find()
>   if ( found ) {
>     def job = build.getParent().name
>     def number = matcher.group(1)
>     def summary = matcher.group(2)
>     def subject = summary
>     if ( number != 'N/A' ) {
>       subject = "${summary} (bug ${number})"
>     }
>     msg.setSubject("[Build ${job}] ${subject}")
>   }
> } catch(e) {
>   msg.setContent(e.toString(),'text/plain')
> }
> --end snip--
>
> For people who are new to this, some pseudo-code and explanations:
>
> The 'build' and 'msg' objects are prepopulated when the script is
> launched.  We get the log from 'build'.  Then we use a
> java.util.regex.Matcher to locate the build number in the log text.
> Finally, the 'msg' object (a plain Java MimeMessage object) is modified
> with a new subject.
>
> This is crazy.  Now my build script (commited along the sources) is
> performing a task it should not care about: parsing a SVN commit.  The
> better solution would be to have the pre-send groovy script do all that.
> It has access to SVN_URL and SVN_REVISION.  My preferred language for my
> build system is Python, so I would probably shell out to an external Python
> script to parse the commit and contact Bugzilla for the summary.
>
> I got some help from these:
>
> https://wiki.jenkins-ci.org/display/JENKINS/Email-ext+plugin#Email-extplugin-PresendScript
>
> https://www.cloudbees.com/jenkins/juc-2015/presentations/JUC-2015-USEast-Groovy-With-Jenkins-McCollum.pdf
> https://wiki.jenkins-ci.org/display/JENKINS/Groovy+Postbuild+Plugin
> http://www.groovy-lang.org/single-page-documentation.html
> http://javadoc.jenkins-ci.org/
>
> On Tuesday, October 13, 2015 at 11:07:55 AM UTC-4, slide wrote:
>
>> Are you using email-ext or Mailer? If using email-ext, you could use a
>> SCRIPT token and have a groovy script that grabs anything you want from the
>> build.
>>
>> On Tue, Oct 13, 2015 at 7:55 AM Philippe Payant <[email protected]>
>> wrote:
>>
> Given that a Subversion comment  contains a Bugzilla bug number, for
>>> example:
>>>
>>> Fix Hoopla bug in the "easy" mode.  Bug 9413
>>>
>>> I would like the "build succesful" email to be something like:
>>>
>>> "MyProduct: build successful - bug 9413"
>>>
>>> For bonus points, I would actually like the subject to contain the
>>> Bugzilla summary of bug 9413:
>>>
>>> "MyProduct: build successful - bug 'Hoopla display is wrong in easy
>>> mode' "
>>>
>>>
>>> -- Philippe
>>>
>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "Jenkins Users" group.
>>>
>> To unsubscribe from this group and stop receiving emails from it, send an
>>> email to [email protected].
>>
>>
>>> To view this discussion on the web visit
>>> https://groups.google.com/d/msgid/jenkinsci-users/6aad9b4a-de29-4d0a-9879-6136dd055302%40googlegroups.com
>>> <https://groups.google.com/d/msgid/jenkinsci-users/6aad9b4a-de29-4d0a-9879-6136dd055302%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>> --
> You received this message because you are subscribed to the Google Groups
> "Jenkins Users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/jenkinsci-users/c62636ec-0d9d-4b65-9bf5-42291eb251cb%40googlegroups.com
> <https://groups.google.com/d/msgid/jenkinsci-users/c62636ec-0d9d-4b65-9bf5-42291eb251cb%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Jenkins Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jenkinsci-users/CAPiUgVfOwg66R73ob%2B%3DSpoV%2B2VX5EvtG5OjFbg9V7TGE28iyuA%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to