繁体   English   中英

从 Jenkins 发送电子邮件通知

[英]Send email notification from Jenkins

我想在任何工作完成时发送电子邮件通知。 请让我知道我们如何传播。

您可以将 Jenkins 配置为在作业完成时发送电子邮件,无论是否使用插件。

内置

首先,您必须通过单击“ Manage Jenkins > Configure System来配置您的邮件服务器设置,然后在页面底部附近找到“ E-mail Notification部分。 也可以选择在Jenkins Location部分配置System Admin e-mail address

然后对于每个作业进行其配置并Add post-build action ,选择E-mail Notification并根据需要进行配置。

插入

默认 jenkins 电子邮件机制的问题在于它的自定义非常有限。

另一种方法是使用Email-Ext 插件,这是一种强大的电子邮件通知机制。 您可以定义一些全局触发器,但也可以自定义每个作业的设置。 支持发送成功、失败或任何其他构建状态的电子邮件。

  1. 转到:管理 jenkins --> 管理插件 --> “可用”选项卡 --> 选择“电子邮件扩展插件” --> 单击按钮“无需重启即可安装”

  2. 管理 jenkins --> 配置系统 --> 在“电子邮件通知”中输入详细信息

填写下面给出的详细信息并保存:

在此处输入图片说明

  1. 在项目/作业的配置中,勾选“电子邮件通知”---> 输入详细信息 ---> 保存 ---> 构建作业/项目

有一个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}"
        }
    }
}

上述声明性管道由以下功能组成

  1. 为相应的用户发送电子邮件以将构建提升到下一个级别。
  2. 构建成功时的电子邮件。
  3. 构建失败以及中止时的电子邮件,并带有指向日志的链接。
  1. 启动詹金斯。
  2. 从主页访问 Manage Jenkins 链接。

  3. 转到页面末尾并填写电子邮件通知详细信息: 在此处输入图片说明

  4. 单击测试通知以验证它是否正在发送电子邮件。

  5. 请参阅 Jenkins 发送的电子邮件。 在此处输入图片说明

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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