【发布时间】:2015-02-25 19:11:43
【问题描述】:
我有一个 Jenkins 构建管道,其中包含手动部署到 QA 环境的任务。
当项目被调用时,我希望能够汇总从当前构建到部署到 QA 环境的最后一个构建的更改日志。
我通过更改日志看到了执行此操作的方法。但是,似乎没有一种简单的方法可以获取这些信息然后对其进行汇总。
关于如何实现这一目标的任何想法?
【问题讨论】:
标签: jenkins continuous-integration changelog jelly
我有一个 Jenkins 构建管道,其中包含手动部署到 QA 环境的任务。
当项目被调用时,我希望能够汇总从当前构建到部署到 QA 环境的最后一个构建的更改日志。
我通过更改日志看到了执行此操作的方法。但是,似乎没有一种简单的方法可以获取这些信息然后对其进行汇总。
关于如何实现这一目标的任何想法?
【问题讨论】:
标签: jenkins continuous-integration changelog jelly
我们做同样的事情,但我找不到任何 Jenkins 插件功能来实现它。
我使用了“执行 Shell”构建步骤并在 shell 脚本中编写了所需的功能。我们在 Linux 上运行 Jenkins,如果您使用的是 Windows,您可以使用“执行 Windows 批处理命令”构建步骤来实现相同的目的
【讨论】:
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>
【讨论】: