
我註冊了 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。