如何检查执行器是否正在Jenkins中运行

cygmwpex  于 2023-03-07  发布在  Jenkins
关注(0)|答案(2)|浏览(249)

是否有方法在Jenkins管道中检查执行器是否已经在运行作业?
我想根据这种情况使用不同的环境变量。
我想要的管道的伪代码如下
中频
触发Job-A的构建
然后
使用环境_变量_1
将执行器-1用于作业-A
否则如果
JOB-A正在执行器-1上运行,并且再次触发JOB-A的构建
然后
使用环境_变量_2
将执行器-2用于作业-A
环境变量将保存不同文件夹的路径,因为作业将对文件夹进行更改。因此,当在执行器2上再次触发作业时,我希望它更改其他文件夹。

gupuwyp2

gupuwyp21#

如果不使用节点/代理,则可以使用以下命令列出执行器:

for( Computer c : Jenkins.getInstance().getComputers() ) {
  for (Executor e : c.getOneOffExecutors()) {
    println e
    println "Is executor busy: " + e.isBusy())
  }
}
w46czmvw

w46czmvw2#

是否有方法在Jenkins管道中检查执行器是否已经在运行作业?
可以。使用jenkins.model.Jenkins.instance.nodes可以获取所有已配置的节点。从这些节点可以使用node.toComputer()获取Computer对象。从Computer对象可以检索该计算机上的所有Executors

for (node in jenkins.model.Jenkins.instance.nodes) {
  def computer = node.toComputer()   /* computer behind the node */
  def executors = computer.getExecutors()
  for (executor in executors) {
    println("Node name: " + node.getDisplayName())
    println("Computer name: " + computer.getDisplayName())
    println("Executor name: " + executor.getDisplayName())
    println("Executor number: " + executor.getNumber())
    println("Is executor busy: " + executor.isBusy())
  }
}

Jenkins核心API文件:
Class Node
Class Computer
Class Executor

相关问题