部署 jenkins 系列(二)--- 邮件通知

220 阅读3分钟

上一期已经讲述了如何基础搭建 jenkins ,实现了 push 代码,完成自动化打包发布,但是因为你重新打包发布了,万一打包失败了呢?你如何知道?

所以这一期将为 jenkins 配上邮件通知,将打包的详情通过邮件的形式通知管理员或者运维人员。

下载安装插件 Email Extension Plugin

邮箱授权

如我使用的是 163 邮箱,进入设置开始 SMTP 服务,如下图

注意这里两个服务都要开启,开始我就开了一个,然后总是报 UnknownHost\*\*\* smtp.163.com 类似这个错误,我网上查了2天都没找到原因,改过 hosts, 改过 dns 解析... 之后两个都开通之后就可以了。 开通需要扫码发送短信,记得复制保存好密码

jenkins 配置

管理员邮件地址一定要配 可以直接填邮箱地址,或者像我这样带上名称

注意这里的 password 是你对应邮箱的外部软件访问的私钥,不是你的邮箱登录密码

其他的按图中的配置就行

Default Subject: 默认邮件标题
Default Content: 默认邮件内容,代码是我写的一个简单的模板,我放在文末,大家自取

Default Triggers: 可以选择 always,方便构建验证,之后可以根据你的实际需求自己调整

然后最下方的邮件通知可以用作测试(配置按照上方的,然后勾选通过发送测试邮件测试配置) 如果测试邮件通过,那么恭喜你成功了!

// Default Content 代码
<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次构建日志</title>
  <style TYPE="text/css">
    p, ul, li, div, h3, h4, pre {
      padding: 0;
      margin: 0;
    }
    .jenkins-email {
      font-family: -apple-system,BlinkMacSystemFont,segoe ui,
      Roboto,helvetica neue,Arial,noto sans,sans-serif,
      apple color emoji,segoe ui emoji,segoe ui symbol,noto color emoji !important;
    }
    .jenkins-email_header {
      color: #52c41a;
    }
    .jenkins-email_main {
      width: 80%;
      margin: 0 auto;
    }

    .jenkins-email_card {
      line-height: 1.5;
      border: 1px solid #d5d5d5;
      border-radius: 3px;
      margin: 20px 0;
    }
    .jenkins-email_card header {
      line-height: 40px;
      border-bottom: 1px solid #d5d5d5;
      padding: 0 20px;
    }
    .jenkins-email_card .card_info {
      list-style: none;
      padding: 20px 20px 30px;
    }

    .jenkins-email_card .card_info > li {
      margin-bottom: 10px;
      display: -webkit-box; /* Chrome 4+, Safari 3.1, iOS Safari 3.2+ */  
      display: -moz-box; /* Firefox 17- */  
      display: -webkit-flex; /* Chrome 21+, Safari 6.1+, iOS Safari 7+, Opera 15/16 */  
      display: -moz-flex; /* Firefox 18+ */  
      display: -ms-flexbox; /* IE 10 */  
      display: flex; /* Chrome 29+, Firefox 22+, IE 11+, Opera 12.1/17/18, Android 4.4+ */  
      color: #333;
    }
    .jenkins-email_card .card_info > li > .label {
      margin-right: 16px;
      color: #aaa;
      width: 100px;
    }

    .log-area {
      -webkit-box-flex: 1;
      -ms-flex: 1;
      -webkit-flex: 1;
      flex: 1;    
      font-size: 14px;
    }

    @media screen and (max-width: 600px) {
      .jenkins-email_main {
        width: 100%;
        margin: 0 auto;
        font-size: 12px;
      }
    }
  </style>
</head>

<body class="jenkins-email">
  <main class="jenkins-email_main">
    <header class="jenkins-email_header">
      <h2>${PROJECT_NAME} 构建结果: ${BUILD_STATUS}</h2>
    </header>
    <article>
      <p>(本邮件是Jenkins构建项目完成之后自动下发的,请勿回复!)</p>
      <section class="jenkins-email_card">
        <header><h3>构建信息</h4></header>
        <ul class="card_info">
          <li>
            <div class="label">项目名称</div>
            <div>${PROJECT_NAME}</div>
          </li>
          <li>
            <div class="label">项目显示名称</div>
            <div>${PROJECT_DISPLAY_NAME}</div>
          </li>
          <li>
            <div class="label">Jenkins 地址</div>
            <div>${JENKINS_URL}</div>
          </li>
          <li>
            <div class="label">项目描述</div>
            <div>${JOB_DESCRIPTION}</div>
          </li>
          <li>
            <div class="label">构建编号</div>
            <div>${BUILD_NUMBER}</div>
          </li>
          <li>
            <div class="label">Git 版本</div>
            <div>${branch}</div>
          </li>
          <li>
            <div class="label">发布者</div>
            <div>${CAUSE}</div>
          </li>
          <li>
            <div class="label">Git Commit</div>
            <div>${GIT_COMMIT}</div>
          </li>
          <li>
            <div class="label">构建日志</div>
            <div><a href="${BUILD_URL}console">日志地址</a></div>
          </li>
          <li>
            <div class="label">构建地址</div>
            <div><a href="${BUILD_URL}">${BUILD_URL}</a></div>
          </li>
          <li>
            <div class="label">工作目录</div>
            <div><a href="${PROJECT_URL}ws">${PROJECT_URL}ws</a></div>
          </li>
          <li>
            <div class="label">项目地址</div>
            <div><a href="${PROJECT_URL}">${PROJECT_URL}</a></div>
          </li>
        </ul>
      </section>

      <section class="jenkins-email_card">
        <header><h3>历史变更 & 失败测试记录</h4></header>
        <ul class="card_info">
          <li>
            <div class="label">历史变更记录: </div>
            <div><a href="${PROJECT_URL}changes">${PROJECT_URL}changes</a></div>
          </li>
          <li>
            <div class="label">失败测试记录: </div>
            <div>
              ${FAILED_TESTS}
            </div>
          </li>
        </ul>
      </section>

      <section class="jenkins-email_card">
        <header><h3>构建日志</h4></header>
        <ul class="card_info">
          <li>
            <div class="label">最后 100 行: </div>
            <pre class="log-area">${BUILD_LOG, maxLines=100}</pre>
          </li>
        </ul>
      </section>
    </article>
  </main>
</body>
</html>

如果有什么问题,可以直接留言,能回答的我会及时回答的,当然po主也是第一次接触,有些问题可能回答不上来,敬请谅解