Jenkins를 사용하여 Docker 컨테이너에서 C ++ 프로젝트를 빌드하려고합니다. Jenkins에서 빌드하거나 Jenkins 외부의 컨테이너에 빌드하는 데 문제가 없습니다.
아래는 내가 시도한 것입니다. 명확성을 위해 볼륨 매핑을 생략하고 있습니다.
사례 1
다음 명령은 쉘에서 빌드를 성공적으로 실행합니다.
docker run --rm --interactive=true --tty=true $IMAGE make
그러나 Jenkins에서 "execute shell"단계로 실행하면 Docker는 다음 오류를 반환합니다.
cannot enable tty mode on non tty input
사례 2
다음 명령은 이전 명령과 유사하지만 대화 형 기능을 비활성화합니다.
docker run --rm $IMAGE make
Jenkins는 빌드를 성공적으로 실행할 수 있습니다. 그러나 빌드를 중단 할 때 심각한 문제가 있습니다. 빌드는 즉시 중단 된 것으로 표시되지만 빌드가 완료 될 때까지 컨테이너는 계속 실행됩니다. 또한 종료 후 컨테이너가 제거 되지 않습니다 .
쉘에서 실행될 때 명령이 성공적으로 빌드되지만 인터럽트 할 수는 없습니다. 또한 컨테이너는 종료 후 제거됩니다.
질문
Jenkins의 Docker 컨테이너에서 빌드를 깨끗하게 실행하고 빌드를 중단하는 기능을 유지하는 방법을 아는 사람이 있습니까?
Docker 호출은 스크립트 내부에 있으며 쉽게 추출 할 수 없으므로 Jenkins 플러그인을 사용하는 것은 옵션이 아닙니다.