【问题标题】:should I use Jenkins heavyweight or flyweight executors for notifications?我应该使用 Jenkins 重量级或轻量级执行器进行通知吗?
【发布时间】:2017-06-23 05:15:03
【问题描述】:
我的 Jenkins 管道中有几个步骤可以通知用户,在我的情况下使用 Slack 集成。
在node 块中编写通知代码以使用重量级执行器还是将其留在外部以使用轻量级执行器是一种好习惯?
根据documentation:
每个 Pipeline 构建本身都在主服务器上运行,使用享元执行器 - 一个不计其数的插槽,假定不会占用任何显着的计算能力。
这个执行器代表实际的 Groovy 脚本,它几乎总是空闲的,等待一个步骤完成。
享元执行器始终可用。
阅读本文后,我仍然不清楚通知使用重量级或轻量级执行器是否被认为是一种好习惯
【问题讨论】:
标签:
jenkins
jenkins-pipeline
jenkins-2
【解决方案1】:
大多数步骤都会让您知道它们需要(重量级)执行器插槽(节点/代理) - 请参阅 Daniels 的回答。
请记住,执行程序(重量级)是 Jenkins 防止 Jenkins 运行的机器过载的方法。通过限制执行器的数量,您可以限制 Jenkins 并行执行的任务数量,从而限制所需的资源。
对于通知,使用轻量级执行器应该没问题(如果它在没有节点的情况下工作),因为它不需要你的 jenkins 机器的太多资源。它仍然取决于您的用例,如果通知是使用常规或轻量级执行程序执行的,那么它到底有多重要。如果发送此通知只需要几毫秒/秒,并且如果您(平均而言)有足够的免费执行程序,那么使用节点又名执行程序并没有什么坏处。然后,为您的完整管道使用一个节点/代理通常会更容易。
另一方面,请确保您的管道不会永远阻塞执行程序。例如。如果您使用输入步骤,因此管道会等待用户输入很长时间。这里轻量级执行器的使用很重要。此外,网络请求和其他可能长时间运行的任务的超时配置有助于防止阻塞(常规)执行程序。
希望这有助于为您提供更多指导。
【解决方案2】:
我triedflyweight executor 发送邮件时出现如下错误:
Required context class hudson.FilePath is missing
为了避免这类问题,我会选择重量级的执行器。