지금 Jenkins 에이전트는 각 Rails 프로젝트에 대해 docker-compose.yml을 생성 한 다음 docker-compose up을 실행합니다. docker-compose.yml에는 rbenv 및 기타 모든 Rails 종속성이 내부에있는 기본 "웹"컨테이너가 있습니다. 테스트 Postgres DB를 포함하는 DB 컨테이너에 연결됩니다.
문제는 실제로 테스트를 실행하고 종료 코드를 생성해야 할 때 발생합니다. CI 서버는 테스트 스크립트가 exit 0을 반환하는 경우에만 배포되지만 docker-compose는 컨테이너 명령 중 하나가 실패하더라도 항상 0을 반환합니다.
다른 문제는 웹 컨테이너가 테스트를 실행 한 후에도 DB 컨테이너가 무기한 실행되므로 docker-compose up
반환되지 않는다는 것입니다.
이 프로세스에 docker-compose를 사용할 수있는 방법이 있습니까? 컨테이너를 실행할 수 있어야하지만 웹 컨테이너가 완료되면 종료하고 종료 코드를 반환해야합니다. 지금 당장은 Docker를 사용하여 DB 컨테이너를 회전하고 --link 옵션으로 웹 컨테이너를 실행하는 데 수동으로 멈춰 있습니다.
docker-compose
1.12.0 이상을 사용하는 경우 올바른 방법입니다 . 어쩌면 당신의 경우 일 수도 있습니다. 예 :docker-compose up --exit-code-from test-unit
.set -e
스크립트 시작 부분에를 추가하기 전까지는 작동하지 않았습니다 .