Travis CI에서 얼마 전에 내부적으로 Docker 인프라를 구축했다는 공지를 올렸다. 이 말은 Travis CI에서 Docker를 띄운다기보다는 내부적으로 Docker를 이용해서 빌드나 테스트를 실행한다는 의미이다. 생각해 보면 Travis CI처럼(그 외 CircleCI등도 포함) 격리된 특정 환경을 수시로 띄웠다가 내리는 상황에 Docker는 참 어울린다고 생각한다.(Docker를 잘 알지는 못하지만...)
Docker 컨테이너는 Travis가 내부에서 사용하므로 Travis에서 테스트하기 위해서 개발자가 따로 Docker에 대해서 알아야 할 필요는 없다. 대신 Docker를 사용하면 빌드를 오래 기다릴 필요없이 길어도 10초 내에 시작하고 대부분의 경우 테스트가 더 빨리 실행된다고 밝히고 있다. 기본 인프라가 머신당 1.5코어에 3GB 메모리를 쓰면서도 상황에 따라 유동적이었지만 이제는 2코어에 4GB 메모리를 쓰고 리소스가 격리돼서 동일 시간 때 다른 프로젝트로 인한 영향이 거의 없어졌다. 그리고 외부 의존성 라이브러리를 캐시할 수 있게 되어 테스트를 더 빨리 실행할 수 있다.
Travis CI는 Docker 도입의 영향이 없도록 기존 빌드는 그대로 돌아가게 하고 Docker로 사용자들이 옮겨오도록 유도하고 있다. 사용방법은 아주 간단한데 .travis.yml
에 sudo: false
를 추가하기만 하면 된다.(대신 빌드나 테스트에서 sudo
를 사용할 수가 없다.)
Travis에서 빌드내용을 보면 linux에서 실행되는 것을 볼 수 있는데 sudo: false
를 추가하면 아래처럼 Docker에서 실행되는 것을 볼 수 있다.(테스트해본 프로젝트는 너무 작아서 그런지 빌드 시간에는 별로 차이가 없었다.)
Comments