我的Jenkins管道中有几个步骤可以通知用户,在我的情况下使用Slack集成。
将通知代码写入node
块以使用重量级执行程序或将其留在外面以使用flyweight执行程序是一个好习惯吗?
每个Pipeline构建本身都在主服务器上运行,使用flyweight执行程序 - 一个假定不会占用任何重要计算能力的不计数的插槽。
此执行程序代表实际的Groovy脚本,它几乎总是空闲,等待一个步骤完成。
Flyweight执行者随时可用。
阅读本文后,我仍然不清楚是否认为使用重量级或重量级执行者的通知是一种好习惯
答案 0 :(得分:4)
大多数步骤都会让你知道他们需要一个(重量级)执行器插槽(节点/代理) - 请参阅Daniels的回答。
请记住,执行者(重量级)是Jenkins防止Jenkins运行的机器过载的方法。通过限制执行程序的数量,您可以限制Jenkins并行执行的任务数量,从而限制所需的资源。
对于通知,使用轻量级执行程序(如果它在没有节点的情况下工作)应该没问题,因为它不需要jenkins机器的太多资源。它仍然取决于您的用例,如果使用常规或轻量级的excecutor执行通知真正重要。如果发送此通知只需要几毫秒/秒,如果您(平均)有足够的免费执行程序,那么使用节点即执行程序也没有什么坏处。然后,通常更容易将一个节点/代理用于完整的管道。
另一方面,确保您的管道不会永远阻止执行程序。例如。如果你使用输入步骤,管道因此等待很长时间用户输入。这里轻量级执行程序的用法很重要。此外,网络请求和其他可能长时间运行的任务的超时配置有助于防止阻塞(常规)执行程序。
希望这有助于为您提供更多指导。
答案 1 :(得分:2)
我tried flyweight执行者,但在发送电子邮件时收到以下错误:
<div class="mortgageInput">
<form method="POST" name="calc" onclick="validateForm();repayment();return false;">
<label>Amount </label>
<input type="textbox" id="loan" value="100000"><br>
<label>Years</label>
<input type="textbox" id="years" value="15"><br>
<label>Rate (%)</label>
<input type="textbox" id="rate" value="6.00" onkeyup="calculate"><br>
<input type="button" value="Calculate" id="btn"><br>
<label>Monthly Repayment</label>
<input type="textbox" id="monthlyRepayment"><br>
<label>Monthly Interest Only</label>
<input type="textbox" id="interest"><br>
<label>Monthly Capital Repayment</label>
<input type="textbox" id="capitalRepayment"><br>
<label>Total Interest</label>
<input type="textbox" id="totalInterest">
</form>
</div>
<br>
<table id="test">
</table>
为了避免这些问题,我会选择重量级的执行者。