从 TeamCity 构建步骤开始后台进程

Start background process from TeamCity build step

当我尝试从 TeamCity 中的 Custom Script Step Runner 启动后台进程时,我发现它会在步骤完成后立即终止后台进程。有没有办法保持后台进程运行?

这是我在我的步骤中尝试做的事情:

ORACLE_POD_NAME=`...complex logic here...`

oc port-forward $ORACLE_POD_NAME 15210:1521 &
PORT_FORWARD_PID=$!

echo $PORT_FORWARD_PID > port_forward.pid

我的想法是在构建期间创建一个转发到我的 OpenShift pod 的持久端口,b/c许多后续构建步骤将需要它。然后我会使用我写入文件的 PID 终止端口转发进程。

不幸的是,oc port-forward 在步骤结束后立即终止。有没有办法让它发挥作用?

解决方案是断开我正在启动的后台子进程与父进程的输入和输出,并告诉子进程不要响应 HUP (hangup) 信号。

nohup oc port-forward $ORACLE_POD_NAME 15210:1521 > /dev/null 2>&1 </dev/null &
PORT_FORWARD_PID=$!

这确保端口转发过程在 TeamCity 步骤终止后仍然存在,从而使端口转发可用于后续构建步骤。