Cruise Control.Net 설치 DarkKaiser, 2008년 1월 10일2023년 9월 6일 CruiseControl 홈페이지 : http://cruisecontrol.sourceforge.net/CruiseControl.Net 홈페이지 : http://confluence.public.thoughtworks.org/display/CCNET/Welcome+to+CruiseControl.NET 가정 소스버전관리시스템으로는 Subversion을 사용한다. 개요CruiseControl.Net은 CI(Continuous Integration)를 위한 빌드 자동화를 구축하기 위해서 필요한 자동 빌드 툴이다 CI 시스템 구축 .NET Framework SDK를 설치한다.Windows Installer를 실행시키기만 하면 된다. NUnitWindows Installer를 실행시키기만 하면 된다. NAnt 원하는 경로에 압축파일을 푼다. 여기서는 “C:\Program Files\ant-0.85-rc2″에 압축을 풀었다. [제어판->시스템->고급->환경변수->시스템환경변수->새로 만들기]에서 변수 이름 NANT_HOME, 변수값 C:\Program Files ant-0.85-rc2을 추가한다. [제어판->시스템->고급->환경변수->시스템환경변수->PATH]에 %NANT_HOME%;bin 을 추가한다. CruiseControl.Net CruiseControl.NET-1.0-Setup.exe 을 설치한다. 여기서는 기본설치경로 “C:\Program Files\CruiseControl.NET\”을 선택했다. CruiseControl.NET-CCTray-1.0-Setup.exe 을 설치한다. C:\Program Files\CruiseControl.NET\server\ccnet.config 을 메모장으로 연다. 프로젝트 설정을 추가한다. [관리도구->서비스->CruiseControl.NET Server->등록정보]에서 시작유형 ‘자동’, 서비스 상태 ‘시작’으로 설정한다. CCTray CCTray를 실행시킨다. 바탕화면에 바로가기가 만들어져 있을 것이다. [File->Settings->Add]로 들어가면 ‘Add Server’라는 버튼이 보인다. 버튼 옆의 텍스트 박스에 localhost를 써넣고, 버튼을 클릭한다. 앞서 ccnet.config에 추가한 프로젝트의 이름이 보일 것이다. 이제 ‘OK’ 버튼을 클릭하면 된다 WebDashBoard CruiseControl .NET은 웹인터페이스를 제공한다. CCTray에서 원하는 프로젝트를 선택하고, 마우스 오른쪽 버튼을 클릭한다. 그러면 ‘Display Web Page’ 메뉴가 있다. 보통 http://localhost/ccnet4 으로 접속하면 웹인터페이스를 볼 수 있다. 만약 여러개의 사이트를 운영하는 IIS서버라면, 수작업으로 C:\Program Files\CruiseControl.NET\webdashboard 를 응용프로그램으로 등록하면 된다. 설치– 대시보드는 웹서버를 필요로 하므로 IIS를 먼저 설치하도록 한다. 설치 후 대시보드에 접속하였을 때, 아래와 같은 메시지가 출력된다면…If IIS was installed after the .NET framework, you will need to either run aspnet_regiis.exe or open IIS manager, right-click the ccnet website, select properties and then the ASP.NET tab. Make sure the ASP.NET version has something displayed in the dropdown (eg. .NET 2.0, 2.0.50727) and click OK.다음과 같이 해결할 수 있다.1. ASP.NET 설치한다.C:\WINDOWS\Microsoft.NET\Framework64\v2.0.50727\aspnet_regiis.exe -I2. [IIS 관리자 – Web Service Extensions]에서 ASP.NET 활성화시킨다.3. IIS 관리자에서 ASP.NET 버전 선택해준다. 여기선 2.0을 골랐다. 참고사항 NAnt build 파일이 없고, VS.NET Solution 파일만 있다면 어떻게 해야 하나?NAnt는 VS.NET Solution을 지원한다. <?xml version="1.0" ?> <project> <solution configuration="debug" solutionfile="xxxxx.sln" /> </project> 기본 설정 파일 <cruisecontrol> <project> <name>Project Name</name> <webURL>http://domain/ccnet-</webURL> <workingDirectory>c:\src\projectname</workingDirectory> <triggers> <intervalTrigger seconds="60"/> </triggers> <modificationDelaySeconds>2</modificationDelaySeconds> <sourcecontrol type="svn"> <trunkUrl>http://domain/svn/projectname/trunk</trunkUrl> <username>username</username> <password>password</password> </sourcecontrol> <tasks> <devenv> <solutionfile>C:\src\projectname\vs2005\solution.sln</solutionfile> <configuration>Debug</configuration> <buildtype>Build</buildtype> <executable>C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\devenv.exe</executable> </devenv> </tasks> </project> </cruisecontrol> CruiseControl .NET과 UnitTest++의 연동UnitTest++ 사이트에서 제공하는 Money 프로젝트7를 사용해 실험해보기로 한다. 이번엔 CruiseControl .NET의 설정 파일(ccnet.config) 뿐만 아니라 단위 테스트 프로젝트의 main() 함수도 고쳐야 한다. <cruisecontrol> <project> <name>Money</name> <webURL>http://domain/ccnet</webURL> <workingDirectory>c:\src\Money</workingDirectory> <triggers> <intervalTrigger seconds="60"/> </triggers> <modificationDelaySeconds>2</modificationDelaySeconds> <sourcecontrol type="nullSourceControl"> </sourcecontrol> <tasks> <devenv> <solutionfile>C:\src\Money\MoneyTestApp.sln</solutionfile> <configuration>Debug</configuration> <buildtype>Build</buildtype> <executable>C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\devenv.exe</executable> </devenv> <exec> <executable>MoneyTestApp.exe</executable> <buildArgs>C:\src\Results.xml</buildArgs> <baseDirectory>C:\src\Money\bin\</baseDirectory> <buildTimeoutSeconds>10</buildTimeoutSeconds> </exec> </tasks> <publishers> <merge> <files> <file>C:\src\Results.xml</file> </files> </merge> <xmllogger/> <statistics/> </publishers> </project> </cruisecontrol> 테스트이니 소스 코드 관리 시스템은 쓰지 않는다고 치자. CruiseControl .NET이 UnitTest++을 지원하지 않기 때문에 exec 태스크를 사용해서 테스트를 실행시킨다. 이때 테스트 코드의 main() 함수는 다음과 같다. 출력 결과를 저장할 파일 이름이 인자로 들어오면 XML로 보고하고, 아니면 콘솔에 출력한다. 이렇게 하면 VS 2005와 연동하고 동시에 CruiseControl .NET과도 연동할 수 있다 include "UnitTest++.h" include "TestReporterStdout.h" include "XmlTestReporter.h" include <fstream> include <vector> include <string> int main(int argc, char const ** argv) { std::vector<std::string> args; if(argv) { while(argv != NULL) { args.push_back(argv); argv ++; } } if(args.size() == 1) { UnitTest::TestReporterStdout reporter; return UnitTest::RunAllTests(reporter, UnitTest::Test::GetTestList(), 0); } std::ofstream f(args[1].c_str()); UnitTest::XmlTestReporter reporter(f); return UnitTest::RunAllTests(reporter, UnitTest::Test::GetTestList(), NULL, 0); } CruiseControl .NET이 UnitTest++을 지원하지 않기 때문에 테스트 결과를 제대로 출력하려면 C:\Program Files\CruiseControl.NET\webdashboard\xsl\unittests.xml파일을 수정해야 한다. 250줄 가량 되기 때문에 파일은 첨부한다. 여기서 unittest__가 들어간 곳이 수정된 부분이다.unittest_for_cc_net.xml.xml CruiseControl.NET이나 nAnt에서 한글문제만약 폴더이름이나 Visual Studio 프로젝트이름에 한글을 사용하여서 ccnet project설정이나 nAnt build 설정안에 한글이 들어가야 된다면 설정파일을 메모장을 사용하여 UTF-8 encoding으로 저장하고 다음과 같이 XML선언부에 encoding을 UTF-8으로 설정해 주면된다. <?xml version=”1.0″ encoding=”utf-8″?> 프로젝트 관리 CruiseControl.NET프로젝트관리CI