
6개의 gitlab-runner를 등록한 다음 gitlab 서버에 푸시하면 pipline이 첫 번째 gitlab-runner만 실행합니까? 왜 이런 일이 일어나는 걸까요? 파이프라인은 6개의 서버에서 실행될 것으로 예상됩니다. 감사합니다.
답변1
이는 SSH 서비스에서 잘 알려진 동작이지만 도구 구현이 자세히 설명되어 있지 않기 때문에 이것이 비슷한 문제인지는 알 수 없습니다.
ssh의 경우 문제는 로컬 서비스가 원격 서비스가 로컬 시스템에서 stdin을 읽을 것이라고 가정한다는 것입니다. 따라서 로컬 데이터를 선제적으로 읽고 시작 시간을 향상시키기 위해 블록을 원격으로 보냅니다.
원격 호출 루프에 있는 경우 루프 제어에서 모든 입력을 빨아들이고 두 번째 루프 주기는 EOF를 얻습니다.
ssh의 수정 사항은 (a) -n 옵션을 사용하여 로컬 데이터 전송을 금지하거나 (b) 어쨌든 읽을 수 없도록 ssh 입력을 /dev/null에서 리디렉션하는 것입니다.
ssh 명령 자체에 에코로 데이터를 넣거나 파일이나 다른 로컬 명령에서 입력을 파이프하여 로컬 stdin을 우회할 수도 있습니다.
예기치 않게 stdin을 읽고 있는지 확인하려면 strace에서 git-lab-runner를 실행할 수 있어야 합니다.