如何取消系统groovy脚本

如何取消系统groovy脚本,groovy,jenkins,Groovy,Jenkins,在Jenkins中,我有一个系统groovy脚本构建步骤。有没有办法取消一个长时间运行的脚本,或者在系统groovy脚本中有一些代码来判断其生成是否已被取消?当您取消生成时,Jenkins将中断运行脚本的线程 因此,您可以手动更改线程的中断状态,并在某些点中止脚本,例如 if (Thread.currentThread().interrupted()) { throw new InterruptedException() } 或者,您可以让Groovy在脚本中包含注释,例如 @groovy

在Jenkins中,我有一个系统groovy脚本构建步骤。有没有办法取消一个长时间运行的脚本,或者在系统groovy脚本中有一些代码来判断其生成是否已被取消?

当您取消生成时,Jenkins将中断运行脚本的线程

因此,您可以手动更改线程的中断状态,并在某些点中止脚本,例如

if (Thread.currentThread().interrupted()) {
  throw new InterruptedException()
}
或者,您可以让Groovy在脚本中包含注释,例如

@groovy.transform.ThreadInterrupt

还要确保没有一个catch块会吞下中断异常。

Related。我似乎仅仅通过使用注释就观察到了对Jenkins绩效的重大影响。也许这是巧合,但它确实连续发生了两次……因此,我认为这不仅仅是表面上的。如果您的系统groovy脚本正在启动线程,则需要在退出之前对其进行一些处理。我还不知道如何捕捉所有这些,但我想我会学习并找出答案。。