5

我的 Jenkins 管道中有几个步骤可以通知用户,在我的情况下使用 Slack 集成。

node在块内编写通知代码以使用重量级执行器还是将其留在外部以使用轻量级执行器是一种好习惯?

根据文档

每个 Pipeline 构建本身都在 master 上运行,使用 flyweight executor——一个不计其数的 slot,假定它不会占用任何显着的计算能力。

这个执行器代表实际的 Groovy 脚本,它几乎总是空闲的,等待一个步骤完成。

享元执行器始终可用。

阅读完这篇文章后,我仍然不清楚通知使用重量级或轻量级执行程序是否被认为是一种好习惯

4

2 回答 2

6

大多数步骤会让您知道它们需要(重量级)执行器插槽(节点/代理) - 请参阅 Daniels 的回答。

请记住,执行程序(重量级)是 Jenkins 防止运行 Jenkins 的机器过载的方法。通过限制执行者的数量,您可以限制 Jenkins 并行执行的任务数量,从而限制所需的资源。

对于通知,使用轻量级执行器应该没问题(如果它在没有节点的情况下工作),因为它不需要你的詹金斯机器的太多资源。它仍然取决于您的用例,如果通知是使用常规或轻量级执行程序执行的,那么它到底有多重要。如果发送此通知只需要几毫秒/秒,并且如果您(平均而言)有足够的免费执行程序,那么使用节点又名执行程序并没有什么坏处。然后,为您的完整管道使用一个节点/代理通常会更容易。

另一方面,请确保您的管道不会永远阻塞执行程序。例如,如果您使用输入步骤,因此管道会在用户输入上等待很长时间。这里轻量级执行器的使用很重要。此外,网络请求和其他可能长时间运行的任务的超时配置有助于防止阻塞(常规)执行程序。

希望这有助于给你一些更多的方向。

于 2017-06-22T21:15:03.423 回答
2

尝试了享元执行器,但在发送电子邮件时出现以下错误:

Required context class hudson.FilePath is missing

为了避免这类问题,我会选择重量级的执行器。

于 2017-06-21T21:21:47.027 回答