오랜만에 JetBRAINS사 홈페이지에 들렸다가 TeamCity가 무료로 풀렸다는 사실을 알고 화들짝 놀랐다. 엄밀하게 말하면 Professional Edition만 무료이고 EnterpriseEdition은 여전히 유료이다. 두 제품의 차이점은 홈페이지에서 직접 확인하는 편이 좋겠지만 간략히 요약하자면 다음과 같다.
Professional | Enterprise | |
사용자 계정 | 20개까지 | 무제한 |
빌드 구성 | 20개까지 | 무제한 |
인증 | 기본 인증만 | 기본, NT, LDAP |
게다가 놀라운 점은 오픈소스 프로젝트에는 Enterprise Edition까지 무료라는 점이다. 첫 일년 간 무상이며 그 이후로는 요청하면 기한을 늘려주는 모양이다. 아무래도 오래 못 버티고 죽는 오픈소스 프로젝트가 많은 탓인 듯 하다.
주요 기능
IDE 플러그인
IntelliJ IDEA, Eclipse, Visual Studio 2005, Visual Studio 2008을 지원한다. 순서대로 지원하는 기능이 많은데 Visual Studio를 쓰더라도 CruiseControl .NET의 CCTray와 비슷한 수준이다. 원격 빌드, 사전 테스트한 커밋, 빌드 감시, 빌드 결과 보기, 실패한 테스트의 소스 파일 열기, 웹 인터페이스 탐색 등을 지원한다.
눈에 띄는 기능은 역시 사전 테스트한 커밋이다. 개발자가 고친 코드를 원격 빌드 서버에서 통합하고 단위테스트까지 돌린다. 이 과정이 성공했을 때만 해당 소스 코드를 버전 관리 시스템에 커밋한다.
빌드 스크립트 등
Java
- Ant
- Maven2
- IntelliJ IDEA projects
- Code Inspections (Java, HTML and CSS, JavaScript, EJB, JSP, JSF, Struts and more) for IntelliJ IDEA projects and Maven2 projects
- Duplicates Finder for IntelliJ IDEA projects and Maven2 projects
.NET
- MSBuild
- NAnt
- Microsoft Visual Studio Solutions
- 2003
- 2005
- 2008
- Duplicates Finder for Visual Studio 2003, 2005 and 2008 projects (C# up to version 2.0 and Visual Basic .NET up to version 8.0)
- FxCop build runner
내 관심사는 윈도우 플랫폼이기 때문에 역시 MSBuild와 Visual Studio 솔루션을 지원하는 게 마음에 든다. 전체적으로 CruiseControl, CruiseControl .NET과 그리 다르지 않은 듯 하다.
단위 테스트
- JUnit
- TestNG
- NUnit (x86, x64)
- MSTest (2005, 2008)
Google Test는 JUnit과 동일한 형태로 빌드 보고서를 생성하니 MSBuild 등과 적절히 섞어 쓰면 아무 문제가 없을 듯 하다. 오늘 처음 밝히는 건데 C++용 단위 테스트 도구를 UnitTest++에서 Google Test로 바꿨다. 후자에 사소한 단점이 있긴 하나 전반적으로 UnitTest++보다 낫다.
버전 관리 시스템
- Subversion
- Perforce
- CVS
- Borland StarTeam
- Microsoft Visual SourceSafe
- Team Foundation Server 2005
- Team Foundation Server 2008
- IBM Rational ClearCase (Base and UCM)
- StarTeam support
- Mercurial support (available as separate download)
이 정도면 어지간한 버전 관리 시스템은 다 지원하는 듯 하다. 20개 정도의 버전 관리 시스템을 지원하는 CruiseControl .NET에 비하면 부족하지만 말이다. 다만 TeamCity는 CruiseControl .NET과 달리 소스 코드의 변경 내역과 서로 간의 차이점(Diff)을 웹 인터페이스이나 IDE를 통해 보여준다.
통지
- 전자 편지
- Jabber/XMPP
- RSS
- 윈도우 시스템 트레이
통지 시스템은 CruiseControl .NET과 그리 다르지 않다. 사실 더 넣을 게 있나 싶다.
총평
두세 달 전에 TeamCity가 무료로 풀린 사실을 알았더라면 게임 서버 프로젝트에 적용했을 텐데 아쉽다. 그랬으면 직접 써보고 평가를 확실하게 내렸을 텐데 말이다. JetBrains사가 제공하는 문서를 읽고 받은 인상만 이야기해보자면 “상용 제품답다”. CruiseControl .NET과 비슷한 기능일지라도 UI가 깔끔하고 세세한 부분까지 신경 쓴 느낌이다. 여기서 설명하진 않았지만 상당히 세밀한 통계 정보를 그래프 형태로 보여주는 점도 좋다.
소규모 프로젝트나 오픈소스 프로젝트라면 TeamCity의 도입을 생각해보면 어떨까?
GoogleTest가 UnitTest++에 비해서 사소하게(…) 모자란 부분이 있긴하지만 여러가지로 우월(?)해서 저도 적용해서 쓰고 있습니다.
+ CruiseControl.NET 최신 버젼은 DIFF는 안 보여주지만 변경 내역은(commit log지만) 보여주게 바뀌었습니다. 하지만 저장소 커밋 전 테스트 기능 같은건 아직 orz
네. 변경 내역을 보여주게 됐지요. Trac 쓰면 사실 그다지 필요 없는 기능이지만 TeamCity쪽이 좀더 예쁘게 보여주네요.
개발할 때 사용하다 최근에는 기능 업데이트 내용만 블로그를 통해서 Feed하고 있었는데… 이 소식은 몰랐군요 ^^;
작은 프로젝트에 적용하기에는 최고의 솔루션인 것 같습니다.
TeamCity 써 보셨군요. 오픈소스 프로젝트 하는 거에 썼으면 좋았는데 좀 늦게 알아서 아쉽습니다. 직접 써보고 CCNET과 비교해봤으면 좋았을텐데요.