我注册了 6 个 gitlab-runner 然后当推送到 gitlab 服务器时,pipline 只运行第一个 gitlab-runner?为什么会发生这种情况?我希望管道在 6 台服务器上运行。谢谢。
答案1
这是 ssh 服务上众所周知的行为,但由于您的工具实现没有详细描述,我不知道这是否是一个类似的问题。
使用 ssh 时,问题在于本地服务假定远程服务将从本地计算机读取 stdin。因此,它会抢先读取本地数据,并向远程发送一个块,以提高其启动时间。
如果您处于远程调用循环中,则会将所有输入从循环控制中吸出,并且第二个循环周期将获得 EOF。
ssh 中的修复方法是 (a) 使用 -n 选项来禁止发送本地数据,或 (b) 将 ssh 输入从 /dev/null 重定向,使其无法读取。
您还可以将数据作为回显放入 ssh 命令本身,或者从文件或另一个本地命令通过管道传输其输入,从而绕过本地标准输入。
您应该能够在 strace 下执行 git-lab-runner 以发现它是否意外读取 stdin。