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] 
> <javascript:>> 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/8ad48142-993b-45b0-a95e-be2cac118fd6%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to