Send email notification from Jenkins

前端 未结 6 699
花落未央
花落未央 2021-01-01 14:30

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

相关标签:
6条回答
  • 2021-01-01 14:50

    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.

    0 讨论(0)
  • 2021-01-01 14:58
    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.

    0 讨论(0)
  • 2021-01-01 14:59

    There's a Jenkins email-ext plugin that adds triggers and recipients.

    0 讨论(0)
  • 2021-01-01 15:02
    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
    0 讨论(0)
  • 2021-01-01 15:04

    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: 'mymail@gmail.com',
                     cc : 'ccedpeople@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.
    0 讨论(0)
  • 2021-01-01 15:07

    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 :)

    0 讨论(0)
提交回复
热议问题