2010-01-06 4 views
5

방금 ​​CruiseControl.NET을 사용하기 시작했으며 NAnt 및 NUnit 출력 병합이 작동하지 않는 이유를 이해하는 데 문제가 있습니다.빌드 보고서에 NUnit 및 NAnt 출력을 병합하십시오.

<merge> 
    <files> 
    <file>D:\ccnet\path1\nant-results.xml</file> 
    <file>D:\ccnet\path2\TestResult.xml</file> 
    </files> 
</merge> 
<xmllogger /> 

은 NAnt와 ccnet 절반 작업은 다음과 같습니다 : 나는 의도적으로 코드 오류에 넣어 경우, 다음 ccnet 빌드가 실패 말할 것이다 구글에 발견 나는 전형적인 값으로 설정 내 ccnet.config을했습니다. 고의적으로 실패한 테스트를 수행하면 같은 결과가 발생합니다. ccnet은 빌드가 실패했다고 말합니다.

문제는 ViewBuildReport.aspx 페이지가 NAnt 또는 NUnit의 출력을 표시하지 않는다는 것입니다.

분명히 뭔가를 놓치고 있어야하지만 분명하지 않습니다. 어떤 아이디어?

답변

1

해당 블록이 게시자 섹션에 있습니까? 나는 게시자 태그를 놓친하지만 아무것도 해결되지 않은 추가했다

<publishers> 
     <merge> 
      <files> 
       <file>*-results.xml</file> 
      </files> 
     </merge> 
     <xmllogger /> 
    </publishers> 
0

:

여기처럼 내 출판사 중 하나가 모습입니다.

ccnet에서 nant 및 nunit을 호출하는 가장 좋은 방법은 무엇입니까? 현재 내가 원하지 않는 설정이 있습니다 :

ccnet with nant 작업이 있고 nant 빌드 파일은 msbuild 및 nunit2 작업을 사용하여 컴파일하고 테스트합니다.

ccnet, nant 및 nunit의 예를 찾기가 어렵지만 모두 함께 사용하는 가장 좋은 방법을 설명합니다. ccnet을 서비스로 실행하고 있는데 차이가 있습니까? 내가 할 수있는 한 간단하게하기 위해 노력하고있어,이 내가 뭘 대략 무엇 :

을 ccnet.config :

<target name="build" depends="clean"> 
<msbuild project="name.sln"> 
</msbuild> 
</target> 

<target name="test" depends="build"> 
<nunit2> 
<formatter type="Xml" usefile="false" /> 
<test assemblyname="Tests\path\name.dll" /> 
</nunit2> 
</target> 

:

<tasks> 
<nant> 
<baseDirectory>D:\ccnet\builds\checkout\path</baseDirectory> 
<buildFile>go.build</buildFile> 
<targetList> 
<target>test</target> 
</targetList> 
</nant> 
</tasks> 

<publishers> 
<merge> 
<files> 
<file>D:\ccnet\builds\artifacts\path1\nant-results.xml</file> 
<file>D:\ccnet\builds\checkout\path\name.dll-results.xml</file> 
</files> 
</merge> 
<xmllogger /> 
</publishers> 

그리고 go.build에서

대시 보드에서 빌드 로그를 확인하면 nant와 nunit의 xml 출력을 볼 수 있습니다. 그러나 이것은 대시 보드 자체에 표시되지 않습니다. 그 이유는 무엇입니까? 이것은 매우 초조하게 될 것입니다 ...

나는 자동 매직 ccnet 접근법 (그냥 usefile = "false"를 설정하고 ccnet이 그 일을하도록 두 가지 접근법을 시도했습니다). 이것은 작동하지 않았다.

수동 방법을 사용해도 usefile = "true"로 설정 한 다음 nant-results.xml 및 name.dll-results.xml 파일을 병합합니다 (와일드 카드를 사용하지 않고 파일의 정확한 경로 만 사용). 트리플 검사)

그냥 모든

+0

NAnt에서 MsBuild를 호출하면 NAnt를 삭제하고 MSBuild를 직접 사용하는 것이 어떻습니까? cc.net에서 직접 MSBuild를 호출 할 수 있습니다. –

+0

나는 그것을 잘못하고있을 수 있습니다 :) 그 아이디어는 ccnet에서 실행될 수있는 하나의 nant 스크립트를 가지고 있으며 또한 사전 체크인 스크립트와 동일한 스크립트를 실행할 수 있습니다 (아무도 확인하지 않도록 빌드를 망가뜨리는 물건에). 여전히 출력이 대시 보드에 표시되지 않는 이유를 설명하지 못합니다. –

+0

내가 볼 수있는 한,이 페이지는 은 Nant 출력이 기본적으로 렌더링 될 것이라고 말합니다 ("NAnt output in Xml"절 참조) "). 그러나 그것은 결과가 나오지 않을 때 무엇을해야하는지에 대해서는 말하지 않습니다. nunit2의 usefile = "false"속성을 사용하면 xml도 자동으로 구문 분석된다는 메시지가 표시되는 동일한 URL에 "NUnit and NAnt"섹션이 있습니다. 그러나 이것은 나에게도 일어나지 않습니다. –

6

알버트에 어떤 이해가되지 않습니다 -. 내가 요구 한 후 실수로 대답에게 약간의 시간을 발견했다. 이것은 ccnet의 동작 인 것 같습니다 즉시 상자. 따라서 기본적으로 웹 대시 보드에 컴파일 결과가 표시되지 않습니다.

\ CruiseControl.NET \ webdashboard \ dashboard.config 파일을 찾고 buildReportBuildPlugin 섹션에 compile.xsl을 추가해야합니다.다음과 같이 추가됩니다 :

<buildPlugins> 
    <buildReportBuildPlugin> 
    <xslFileNames> 
     <xslFile>xsl\header.xsl</xslFile> 
     <xslFile>xsl\unittests.xsl</xslFile> 
     <xslFile>xsl\modifications.xsl</xslFile> 
     <xslFile>xsl\NCoverSummary.xsl</xslFile> 

     <xslFile>xsl\compile.xsl</xslFile> 

    </xslFileNames> 
    </buildReportBuildPlugin> 
    <buildLogBuildPlugin /> 
    <xslReportBuildPlugin description="NCover Report" actionName="NCoverBuildReport" xslFileName="xsl\NCover.xsl"></xslReportBuildPlugin> 
</buildPlugins> 

설명서가 매우 나빴으며, 다른 것을 찾을 때 우연히 발견했습니다. 나는 ccnet 사이트의 작은 문서 나 예제가 몇 분 안에이 문제를 해결했을 때 너무 많은 시간을 낭비하게되어 기뻤다.

+1

이 변경 후 iisreset을 실행하여 iis를 다시 시작하여 변경 사항을 적용하십시오. :) –

관련 문제