Jenkinの電子メールエクストプラグインのゼリースクリプトの無限ループ。なんで? [閉まっている
-
29-10-2019 - |
質問
Jenkinsの電子メール-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>
メール-Extにはchange_since_last_successトークンがありますが、素敵なhtmlメールを送信しようとするときにそれを利用できるようにする方法はありません
解決
私は少しデバッグし、最後の2行目から最後の行がわかりました。
<j:set var="changesBuild" value="changesBuild.nextBuild" scope="parent" />
scope = "parent"を削除する必要があります。その周りに$ {}を追加します:
<j:set var="changesBuild" value="${changesBuild.nextBuild}" />
所属していません StackOverflow