파이프라인이 첫 번째 gitlab-runner만 실행하는 이유는 무엇입니까?

파이프라인이 첫 번째 gitlab-runner만 실행하는 이유는 무엇입니까?

6개의 gitlab-runner를 등록한 다음 gitlab 서버로 푸시할 때 pipline은 첫 번째 gitlab-runner만 실행합니까? 왜 이런 일이 발생합니까? 파이프라인을 6개의 서버에서 실행하고 싶습니다. 감사해요.

답변1

이는 SSH 서비스에서 잘 알려진 동작이지만 도구 구현이 자세히 설명되어 있지 않으므로 이것이 비슷한 문제인지는 알 수 없습니다.

SSH를 사용할 때 문제는 로컬 서비스가 원격 서비스가 로컬 시스템에서 stdin을 읽을 것이라고 가정한다는 것입니다. 따라서 로컬 데이터를 선제적으로 읽고 블록을 원격으로 전송하여 시작 시간을 향상시킵니다.

원격 호출 루프에 있는 경우 모든 입력은 루프 제어에서 빠져나오고 두 번째 루프 사이클은 EOF를 얻습니다.

ssh의 수정 사항은 (a) -n 옵션을 사용하여 로컬 데이터 전송을 비활성화하거나 (b) ssh 입력을 /dev/null에서 리디렉션하여 읽을 수 없도록 하는 것입니다.

또한 데이터를 ssh 명령 자체에 에코로 넣거나 로컬 표준 입력을 우회하여 파일이나 다른 로컬 명령에서 입력을 파이프할 수도 있습니다.

예기치 않게 stdin을 읽는지 확인하려면 strace에서 git-lab-runner를 실행할 수 있어야 합니다.

관련 정보