 |
|
코드를 작성해보자!
CI 프로세스에 필요한 것은 빌드, SCM, CI 서버, 세 가지다. 이제 이 세 가지가 다 있고 모두 셋업되었다. 물론 CI가 유용하려면 코드를 작성하고 동작하도록 설정해야 한다. 본 절에서는 CI 프로세스가 처음부터 끝까지 어떻게 작동하는지 볼 수 있을 것이다.
CI 흐름
CI 시나리오에 완벽히 뛰어들기 전에 먼저 CI로 작업할 때 개발 흐름(cadence of development)이라 불리는 것을 정의하는 것이 좋겠다. 빌드를 실행하는 CI 서버를 가진다고 로컬 빌드를 스스로 수행할 수 없는 건 아니다. 사실 SCM에서 실패를 알리는 적절한 CI 프로세스가 제자리에 있다면 새 코드나 수정된 코드를 확인하지 않아도 모든 것이 제대로 작동한다. 그러므로 시간·인력 낭비를 할 필요가 없다.
따라서 CI 환경에서 개발 흐름은 다음과 같다.
- 로컬 샌드박스를 업데이트한다.
- 몇몇 코드를 수정한다.
- 몇몇 테스트를 작성한다.
- 로컬 빌드를 작동하여 잘못된 것이 없는지 확인한다.
- 업데이트를 실행하여 SCM의 최신 코드를 가지고 있는지 확인하고 다른 빌드를 작동하여 모든 것이 제대로 되는지 본다.
- 변화를 확인한다.
코드 기반으로 동시에 일하는 팀에 특히 장시간 속해 있다면 5단계는 매우 중요하다.
다행히도 개발자들은 대부분 CI 흐름을 자연스럽게 찾아낼 것이다. 이는 CI 환경 안이나 밖에서 좋은 흐름이다.
두 가지 테스트, 두 가지 테스트, 두 가지...
이제 실제 작업을 해야 한다. 예를 들어 허드슨이 예제 프로젝트의 첫 빌드를 실행할 때 두 가지 JUnit 테스트를 발견하고 이들을 실행한다. 따라서 그림 11처럼 두 개가 통과했고 두 개가 새로운 것이었음을 보고했다.
그림 11. 이 테스트들이 제대로 작동했다.
이 테스트들이 통과했다는 것에 기쁠 것이다. 하지만 뭔가 꺼림직하다는 생각이 든다고 하자(물론 직관을 피하기 위해 커버리지 리포트를 가질 수 있지만 지금은 직관에 매달릴 것이다). 코드가 바른지 확인하기 위해 추가로 테스트를 두 개 더 작성하고 로컬에서 실행하여 이들 작업을 입증하고 신속히 업데이트하여 빌드를 다시 실행하고 확인한다. 그리고 나서 또 다른 테스트를 두 개 작성하고 같은 순서로 다시 실행할 것이다.
빌드 상태 확인하기
새로운 두 가지 테스트를 확인한 후 프로젝트 홈페이지로 가서 상태를 확인할 수 있다. 얼마 지나지 않아 Build History 상자에 대기중(pending)이라는 빌드를 볼 수 있을 것이다. 허드슨이 SCM 저장소에서 변화를 감지했기 때문이다!
그림 12. 허드슨은 서브버전에서 생긴 변경 사항에 반응한다.
빌드 세부사항 확인하기
그림 12에서 허드슨의 Build History 상자는 대기중 빌드를 보여준다. 빌드가 끝나면 (통과 상태라면) 그림 13처럼 빌드 날짜를 클릭해 더 자세한 정보를 받을 수 있다.
그림 13. 새 테스트 두 개를 실행한 후 세부사항
그림 13은 이 빌드가 실행되게 한 변경 사항을 보여준다. 각 변화 다음에 있는 세부사항 링크를 클릭하여 그림 14처럼 누가 변경했는지, 작성한 문구는 뭔지, 특정 세부사항은 무엇인지 같은 변화에 대해 더 자세히 볼 수 있다:
그림 14. 이 빌드에서 발견된 두 가지 수정 사항
테스트는 통과했는가?
빌드 상태 페이지로 돌아가 Test Result 링크를 클릭하면 그림 15처럼 두 개의 새 테스트가 실행됐고 네 가지 모든 테스트가 다 통과했음을 볼 수 있다:
그림 15. 테스트 리포트
테스트 트렌딩
이 프로젝트를 구현했을 때 허드슨으로 JUnit 결과 파일을 가리키도록 했지만 그 이유는 설명하지 않았다. 여기서는 허드슨이 지원하는 훌륭한 특징을 보여주고자 한다. 각 빌드는 일치하는 JUnit 결과 XML 파일을 분석하고 트렌드 그래프를 만들 것이다. 사실 프로젝트 홈페이지로 돌아가보면 두 빌드의 테스트 카운트가 두 배가 되어 있는 트렌드 그래프를 볼 수 있을 것이다.
그림 16. 그리 나쁘지 않은 트렌드 — 100% 성장
그림 16의 트렌드 그래프는 빌드 6과 빌드 8(이 경우 연속 빌드) 사이의 테스트 숫자가 두 배가 됐음을 보여준다.
두 개의 테스트를 더한 후 같은 그래프
테스트를 두 개 더 작성한다면 그림 16의 트렌드 그래프는 지속적으로 매우 훌륭한 곡선을 보여줄 것이다. 즉, 각 빌드가 작동함에 따라 작동하는 테스트 양도 늘어난다는 뜻이다. 또한 그림 17에서 볼 수 있는 것처럼 그래프가 빨간색이 아닌 파란색이기 때문에 이 테스트들이 계속 통과한다는 것을 알 수 있다.
그림 17. 테스트 트렌드 지속하기!
시간 확인하기
허드슨이 트렌드하는 것은 테스트만이 아니다. 빌드 성능을 확인하는 빌드 실행 시간도 트렌드한다. 예를 들어 빌드를 실행하는 데 시간이 많이 걸리기 시작하면 다른 방법으로 테스트할 것을 생각해야 한다. 예를 들어 빠른 빌드를 위해 분류를 하는 식으로 말이다.
그림 18. 실행하는 데 시간이 걸리는 테스트
그림 18에서 보여준 데이터는 테스트에 걸리는 빌드 시간이 추가되는 것, 즉 테스트를 완성하는데 시간이 걸린다는 것을 명확히 나타내지만 작동하는 데 드는 시간보다는 훨씬 짧다는 것을 발견할 것이다.
성적표: A+
트렌딩에 대해 언급해보자면, 허드슨 홈페이지로 돌아가면 현재 허드슨이 관리하는 프로젝트 목록을 볼 수 있다. 이 프로젝트 테이블에서 다양한 데이터 아이템을 발견할 수 있다. 특히 흥미로운 것은 W행의 두 번째 아이콘이다. 이 아이콘은 모니터중인 프로젝트의 전반적인 상태를 나타낸다. 이 경우, 그림 19처럼 빛나는 태양 아이콘은 테스트와 빌드가 모두 통과됐다는 것을 나타낸다.
그림 19. 날씨 맑음 아이콘은 테스트가 통과되고 있음을 나타낸다.
다른 성적표: D-
실제 생활처럼 날씨가 항상 맑을 수는 없다. 가끔은 프로젝트가 빌드되지 않고 테스트가 실패할 수도 있다. 그림 20에서 볼 수 있듯이 이런 경우 허드슨은 완전히 다른 그림으로 보고한다.
그림 20. 비구름 조심(?)
자세히 보면 특정 프로젝트는 빌드 안전성이 79%, 테스트 안전성이 97%로 구름이 약간 낀 날씨를 나타낸다는 것을 볼 수 있다. 가장 위의 프로젝트는 허리케인이 온 것 같은 나쁜 날이라는 것을 보여주고 있다.
|