如何让所有 Jenkins slave 任务都很好地执行?

How to have all Jenkins slave tasks executed with nice?

我们有许多 Jenkins 作业可能会在 Jenkins slaves 上执行。是否可以全局设置 Jenkins 任务的 nice 级别以确保 所有 Jenkins 任务以更高的 nice 级别执行?

是的,这是可能的。 "trick" 是已经以适当的 nice 级别启动从属代理;该从站上的所有 Jenkins 进程 运行 都将继承它。

Jenkins 通过 ssh 启动从属代理,有效地 运行 类似

的命令
cd /path/to/slave/root/dir && java -jar slave.jar

在 Jenkins 节点配置页面上,您可以定义一个 "Prefix Start Slave Command" 和一个 "Suffix Start Slave Command" 来拥有这个 nice-d。设置如下:

  • 前缀启动从命令:nice -n -10 sh -c '
  • 后缀启动从机命令:'

至此,slave启动命令变为

nice -n -10 sh -c 'cd "/path/to/slave/root/dir" && java -jar slave.jar'

这假设您的登录 shell 是伯恩 shell。对于 csh,您将需要不同的语法。另请注意,如果您的从属根路径包含空白,这可能会失败。

我通常更喜欢“Launch slave via execution of command on the Master”,并从 shell 包装器中自己调用 ssh。然后你可以 select 选择密码和客户端,并且可以在没有 Prefix/Suffix 错误和空白陷阱的情况下设置好度。