I am so close now!  

Here is my problem.  My script (now a file in email-templates) starts with:

def env = build.getEnvironment(listener)

I placed this in the Default Subject of my project:

${SCRIPT, script="subject.groovy"}

The email I get is a Groovy error message:

Error in script or template: groovy.lang.MissingPropertyException: No such 
property: listener for class: Script1

Weird, the URL for the bootstrap variables you included clearly shows that 
'listener' should be there. What's up?

On Thursday, October 15, 2015 at 5:45:28 AM UTC-4, slide wrote:
>
> See comments inline
>
>
> On Wed, Oct 14, 2015 at 1:08 PM Philippe Payant <[email protected] 
> <javascript:>> wrote:
>
>> Yes, I see this is another alternative, and it is even simpler than a 
>> pre-send script.  I would like to do that.
>>
>> Can you clarify some details for me?
>>
>> 1. Seems obvious from the doc that get-commit-info.groovy can/should be 
>> placed in JENKINS_HOME/email-templates right?
>>
>
> Yes, this is correct. You can also install the config file provider plugin 
> and put the script in there, then you would do 'managed:name of script' 
> instead of the filename.
>
>  
>
>> 2. What are the 'bootstrap' variables (the ones like 'build' and 'msg' 
>> for pre-send scripts and 'manager' for groovy post-build script) ?
>>
>
> You can see the list here: 
> https://github.com/jenkinsci/email-ext-plugin/blob/master/src/main/java/hudson/plugins/emailext/plugins/content/ScriptContent.java#L118-L122
>  
>
>> 3. How is the result of that script to be returned?  The help for this 
>> says "only the last value in the script will be used in the expansion".  
>> What does that mean?
>>
>
> This means that the result of the last line in the script is what is used 
> to replace the token. ${SCRIPT, script='foo.groovy'} would be replaced by 
> the result of the last line of foo.groovy.
>  
>
>>
>> I will google for an example.
>>
>> On Wednesday, October 14, 2015 at 3:56:33 PM UTC-4, slide wrote:
>>
>>> 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] <javascript:>.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/jenkinsci-users/7f063452-9027-41c5-b9ee-53f94429d465%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/jenkinsci-users/7f063452-9027-41c5-b9ee-53f94429d465%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/36ece3dc-404c-4954-8a20-b3401990ad65%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to