詹金斯 - 两个版本之间有什么变化?

时间:2015-02-25 19:11:44

标签: jenkins continuous-integration changelog jelly

我有一个Jenkins构建管道,其中包含部署到QA环境的手动任务。

调用项目时,我希望能够将更改日志从当前版本聚合到部署到QA环境中的最后一个版本。

我通过更改日志看到了这样做的方法。然而,似乎并不是一种简单的方法来获取这些信息然后汇总它。

关于如何实现这一目标的任何想法?

2 个答案:

答案 0 :(得分:0)

我们做同样的事情,但我无法找到任何Jenkins插件功能来实现它。

我使用了'Execute Shell'构建步骤,并在shell脚本中编写了所需的功能。我们在Linux上运行Jenkins,如果您使用的是Windows,则可以使用“执行Windows批处理命令”构建步骤来实现相同的目标

答案 1 :(得分:0)

email-ext plugin可以做这样的事情。它允许配置Jenkins非常详细地发送的电子邮件,其中包括电子邮件内容的脚本。

https://github.com/jenkinsci/email-ext-plugin/blob/master/src/main/resources/hudson/plugins/emailext/templates/html-with-health-and-console.jelly处提供的示例显示了如何迭代更改集并在生成的电子邮件通知中列出:

<!-- CHANGE SET -->
<div class="content">
  <j:set var="changeSet" value="${build.changeSet}" />
  <j:if test="${changeSet!=null}">
    <j:set var="hadChanges" value="false" />
    <a href="${rooturl}${build.url}/changes">
      <h1>Changes</h1>
    </a>
    <j:forEach var="cs" items="${changeSet.logs}" varStatus="loop">
      <j:set var="hadChanges" value="true" />
      <h2>${cs.msgAnnotated}</h2>
      <p>by <em>${cs.author}</em></p>
      <table>
        <j:forEach var="p" items="${cs.affectedFiles}">
          <tr>
            <td width="10%">${spc}${p.editType.name}</td>
            <td>
              <tt>${p.path}</tt>
            </td>
          </tr>
        </j:forEach>
      </table>
    </j:forEach>
    <j:if test="${!hadChanges}">
      <p>No Changes</p>
    </j:if>
    <br />
  </j:if>
</div>