Blog

잘가 젠킨스, 반갑다 트레비스

January 16, 2014

잘가 젠킨스, 반갑다 트레비스

구글러 크리스 베인(Chris Bane)이 만든 PhotoView 프로젝트가 있다. 핑거 투 줌 기능을 지원하는 안드로이드 이미지 뷰 객체이다. 이 객체를 이용하면 두 손가락으로 이미지를 확대, 축소하는 일을 쉽게 할 수 있다.

이 프로젝트는 그래들(Gradle) 기반의 빌드 시스템을 사용하고 있었는데 크리스 베인의 버전은 그래들 1.8 버전에 맞게 되어 있었다. 안드로이드 그래들 플러그인 버전은 0.6 버전을 지원했고. 현재 최신 버전은 1.10 버전이었는데 나는 1.8 버전까지 낮추고 싶지는 않았다. 안드로이드 그래들 플러그인 버전을 확인해보니 0.7 버전이 나왔고 그래들 버전 1.9 버전을 지원했다. 그래들 플러그인을 0.7 버전을 올리고 그래들 버전 1.9 버전을 쓰는 것을 목표로 했다.

버전을 올리고 나서 풀 리퀘스트를 보냈다. 최고의 깃 저장소인 (이 수식어도 조금 부족함이 있다) 깃헙(GitHub)에는 풀 리퀘스트란 것이 있는데 내가 복제한 (forked) 저장소에 내가 만든 패치를 올린 것을 원 저자에게 보내는 것이다.

막상 풀 리퀘스트를 보내고 나니 문제가 생겼다. 빌드가 실패했다는 메시지가 뜬 것이다. CI 서비스가 크리스 베인의 리포지토리에 연동되 있었다. CI 서비스는 특정한 조건을 만족하면 빌드를 해서 결과를 알려주는 서비스인데 보통은 데일리 빌드나 커밋 단위로 빌드를 한다. 유명한 CI 서비스로는 젠킨스 (구. 허드슨)이 있다. 해당 프로젝트는 트레비스(Travis)가 연동이 되어 있었다. 트레비스는 비공개 프로젝트를 위해서는 결제를 해야 이용할 수 있는 CI 서비스이다. 트레비스는 깃헙과 통합되어 개발자가 직접 커밋을 하거나 다른 개발자가 패치를 보낼 때 마다 검증해서 알려준다.

아마도 크리스 베인은 머지가 통과되었다는 메시지가 뜰 때까지 내 패치를 받아주지 않을 것이다. 조금 짜증났지만 정신을 차리고 트레비스의 테스트를 내가 통과시킬 수 있는 지 알아봤다.

트레비스는 .travis.yml 파일이 루트에 있으면 그것을 처리해서 빌드하도록 되어 있었는데 .travis.yml 파일의 문법은 간단했다. before_script:와 scirpt: 항목을 만들고 그 세부항목을 -를 붙여서 만들면 된다. 아래와 같은 식이다.

script:
- sudo ant clean

정말 간단한 문법이지 않는가? 내가 만든 패치안드로이드에서 빌드하는 방법을 담은 글을 보면 더 명확해질 것이다.

나는 이제부터 내가 만든 오픈소스 프로젝트에 모두 트레비스를 붙일 생각이다. 그리고 비공개 서비스에도 트레비스를 붙이고. 단순히 빌드가 제대로 되는지를 확인하기 위해 복잡하고 무거운 툴 (젠킨스?)를 깔 필요는 이제는 없는 것 같다. 비록 비공개 프로젝트에 대해서는 과금을 하고 있지만 이런 서비스에는 돈을 내어도 된다고 생각한다.