"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
中启用“强制停止构建”,以上内容似乎才成立。如果未启用“强制停止构建”,则“停止构建”似乎不会执行任何操作。
"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
中启用“强制停止构建”,以上内容似乎才成立。如果未启用“强制停止构建”,则“停止构建”似乎不会执行任何操作。