使用jenkins构建并发送邮件

本文详细指导如何在Jenkins中配置SMTP以实现构建后自动发送邮件,包括系统全局配置、连接构建节点、创建Item并配置邮件通知,以及解决常见5355.7.3错误的过程。

目录

一、系统配置

二、连接构建节点

三、创建和配置Item

四、遇到的问题


一、系统配置

想要使用jenkins构建并发送邮件,首先需要进行全局配置。

1、进入jenkins概览界面->点击Manage Jenkins->点击Configure System进入配置界面;

2、配置Extended E-mail Notification;

◎ SMTP server 填写SMTP服务器;

◎ Default user E-mail suffix 填写默认的邮箱后缀;

◎ Use SMTP Authentication 选项勾选上;

◎ User Name/Password 填写邮箱地址及密码,第三章节第5步的Project From如果空白,默认邮件发送地址就是这个了;如果想设置多个邮件发送地址,可以点击下方的Add按钮,我这里就填了2个;

◎ SMTP port 我填写的是25,这个根据实际情况来;

◎ Charset 填写UTF-8即可;

再向下是配置默认邮件正文的地方,这一部分内容都可以按照实际需要来配置,以下是参考;

◎ Default Content Type 是默认邮件正文类型;

◎ Default Recipients 是默认收件人;

◎ Reply To List 是默认回复列表;

◎ Default Subject 是默认的邮件名称;

◎ Default Content 是默认的邮件正文;

Jenkins 中,构建完成后发送邮件是一个常见的需求,用于通知开发人员构建成功或失败。以下是 **详细配置方法**,包括使用 `Email Extension Plugin`(推荐)和基础邮件配置。 --- ### ✅ 方法一:使用 Email Extension Plugin(推荐) 这是最灵活、功能最强大的方式,支持 HTML 邮件、自定义内容、条件触发等。 #### 1. 安装插件 确保安装了以下插件: - **Email Extension Plugin** - **Email Extension Template Plugin**(可选,用于模板) 在 Jenkins → 管理 Jenkins → 插件管理 → 可选插件 中搜索安装。 #### 2. 配置 SMTP 服务器(全局设置) 进入: **Jenkins → 管理 Jenkins系统配置 → Extended E-mail Notification** 填写如下字段: | 字段 | 示例值 | 说明 | |------|--------|------| | SMTP server | `smtp.gmail.com` 或企业邮箱服务器 | 如使用 Gmail,需开启应用专用密码 | | Default user E-mail suffix | `@company.com` | 自动补全用户名的邮箱后缀 | | SMTP port | `587` | 常用端口:587(TLS),465(SSL) | | Use SSL | ✅ 勾选(如果端口是 465) | 否则使用 TLS | | Use TLS | ✅ 勾选(如果端口是 587) | 推荐启用 | | User Name | `your_email@gmail.com` | 发件人账号 | | Password | ******** | 应用专用密码(Gmail)或邮箱密码 | | Default Content Type | `HTML (text/html)` | 支持富文本格式 | | Default Recipients | `dev-team@company.com` | 默认收件人 | > ⚠️ 注意:如果是 Gmail,需要使用“应用专用密码”而不是登录密码。 #### 3. 在 Pipeline 中发送邮件 ```groovy pipeline { agent any stages { stage('Build') { steps { echo 'Building...' // 模拟构建过程 sh 'sleep 2' } } stage('Test') { steps { echo 'Testing...' // 这里可以运行单元测试 } } } post { success { emailext( subject: "✅ Build Successful: ${env.JOB_NAME} [${env.BUILD_NUMBER}]", body: '''<p>Congratulations, the build was successful!</p> <p>Check the details at: <a href="${BUILD_URL}">${BUILD_URL}</a></p> <p>Project: ${JOB_NAME}<br/> Build Number: ${BUILD_NUMBER}<br/> Date: ${TODAY}</p>''', recipientProviders: [[$class: 'DevelopersRecipientProvider']], mimeType: 'text/html', to: 'team@example.com' ) } failure { emailext( subject: "❌ Build Failed: ${env.JOB_NAME} [${env.BUILD_NUMBER}]", body: '''<p>Oops! The build has failed.</p> <p>Check the log at: <a href="${BUILD_URL}">${BUILD_URL}</a></p> <p><strong>Error:</strong> ${BUILD_LOG_REGEX, regex="ERROR: .*", maxMatches=10}</p>''', recipientProviders: [[$class: 'DevelopersRecipientProvider']], mimeType: 'text/html', to: 'team@example.com,lead@example.com' ) } always { emailext( subject: "📝 Build Completed: ${env.JOB_NAME} [${env.BUILD_NUMBER}]", body: 'This is a summary email sent regardless of build status.', to: 'qa-team@company.com' ) } } } ``` > **解释**: - `post { success/failure/always }`:根据构建结果触发不同动作。 - `emailext`:增强型邮件命令,支持 HTML、日志提取、变量替换。 - `${BUILD_LOG_REGEX}`:可以从构建日志中提取错误信息。 - `recipientProviders`:自动获取提交代码的开发者邮箱。 --- ### ✅ 方法二:使用基础邮件(不推荐,功能有限) 如果你只用了默认的 `Mailer` 插件(旧版 Jenkins 自带),可以在全局配置中设置 SMTP,在 pipeline 中使用 `mail` 步骤: ```groovy post { failure { mail( to: 'dev-team@company.com', subject: "Build Failed: ${env.JOB_NAME} [${env.BUILD_NUMBER}]", body: "The build failed. See ${env.BUILD_URL}" ) } } ``` > 缺点:不支持 HTML、无法读取日志、样式简陋。 --- ### ✅ 收件人动态获取方式(高级) 你可以通过以下 `recipientProviders` 自动获取相关人: ```groovy recipientProviders: [ [$class: 'DevelopersRecipientProvider'], // 提交者 [$class: 'RequesterRecipientProvider'] // 构建触发者 ] ``` 其他选项: - `CulpritsRecipientProvider`:上次修改导致失败的人 - `UpstreamComitterRecipientProvider`:上游项目提交者 --- ### ✅ 使用邮件模板(可选) 你可以创建共享模板,在系统配置中定义模板名称,然后引用: ```groovy emailext( subject: "Build Result: ${currentBuild.result}", body: '${DEFAULT_CONTENT}', // 使用默认模板 template: 'html', // 引用名为 'html' 的模板 to: '${DEFAULT_RECIPIENTS}' ) ``` ---
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值