【问题标题】:How does the "Stop build" button work in Bamboo?Bamboo 中的“停止构建”按钮如何工作?
【发布时间】:2020-07-19 07:05:42
【问题描述】:

Bamboo 中的“停止构建”按钮如何工作?我有一个调用 Python3 脚本在机器上运行一些测试的工作。当按下“停止构建”时,Bamboo 是否会向进程发送 Ctrl+C (SIGINT)? SIGKILL?

我的脚本使用多处理,并且在收到 SIGINT 信号时会正常关闭,但是当我按下“停止构建”时,它似乎会杀死主进程并让其余进程继续运行......

【问题讨论】:

    标签: bamboo


    【解决方案1】:

    根据我的 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 中启用“强制停止构建”时,上述情况似乎才成立。如果未启用“强制停止构建”,则“停止构建”似乎没有任何作用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-20
      • 1970-01-01
      • 1970-01-01
      • 2014-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多