【问题标题】:Jenkins - What's changed between 2 builds?詹金斯 - 2个版本之间发生了什么变化?
【发布时间】:2015-02-25 19:11:43
【问题描述】:

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

当项目被调用时,我希望能够汇总从当前构建到部署到 QA 环境的最后一个构建的更改日志。

我通过更改日志看到了执行此操作的方法。但是,似乎没有一种简单的方法可以获取这些信息然后对其进行汇总。

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

【问题讨论】:

    标签: jenkins continuous-integration changelog jelly


    【解决方案1】:

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

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

    【讨论】:

    • 你能指出如何通过 shell 实现这一目标的正确方向吗?
    【解决方案2】:

    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>
    

    【讨论】:

    • 这似乎只显示当前版本的更改。我想要跨多个构建的更改集,聚合在一起。
    猜你喜欢
    • 2017-07-13
    • 1970-01-01
    • 2012-03-31
    • 2018-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多