Jenkins Jenkin';s电子邮件扩展插件。为什么?

Jenkins Jenkin';s电子邮件扩展插件。为什么?,jenkins,hudson,hudson-plugins,jelly,email-ext,Jenkins,Hudson,Hudson Plugins,Jelly,Email Ext,我正在尝试使用Jenkins中的email ext插件发送一封电子邮件,其中包含自上次成功构建以来的所有更改。我拼凑了以下内容,替换了默认html.jelly脚本的更改集部分,但它进入了一个无限循环。我不明白为什么,我也不知道该如何调试它。我以前从未写过果冻脚本,所以这里可能有一些简单的东西 <j:set var="changesBuild" value="${build.previousNotFailedBuild}" /> <j:if test="${changesBuil

我正在尝试使用Jenkins中的email ext插件发送一封电子邮件,其中包含自上次成功构建以来的所有更改。我拼凑了以下内容,替换了默认html.jelly脚本的更改集部分,但它进入了一个无限循环。我不明白为什么,我也不知道该如何调试它。我以前从未写过果冻脚本,所以这里可能有一些简单的东西

<j:set var="changesBuild" value="${build.previousNotFailedBuild}" />
<j:if test="${changesBuild!=null}">
  <j:set var="changesBuild" value="changesBuild.nextBuild" scope="parent" />
</j:if>
<j:if test="${changesBuild==null}">
  <j:set var="changesBuild" value="build" scope="parent"  />
</j:if>

<j:while test="${changesBuild!=null}">
  <j:set var="changeSet" value="${changesBuild.changeSet}" />
  <j:if test="${changeSet!=null}">
  <j:set var="hadChanges" value="false" />
    <TABLE width="100%">
    <TR><TD class="bg1" colspan="2"><B>CHANGES</B></TD></TR>
    <j:forEach var="cs" items="${changeSet}" varStatus="loop">
      <j:set var="hadChanges" value="true" />
      <j:set var="aUser" value="${cs.hudsonUser}"/>
      <TR>
        <TD colspan="2" class="bg2">${spc}Revision <B>${cs.commitId?:cs.revision?:cs.changeNumber}</B> by
          <B>${aUser!=null?aUser.displayName:cs.author.displayName}: </B>
          <B>(${cs.msgAnnotated})</B>
         </TD>
      </TR>
      <j:forEach var="p" items="${cs.affectedFiles}">
        <TR>
          <TD width="10%">${spc}${p.editType.name}</TD>
          <TD>${p.path}</TD>
        </TR>
      </j:forEach>
    </j:forEach>
    <j:if test="${!hadChanges}">
      <TR><TD colspan="2">No Changes</TD></TR>
    </j:if>
    </TABLE>
    <BR/>
  </j:if>
  <j:set var="changesBuild" value="changesBuild.nextBuild" scope="parent" />
</j:while>

变化
${spc}修订${cs.commitId?:cs.Revision?:cs.changeNumber}由
${aUser!=null?aUser.displayName:cs.author.displayName}:
(${cs.msgAnnotated})
${spc}${p.editType.name}
${p.path}
不变


自上次成功标记以来,Email ext有一个更改,但在尝试发送漂亮的HTML电子邮件时,我看不到一种方法使其可用。我调试了一下,发现最后一行的第二行:

<j:set var="changesBuild" value="changesBuild.nextBuild" scope="parent" />

您需要删除scope=“parent”。并在其周围添加${}:

  <j:set var="changesBuild" value="${changesBuild.nextBuild}" />

我调试了一下,发现第二行到最后一行:

<j:set var="changesBuild" value="changesBuild.nextBuild" scope="parent" />

您需要删除scope=“parent”。并在其周围添加${}:

  <j:set var="changesBuild" value="${changesBuild.nextBuild}" />


ARGH我知道这是件愚蠢的事。谢谢顺便说一句,你想要的正是我想要的。“previousNotFailedBuild”应该获得最后一个成功的构建,然后它会立即在该构建上执行下一个构建(尽管它也缺少${})。所以从理论上讲,它从最后一次成功构建开始。无论如何,这就是目的!不知何故,我错过了先前的成功构建,这就是为什么我使用了先前的NotFailedBuild。但是以前成功的构建是我想要的。啊,我知道这很愚蠢。谢谢顺便说一句,你想要的正是我想要的。“previousNotFailedBuild”应该获得最后一个成功的构建,然后它会立即在该构建上执行下一个构建(尽管它也缺少${})。所以从理论上讲,它从最后一次成功构建开始。无论如何,这就是目的!不知何故,我错过了先前的成功构建,这就是为什么我使用了先前的NotFailedBuild。但我想要的是以前成功的构建。