我想在任何工作完成时发送电子邮件通知。请让我知道我们如何传播。
6 回答
您可以将 Jenkins 配置为在作业完成时发送电子邮件,无论是否使用插件。
内置
首先,您必须通过单击Manage Jenkins > Configure System
并找到E-mail Notification
页面底部附近的部分来配置您的邮件服务器设置。System Admin e-mail address
还可以选择在该Jenkins Location
部分中进行配置。
然后对每个作业进行配置Add post-build action
,并根据需要进行选择E-mail Notification
和配置。
插入
默认 jenkins 电子邮件机制的问题在于它的自定义非常有限。
另一种方法是使用Email-Ext 插件,这是一种强大的电子邮件通知机制。您可以定义一些全局触发器,但也可以自定义每个作业的设置。支持发送成功、失败或任何其他构建状态的电子邮件。
有一个Jenkins email-ext插件可以添加触发器和收件人。
此答案适用于通过 Jenkins 使用 python 脚本和 Outlook 发送邮件。
为此,您需要拥有 PsExec.exe。这将远程运行应用程序。
创建一个自由式项目并在其中运行以下 dos shell 命令:
path\to\psexec.exe -u 用户名 -p 密码 -i 1 cmd -accepteula /c python path\to\SendMail.py
用户名和密码用于运行 Outlook 的 Windows 用户帐户。path\to\SendMail.py 是 python 脚本的位置。SendMail.py 看起来像这样:
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()
这里我使用wind32com 来执行outlook。邮件将使用登录到 Outlook 的默认帐户发送。
每次作业完成后,您都可以触发构建此项目。
希望这对任何人都有帮助:)
以上所有答案都是关于插件及其用法,而不是如何在管道执行中使用它。假设 jenkins 中配置了 smtp 服务器,并且安装了https://plugins.jenkins.io/email-ext/插件,我们可以编写或使用如下格式的插件 ij。
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}"
}
}
}
上述声明性管道包含以下功能
- 为相应的用户发送电子邮件以将构建提升到下一个级别。
- 构建成功时发送电子邮件。
- 构建失败以及通过日志链接中止时发送电子邮件。