I got Mailer to send success after failed.
I wish "mail" or "emailext" could support this as those allow to define the 
subject and body.

torsdag 23. juni 2016 10.58.51 UTC+2 skrev Sverre Moe følgende:
>
> Ok
> We went away from the Mailer because we wanted to minimize the content in 
> body.
>
> I tried with your example, but it did not send out email on success after 
> failed.
> } catch (caughtError) {
>     currentBuild.result = "FAILURE"
> } finally {
>    if (currentBuild.result != "ABORTED") {
>        final def RECIPIENTS = emailextrecipients([
>            [$class: 'DevelopersRecipientProvider'],
>            [$class: 'CulpritsRecipientProvider']
>        ])
>
>        step([$class: 'Mailer', notifyEveryUnstableBuild: true, 
> sendToIndividuals: true, recipients: RECIPIENTS])
>     }
>
>     /* Must re-throw exception to propagate error */
>     if (err) {
>         throw err
>     }
> }
>
>
> Using the following will send out emails on every SUCCESS, regardless of 
> previous build result.
> emailext body: CONTENT, subject: SUBJECT, replyTo: '[email protected]', 
> recipientProviders: [[$class: 'CulpritsRecipientProvider'], [$class: 
> 'DevelopersRecipientProvider']]
>
> I could use the following to send out email on every failed build, but 
> will not get sent when build is fixed.
> } catch(e) {
>     final def RECIPIENTS = emailextrecipients([
>         [$class: 'DevelopersRecipientProvider'],
>         [$class: 'CulpritsRecipientProvider']
>     ])
>     final def SUBJECT = "${env.JOB_NAME} ${env.BRANCH_NAME} - Build 
> #${env.BUILD_NUMBER} - FAILED!"
>     final def CONTENT = "Check console output at ${env.BUILD_URL} to view 
> the results."
>     if (RECIPIENTS != null && !RECIPIENTS.isEmpty()) {
>         mail to: RECIPIENTS, replyTo: "[email protected]", subject: 
> SUBJECT, body: CONTENT
>     } else {
>         mail to: "jenkins-admins", replyTo: "[email protected]", 
> subject: SUBJECT, body: CONTENT
>     }
>
>
>     /* Must re-throw exception to propagate error */
>     throw e
> }
>
>
>
> torsdag 23. juni 2016 10.07.31 UTC+2 skrev Craig Rodrigues følgende:
>>
>> Yes, step mailer sends mail on fixed builds, but currentBuild.result is 
>> null unless you
>> set it.  The step mailer depends on currentBuild.result.
>>
>> --
>> Craig
>>
>> On Thu, Jun 23, 2016 at 12:53 AM, Sverre Moe <[email protected]> wrote:
>>
>>> Same solutions I thought about, to put a try-catch surrounding all the 
>>> stages in the build.
>>> However I could not find anything in those examples how to send email on 
>>> fixed builds. Unless step Mailer does that for you. I use Email-ext because 
>>> I want to a minimalist email content.
>>>
>>> It should only send out email on FAILED and SUCCESS(if previously 
>>> FAILED). I could do something like this if I had access to 
>>> previousBuild.result
>>>
>>> It seems the pipeline sets the currentBuild.result to SUCCESS or FAILED 
>>> at the end. Unless setting the result in the script the value is always 
>>> null.
>>>
>>>
>>> torsdag 23. juni 2016 09.31.20 UTC+2 skrev Craig Rodrigues følgende:
>>>>
>>>> Mike Caspar added email notification to this example:
>>>>
>>>>
>>>> https://github.com/jenkinsci/pipeline-examples/blob/master/jenkinsfile-examples/nodejs-build-test-deploy-docker-notify/Jenkinsfile
>>>>
>>>> and my script does email notification similar to what you need
>>>>
>>>>
>>>> https://github.com/freebsd/freebsd-ci/blob/master/scripts/build/build-test.groovy#L233
>>>>
>>>> You need to set and check the currentBuild.result value, and do 
>>>> different things based on that.
>>>>
>>>> --
>>>> Craig
>>>>
>>>> On Thu, Jun 23, 2016 at 12:20 AM, Sverre Moe <[email protected]> 
>>>> wrote:
>>>>
>>>>> One benefit with sending email in pipeline script is better control of 
>>>>> which error in the pipeline deserves sending email and to whom.
>>>>>
>>>>> By adding a try-catch surrounding the code compile I send out email 
>>>>> when it fails. That case the developers get notified only for errors that 
>>>>> concern them.
>>>>> try {
>>>>>     preInstall()
>>>>>     compileAndBuild()
>>>>>     postInstall()
>>>>> } catch(e) {
>>>>>     final def RECIPIENTS = emailextrecipients([
>>>>>         [$class: 'DevelopersRecipientProvider'],
>>>>>         [$class: 'CulpritsRecipientProvider']
>>>>>     ])
>>>>>     final def SUBJECT = "${env.JOB_NAME} ${env.BRANCH_NAME} - Build 
>>>>> #${env.BUILD_NUMBER} - FAILED!"
>>>>>     final def CONTENT = "Check console output at ${env.BUILD_URL} to 
>>>>> view the results."
>>>>>     if (RECIPIENTS != null && !RECIPIENTS.isEmpty()) {
>>>>>         mail to: RECIPIENTS, replyTo: "[email protected]", subject: 
>>>>> SUBJECT, body: CONTENT
>>>>>     } else {
>>>>>         mail to: "jenkins-admin", replyTo: "[email protected]", 
>>>>> subject: SUBJECT, body: CONTENT
>>>>>     }
>>>>>     throw e
>>>>> }
>>>>> I need to re-throw the exception otherwise the pipeline continues.
>>>>>
>>>>> However I still want email to be sent out if there is an error 
>>>>> anywhere in the code. The Jenkins administrators should get an email if 
>>>>> the 
>>>>> build scripts fails and has nothing to do with the code. I cannot put a 
>>>>> try-catch everywhere in the code.
>>>>>
>>>>> Also how do I send out email on fixed builds? Do I have to do it 
>>>>> manually. Check the previous build, get the recipient list (culprits, 
>>>>> developers) from that build and send a fixed build email message.
>>>>>
>>>>> -- 
>>>>> 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/dbb8fc19-458f-4114-937c-b5136b792562%40googlegroups.com
>>>>>  
>>>>> <https://groups.google.com/d/msgid/jenkinsci-users/dbb8fc19-458f-4114-937c-b5136b792562%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/53eefd2c-8c7e-47d8-892c-9526009abf5e%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to