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.
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.
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.
access Manage Jenkins link from the main page.
go to the end of the page and fill Email notification details :
Click on Test notification to verify it is sending an email.
Please see the email sent from Jenkins.
There's a Jenkins email-ext plugin that adds triggers and recipients.
Go to : manage jenkins --> manage plugins --> 'available' tab --> select 'email extension plugin' --> click on button 'install without restart'
manage jenkins --> configure system --> enter details in 'email notification'
Fill up the details as given below and save it:
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
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 :)