二丫讲梵 二丫讲梵
首页
  • 最佳实践
  • 迎刃而解
  • Nginx
  • Php
  • Zabbix
  • AWS
  • Prometheus
  • Grafana
  • CentOS
  • Systemd
  • Docker
  • Rancher
  • Ansible
  • Ldap
  • Gitlab
  • GitHub
  • Etcd
  • Consul
  • RabbitMQ
  • Kafka
  • MySql
  • MongoDB
  • OpenVPN
  • KVM
  • VMware
  • Other
  • ELK
  • K8S
  • LLM
  • Nexus
  • Jenkins
  • 随写编年
  • 家人物语
  • 追忆青春
  • 父亲的朋友圈
  • 电影音乐
  • 效率工具
  • 博客相关
  • Shell
  • 前端实践
  • Vue学习笔记
  • Golang学习笔记
  • Golang编程技巧
  • 学习周刊
  • Obsidian插件周刊
关于
友链
  • 本站索引

    • 分类
    • 标签
    • 归档
  • 本站页面

    • 导航
    • 打赏
  • 我的工具

    • 备忘录清单 (opens new window)
    • json2go (opens new window)
    • gopher (opens new window)
    • 微信MD编辑 (opens new window)
    • 国内镜像 (opens new window)
    • 出口IP查询 (opens new window)
    • 代码高亮工具 (opens new window)
  • 外站页面

    • 开往 (opens new window)
    • ldapdoc (opens new window)
    • HowToStartOpenSource (opens new window)
    • vdoing-template (opens new window)
GitHub (opens new window)

二丫讲梵

行者常至,为者常成
首页
  • 最佳实践
  • 迎刃而解
  • Nginx
  • Php
  • Zabbix
  • AWS
  • Prometheus
  • Grafana
  • CentOS
  • Systemd
  • Docker
  • Rancher
  • Ansible
  • Ldap
  • Gitlab
  • GitHub
  • Etcd
  • Consul
  • RabbitMQ
  • Kafka
  • MySql
  • MongoDB
  • OpenVPN
  • KVM
  • VMware
  • Other
  • ELK
  • K8S
  • LLM
  • Nexus
  • Jenkins
  • 随写编年
  • 家人物语
  • 追忆青春
  • 父亲的朋友圈
  • 电影音乐
  • 效率工具
  • 博客相关
  • Shell
  • 前端实践
  • Vue学习笔记
  • Golang学习笔记
  • Golang编程技巧
  • 学习周刊
  • Obsidian插件周刊
关于
友链
  • 本站索引

    • 分类
    • 标签
    • 归档
  • 本站页面

    • 导航
    • 打赏
  • 我的工具

    • 备忘录清单 (opens new window)
    • json2go (opens new window)
    • gopher (opens new window)
    • 微信MD编辑 (opens new window)
    • 国内镜像 (opens new window)
    • 出口IP查询 (opens new window)
    • 代码高亮工具 (opens new window)
  • 外站页面

    • 开往 (opens new window)
    • ldapdoc (opens new window)
    • HowToStartOpenSource (opens new window)
    • vdoing-template (opens new window)
GitHub (opens new window)
  • Nexus系列文章

  • Jenkins系列文章

    • Jenkins入门系列笔记汇总整理
    • 前言与介绍
    • Jenkins初始部署与简单配置
    • Jenkins各配置选项介绍
    • Jenkins中一个项目的构建
    • Jenkins配置项目构建的钉钉通知
    • Jenkins忘记管理员密码怎么办
    • Jenkins与gitlab的交互探微
    • Jenkins根目录详解
    • Jenkins插件之显示构建时间
    • Jenkins插件之批量修改配置
    • Jenkins配置简单构建邮件推送
    • Jenkins复杂邮件推送配置详解
    • Jenkins配置复杂构建邮件推送
      • 1,首先是绝对的,全局配置,如果不配置此项,放心,绝对有报错等着你。
      • 2,进入真正的主配置。
      • 3,ok,主配置成功之后,去其中一个项目中进行配置。
      • 4,批量改配置
      • 2018 年 5 月 10 号补充:
    • Jenkins构建安卓项目之前的一些唠叨
    • Jenkins构建安卓项目配置
    • Jenkins与Gitlab分支的交互
    • Jenkins构建nodejs项目
    • 使用docker部署Jenkins及初始配置
    • 配置gitlab提交代码Jenkins自动构建
    • Jenkins回滚方案探微
    • Jenkins角色控制(小黄锁)探微
    • Jenkins构建的应用配置问题解决探微
    • Jenkins构建中tag的应用
    • Jenkins插件之Ansicolor(神器)
    • 最基础核心的Jenkins功能部署一个java应用
    • Jenkins+sonar构建代码扫描
    • Jenkins+docker+gitlab将应用部署到docker
    • Jenkins参数化构建犀利插件Active-Choices-Plugin
    • 记一次将代码中参数外显到构建历史中的操作
    • Jenkins升级与迁移的经验分享
    • pipeline笔记之从一个简单的项目构建开始
    • Jenkinsfile声明式语法详解
    • 自动构建的原始配置以及pipeline中的用法
    • 多分支构建的实践与思考
    • 使用Jenkinsfile类前端项目的部署与回滚
    • 如何在Jenkinsfile中定义一个全局的时间戳变量
    • Jenkins中自由风格回滚方案的最佳实践
    • Jenkins中pipeline风格回滚方案的最佳实践
    • pipeline结合ansible剧本进行批量的部署与回滚配置
    • 最近配置安卓iOS打包本地化流程中一些值得记录的内容
    • pipeline中如何在environment环节声明一个含有通配符的变量
    • git-Parameter插件在pipeline共享库中的实践详解
    • jenkins作为ci检测代码是否合并的实践
    • 将Jenkins共享库的Jenkinsfile放到ci静态检测的实践
    • Jenkins的pipeline实践之GitSCM参数配置项详解
    • Jenkins中pipeline对接CMDB接口获取主机列表的发布实践
    • Jenkins有任务无法kill提示即将关闭
    • Jenkins基于Share Library共享库的最佳实践探索
    • Jenkins结合MySql Database插件的平台化实践思路
    • Jenkins-Groovy中三元表达式的用法
    • Jenkins-Groovy中Switch的高阶用法
    • Jenkins-pipeline之利用activity choice插件对接查询MySQL数据实现动态参数化的功能
    • CentOS通过yum快速安装Jenkins
    • Jenkins-pipeline语法之错误处理详解(文末有干货)
    • Jenkins常用插件汇总以及简单介绍
    • Jenkins所遇报错汇总及解决
    • Jenkins管理维护运维规范
  • ELK笔记

  • Kubernetes笔记

  • LLM专题

  • 系列专题
  • Jenkins系列文章
二丫讲梵
2018-05-03
目录

Jenkins配置复杂构建邮件推送

文章发布较早,内容可能过时,阅读注意甄别。

配置功能完善的邮件功能,其实也非常简单,当你把上一个配置文件详解看完了之后。

废话不多说,直奔主题。

首先此功能有赖于第一个简单的邮箱配置项。

就是这张图片:

image

因为经过我的测试,如果不配置刚刚这条,是无法发邮件成功的。

# 1,首先是绝对的,全局配置,如果不配置此项,放心,绝对有报错等着你。

image

上边前缀是可以自定义的,这样别人接收到的邮件,就会看到以运维安全部的名义发出的。

如下图:

image

# 2,进入真正的主配置。

image

其中邮件模板是这样的:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次构建日志</title>
  </head>
  <body
    leftmargin="8"
    marginwidth="0"
    topmargin="8"
    marginheight="4"
    offset="0"
  >
    <head>
      <style type="text/css">
        BODY {
          background-image: URL(https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1525328482473&di=79b0b72f1551478d2103cdf9116950cb&imgtype=0&src=http%3A%2F%2Fattach.bbs.miui.com%2Fforum%2F201602%2F15%2F214501jhqfq55gzyupzz2f.png);
          background-position: center;
          background-repeat: no-repeat;
          background-attachment: fixed;
          background-size: 100% 100%;
        }
      </style>
    </head>
    <table
      width="95%"
      cellpadding="0"
      cellspacing="0"
      style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif"
    >
      <tr>
        <td>(本邮件是Jenkins构建项目完成之后自动下发的,请勿回复!)</td>
      </tr>
      <tr>
        <td>
          <h2>
            <font color="#20B2AA">构建结果 - ${BUILD_STATUS}</font>
          </h2>
        </td>
      </tr>
      <tr>
        <td>
          <br />
          <b><font color="#0B610B">构建信息</font></b>
          <hr size="2" width="100%" align="center" />
        </td>
      </tr>
      <tr>
        <td>
          <ul>
            <li>项目名称&nbsp;:&nbsp;${PROJECT_NAME}</li>
            <li>构建编号&nbsp;:&nbsp;第${BUILD_NUMBER}次构建</li>
            <li>Git&nbsp;版本:&nbsp;${branch}</li>
            <li>发布者:&nbsp;${CAUSE}</li>
            <li>
              构建日志:&nbsp;<a href="${BUILD_URL}console"
                >${BUILD_URL}console</a
              >
            </li>
            <li>
              构建&nbsp;&nbsp;Url&nbsp;:&nbsp;<a href="${BUILD_URL}"
                >${BUILD_URL}</a
              >
            </li>
            <li>
              工作目录&nbsp;:&nbsp;<a href="${PROJECT_URL}ws"
                >${PROJECT_URL}ws</a
              >
            </li>
            <li>
              项目&nbsp;&nbsp;Url&nbsp;:&nbsp;<a href="${PROJECT_URL}"
                >${PROJECT_URL}</a
              >
            </li>
          </ul>
        </td>
      </tr>
      <tr>
        <td>
          <b
            ><font color="#0B610B"
              >Changes Since Last Successful Build:</font
            ></b
          >
          <hr size="2" width="100%" align="center" />
        </td>
      </tr>
      <tr>
        <td>
          <ul>
            <li>
              历史变更记录 :
              <a href="${PROJECT_URL}changes">${PROJECT_URL}changes</a>
            </li>
          </ul>
          ${CHANGES_SINCE_LAST_SUCCESS,reverse=true, format="Changes for Build
          #%n:<br />%c<br />",showPaths=true,changesFormat="
          <pre>[%a]<br />%m</pre>
          ",pathFormat="&nbsp;&nbsp;&nbsp;&nbsp;%p"}
        </td>
      </tr>
      <tr>
        <td>
          <b>Failed Test Results</b>
          <hr size="2" width="100%" align="center" />
        </td>
      </tr>
      <tr>
        <td>
          <pre
            style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif"
          >
$FAILED_TESTS</pre
          >
          <br />
        </td>
      </tr>
      <tr>
        <td>
          <b><font color="#0B610B">构建日志 (最后 100行):</font></b>
          <hr size="2" width="100%" align="center" />
        </td>
      </tr>
      <!-- <tr>            <td>Test Logs (if test has ran): <a                href="${PROJECT_URL}ws/TestResult/archive_logs/Log-Build-${BUILD_NUMBER}.zip">${PROJECT_URL}/ws/TestResult/archive_logs/Log-Build-${BUILD_NUMBER}.zip</a>                <br />            <br />            </td>        </tr> -->
      <tr>
        <td>
          <textarea
            cols="80"
            rows="30"
            readonly="readonly"
            style="font-family: Courier New"
          >
${BUILD_LOG, maxLines=100}</textarea
          >
        </td>
      </tr>
    </table>
  </body>
</html>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139

其中的图片可以根据自己喜好自定义,模板来自于网络,基本上是我寻寻觅觅之后在经过自己加工,最好用的了。其中的 Git 版本号,请根据你自己项目所定义的变量进行调整,其他的没什么了!可以直接拷贝使用。

# 3,ok,主配置成功之后,去其中一个项目中进行配置。

进到项目配置当中,去到构建后操作里,添加一项

image

其他地方不用动,在这里添加收件人,可以是公司的邮件组。

image

设置添加构建日志。

image

然后保存,进行构建,发现成功之后就会有邮件发布给配置的相应收件人了。

# 4,批量改配置

是不是 Jenkins 大业已就(配置完整),而现在要一个一个配置,简直蛋疼要死,,额,我还真有一个治疗此蛋疼的办法。

用之前说过的一个批量操作插件。 Configuration Slicing Plugin

安装方式出门左转。

现在直接跳转到主界面去。

选中邮件配置项。

image

详细配置方法,继续看图学能耐。

image

ok,就此,打完收功!!

# 2018 年 5 月 10 号补充:

上次配置完成之后,在使用中,发现只有部分项目构建之后发送邮件正常,而有一些项目在构建之后,则没有发送邮件。

报出的问题如下:

image

原因:这是因为成功的构建之下没有要发送的配置,说白了,就是触发器配置的有问题。

解决办法:

去到项目配置里,往下拉,找到触发器的配置,然后添加 always,就可以了。

image

微信 支付宝
#jenkins#email
上次更新: 2024/07/04, 22:40:37
Jenkins复杂邮件推送配置详解
Jenkins构建安卓项目之前的一些唠叨

← Jenkins复杂邮件推送配置详解 Jenkins构建安卓项目之前的一些唠叨→

最近更新
01
学习周刊-总第212期-2025年第21周
05-22
02
从赵心童世锦赛夺冠聊聊我的斯诺克情缘
05-16
03
学习周刊-总第211期-2025年第20周
05-15
更多文章>
Theme by Vdoing | Copyright © 2017-2025 | 点击查看十年之约 | 浙ICP备18057030号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式