【问题标题】:How does one cancel a system groovy script如何取消系统常规脚本
【发布时间】:2015-09-25 21:42:35
【问题描述】:

在 Jenkins 中,我有一个系统 groovy 脚本构建步骤。有什么方法可以取消长时间运行的脚本,或者在系统 groovy 脚本中添加一些代码来判断其构建是否已被取消?

【问题讨论】:

标签: groovy jenkins


【解决方案1】:

当您取消构建时,Jenkins 将中断正在运行脚本的线程。

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

if (Thread.currentThread().interrupted()) {
  throw new InterruptedException()
}

或者您可以让 Groovy 为您完成这项工作,方法是在您的脚本中包含 ThreadInterrupt 注释,例如

@groovy.transform.ThreadInterrupt

还要确保您的所有 catch 块都不会吞下 InterruptedException。

【讨论】:

  • 我似乎只是通过使用该注释来观察对 Jenkins 性能的重大影响。也许这是一个巧合,但它确实连续发生了两次......
  • 所以,我认为这不仅仅是表面上看到的。如果您的系统 groovy 脚本正在启动线程,您需要在退出之前对它们执行一些操作。我还不确定如何捕捉所有这些,但我想我会学习并找出答案..
猜你喜欢
  • 2019-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-09
  • 2010-09-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多