애자일 방법론들을 가만히 보면 몇가지 공통 사항이 있다.

가장 특징적인 하나는 TDD(Test Driven Developing)이고 다른 하나는 CI(Continuous Inegration)이다.

전자는 일단 범위도 넓고, 중요도도 무척 높지만, 여기까지 언급하기에는 범위외이기 건너간다.

 

CI란  지속적인 통합 빌드로 주기적으로 계속 통합하여 빌드를 유지하는 것이다.

이게 중요한데, 개인이 만드는 소프트웨어에 자신의 IDE 도구들을 사용하여 필요할 때마다 빌드를 하고 테스트를 하겠지만,

팀 단위의 개별 개발을 할 때는 전혀 다른 문제다. 대부분 CI를 하지 않는 곳에서는  BingBang 빌드라고 하여,

특정시점(중간 통합 단계)에 다른 이들의 코드를 한꺼번에 싣는 작업을 수행하곤 한다. 운좋으면 짧은 시간에 완성할 수 있겠지만,

대부분은 컴파일 부터 오류가 발생되어 모두 나자빠지고 그 부분의 수정에 온 힘을 기울이게 된다.

(특히 의존성이 높은 클래스나 컴포넌트의 수정으로 인해 발생되는 오류들이 무척 많은 편이다.)

그렇다고, 매번 누군가가 최신버전을 다운 받은 후 매일 매일 빌드하는 짓도 곤혹스럽다. 바로 이런 작업을 수행하는 도구를 필요로 했다.

 

맨 처음에는 이 도구를 개발할까 생각했다.

혼자 이런 저런 기능을 파악하고, Visual Studio의 프로젝트 파일을 열어 이런 저런 조사를 하면 뭔가 나오지 않을까 했다.

하지만, 생각보다 내용도 많고, 범위도 컸다. 최소한의 기능만으로 만든다고 해도, SCRUM - 30d 기준으로 2~3 sprint(약 3달)정도의

개발 공정이 필요했다. 게다가 당장 확장을 하려면 이 또한 큰 작업이 될 공산이 컸다.

이 때 우연히 찾은 도구가 있는데, 바로 CruiseControl.NET 이였다.

 

링크 따라가기

아무 생각 없이 찾았던 도구인데, 링크에 링크를 따라가다 찾게 되었다.

맨 처음에는 SCRUM 관련 자료를 찾는 도중 애자인 인 여의도라는 블로그에서 허드슨(CS Server Hudson) 이라는 도구를 보여주었다.

이건 뭐야 하는 마음에 허드슨 관련 자료를 찾다가 이번엔 Toby's Epril 이라는 블로그를 통해  Atlassian 이라는 회사를 알게 되었다.

이건 또 뭐야 하면서 무슨 솔루션 이름인 줄 알았는데 알고 보았더니 각종 제품 및 도구를 만드는 회사였다.
게다가 이번에 읽고 있는 Scrum and XP from the Trenches에 보면 각 Sprint와 Task 정보를 Jira 라는 도구로 일부 저장 관리 한다고 했다.

Jira라는 도구를 만든 회사가 바로 이 Atlassian 이라는 회사였다.  이번에는 이 회사에서 만든 CI 도구가 있는데,

애석하게도 라이센스가 있었다. 가격을 지불해야 했고, 몇가지 조정적인 작업이 필요했다.

지금 있는 회사에서도 범용적으로 빌드 관리할 때 사용되는 Build Forge라는 제품을 판매하고 있다. - 즉 굳이 이런 도구 찾을 필요는 없었을 것이다. -

 

하지만, 애석하게도 그 놈의 Build Forge가 다양한 플랫폼에 다양한 형태의 Build를 제공해야 하기 때문에, 조작이 감이 딱 오지 않았다.

더 결정적인 것인 그 놈의 툴의 가격이 예술을 넘어 사치품에 가깝게 만들어 버렸다. 많아봐야 나 혼자쓰는데 이건 좀 너무 하다 싶었다.

 

결국 Atlassian에서 만든 CI나 Build Forge나 일단, 가볍게 동작하며 라이센스에 연연하지 않아도 될법한 제품을 찾아야 됬다.

어차피 개인 내지 많아봐야 1~2명만 쓸 예정이기에 굳이 다양한 기능 보다는 어느 정도 통합빌드를 지속적으로만 할 수 있으면 되겠다는 생각에 찾기 시작했다.

검색어를 Continuous Integration .NET 으로 찾아보았고,

그 결과 찾은 것이  CruiseControl.NET 이였다.

 

특징.

일단 Open Source License 정책을 가지고 있다. 그래서 배포나 구성에 있어 제약이 없었다. 그리고 .NET 기반의 프로젝트를 간단하게 빌드 할 수 있고,

설치 프로그램도 의외로 작았다. 다양한 버전 관리 도구들과 연결 되어 Build 전 최신 버전, Base Line의 Source를 알아서 가져와, 필요할 때 원하는 만큼

Build를 수행할 수 있다. 다양한 외부도구들을 지원해 가장 마음에 드는게 바로 Tray Icon으로 나오는 CCTray라는 프로그램이였다.

필요시 원격에서 강제로 Build를 할 수도 있고, 현재 맨 마지막 Build 결과도 바로 확인할 수 있다.

관리자들이 참 좋아하는 빌드 깨트린 자가 누구인지도 명확히 찾을 수 있다. ㅋ

 

다운 받는 곳.

CCNet은 SourceForge 중 CCNet 프로젝트에서 다운 받는다.

    http://confluence.public.thoughtworks.org/display/CCNET/Welcome+to+CruiseControl.NET

각 버전 별로 나열되어 있는데, 특정 버전을 선택하면 아래 쪽에 관련 프로그램 별로 다운 받을 수 있는 링크들이 나온다.

CruiseControl.NET-1.X.X-Setup.exe 라고 적힌 파일이 바로 이 CCNet 서버의 내용으로 이 파일은 반드시 다운 받도록 한다.

CruiseControl.NET-CCTray-1.X.X-Setup.exe라고 적힌 파일도 다운 받는데, 이 파일이 원격에서 CCNet 서버의 정보를 확인하거나 강제 빌드 시킬 수 있도록 하는 실시간 원격 확인 도구이다.

 

일단 위의 파일들이 준비되었으면 이번에는 CCNet 설정을 쉽게 도와주는 도구인 CCNet Config라는 도구를 다운받는다.

  http://ccnetconfig.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=17322#DownloadId=43769

CCNet 서버 설정은 모두 XML 형식으로 정의하게 끔 되어 있는데, 처음부터 이 XML 형식의 내용을 넣기에는 메뉴얼 보면서 넣기가 영 귀찮고 힘들다.
(어느정도 익숙해지면 쉽다고는 하는데, 그닥... 감은 안온다.) 그래서 위의 도구를 다운 받아 설치하도록 한다.

 

 

이 글은 스프링노트에서 작성되었습니다.

728x90

+ Recent posts