"Stop build" 按钮在 Bamboo 中如何工作?

How does the "Stop build" button work in Bamboo?

"Stop build" 按钮在 Bamboo 中如何工作?我有一份工作调用 Python3 脚本来 运行 机器上的一些测试。当按下 "Stop build" 时,Bamboo 会向进程发送 Ctrl+C (SIGINT) 吗? SIGKILL?

我的脚本使用多重处理,当它收到 SIGINT 信号时会正常关闭,但是当我按下 "Stop build" 时,它似乎会终止主进程并让其余进程继续运行...

根据我的 Bamboo 日志,它似乎发送了一个 SIGQUIT 信号,五秒后又发送了一个 SIGTERM 信号:

17:24:02    Executing kill -3 66265  # this sends SIGQUIT
17:24:07    Killing: 66265
17:24:07    Executing kill 66265 # this sends SIGTERM

通过像这样添加一个信号处理程序,我能够捕获它并优雅地退出我的进程:

def signal_handler(self, signum, frame):
    print(f"Received a 'kill -{signum}'! Cleaning up...")
    self.cleanup()

# put these inside of the main function
signal.signal(signal.SIGQUIT, self.signal_handler)
signal.signal(signal.SIGTERM, self.signal_handler)

根据 this post on the Bamboo forums,Bamboo 将 SIGTERM 发送到进程,但它没有提到首先发送的 SIGQUIT


如果您在 Plan Configuration -> Other 中启用“强制停止构建”,以上内容似乎才成立。如果未启用“强制停止构建”,则“停止构建”似乎不会执行任何操作。