简体   繁体   中英

Send email notification from Jenkins

I want to send email notification when any job gets done. Please let me know how can we propagate.

You can configure Jenkins to send email when a job finishes either by using a plugin or not.

Built-in

First you have to configure your mail server settings by clicking on Manage Jenkins > Configure System and find the E-mail Notification section near the bottom of the page. Optionally also configure System Admin e-mail address in the Jenkins Location section.

Then for each job got to its configuration and Add post-build action , select E-mail Notification and configure as needed.

Plugin

The issue with default jenkins email mechanism is that it has very limited customization.

The alternate approach is to use the Email-Ext plugin , a powerful email notification mechanism. You can define some global triggers but you can also customize the settings for each job. Sending emails for success, failure or any other build status is supported.

  1. Go to : manage jenkins --> manage plugins --> 'available' tab --> select 'email extension plugin' --> click on button 'install without restart'

  2. manage jenkins --> configure system --> enter details in 'email notification'

Fill up the details as given below and save it:

在此处输入图片说明

  1. In the configuration of project/job , tick on the 'email notification' ---> enter the details ---> save it ---> build the job/project

有一个Jenkins email-ext插件可以添加触发器和收件人。

This answer is for sending mail using python script & outlook through Jenkins.

You need to have PsExec.exe for this. This runs the applications remotely.

create a freestyle project & in that run following dos shell command:

path\\to\\psexec.exe -u username -p password -i 1 cmd -accepteula /c python path\\to\\SendMail.py

Username & password is for the windows user account where outlook runs. path\\to\\SendMail.py is the location of the python script. SendMail.py kinda looks like this:

import win32com.client as win32
outlook=win32.Dispatch('outlook.application')
mail=outlook.CreateItem(0)
mail.To='abc@xyz.com'
mail.Subject="Test Mail"
mail.HTMLBody="Hiii, This is just a test mail."
mail.Send()

Here I'm using wind32com for executing outlook. The mail will be sent using the default account logged in outlook.

You can trigger to build this project everytime after a job completes.

Hope this is of any help to anyone :)

All the above answers are about plug-in and its usage but not how to use it in pipeline execution. Assuming smtp server is configured in jenkins and https://plugins.jenkins.io/email-ext/ plug-in is installed , we can write or use the plug-in ij the below format.

def csproj_path = 'dotnetcore_sample.csproj'

pipeline {
    agent{
        node {
            label 'dotnet-31' 
        }
    }

    stages {
        stage ('build locally'){
            steps{
                sh "dotnet build ${csproj_path}"
            }
        }
         stage ('Prompt check'){
            steps {
            mail to: 'bruce.wayne@gmail.com',
                 cc : 'clark.kent@gamil.com'
                subject: "INPUT: Build ${env.JOB_NAME}", 
                body: "Awaiting for your input ${env.JOB_NAME} build no: ${env.BUILD_NUMBER} .Click below to promote to production\n${env.JENKINS_URL}job/${env.JOB_NAME}\n\nView the log at:\n ${env.BUILD_URL}\n\nBlue Ocean:\n${env.RUN_DISPLAY_URL}"
                timeout(time: 60, unit: 'MINUTES'){
                    input message: "Promote to Production?", ok: "Promote"
                }
            }
        }
        
    }
    
    post {
        failure {
              mail to: 'mymail@gmail.com',
                 cc : 'ccedpeople@gamil.com'
                subject: "FAILED: Build ${env.JOB_NAME}", 
                body: "Build failed ${env.JOB_NAME} build no: ${env.BUILD_NUMBER}.\n\nView the log at:\n ${env.BUILD_URL}\n\nBlue Ocean:\n${env.RUN_DISPLAY_URL}"
        }
    
    success{
            mail to: 'mymail@gmail.com',
                 cc : 'ccedpeople@gamil.com'
                subject: "SUCCESSFUL: Build ${env.JOB_NAME}", 
                body: "Build Successful ${env.JOB_NAME} build no: ${env.BUILD_NUMBER}\n\nView the log at:\n ${env.BUILD_URL}\n\nBlue Ocean:\n${env.RUN_DISPLAY_URL}"
        }
        
        aborted{
            mail to: 'mymail@gmail.com',
                 cc : 'ccedpeople@gamil.com'
                subject: "ABORTED: Build ${env.JOB_NAME}", 
                body: "Build was aborted ${env.JOB_NAME} build no: ${env.BUILD_NUMBER}\n\nView the log at:\n ${env.BUILD_URL}\n\nBlue Ocean:\n${env.RUN_DISPLAY_URL}"
        }
    }
}

The above declarative pipeline consists of below features

  1. Send email for the respective user to promote the build to next level.
  2. Email when build is successful.
  3. Email when build is failed and also when it is aborted with link to the logs.
  1. launch Jenkins.
  2. access Manage Jenkins link from the main page.

  3. go to the end of the page and fill Email notification details : 在此处输入图片说明

  4. Click on Test notification to verify it is sending an email.

  5. Please see the email sent from Jenkins. 在此处输入图片说明

在此处输入图片说明

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM