2009-07-15 4 views
3

우리는 현재 CC.NET (CruiseControl.Net)에서 msbuild 출력을 포맷하지 않습니다. 결과적으로 깨진 빌드의 원인을 찾는 것은 XML을 읽음으로써 마지막 'success = "false"인스턴스를 산출.CruiseControl.Net에서 MsBuild XML 출력의 형식을 지정하는 데 사용하는 XSLT는 무엇입니까?

어떤 XSLT를 사용하여 msbuild 출력을 포맷하고 결과 HTML이 만족 스럽습니까? 나는. 깨진 빌드의 원인을 쉽게 파악할 수 있습니까?

감사 B

편집 : 는 여기에 우리의 CC 프로젝트 XML 요소 중 하나의 소독 샘플입니다. 이제 로그 병합이 문제인지 궁금해합니다.

<project name="StackOverflowSample"> 
    <workingDirectory>D:\_300</workingDirectory> 
    <webURL>&viewFarmReportWebURL;</webURL> 
    <sourcecontrol type="multi"> 
     <sourceControls> 
      <vsts> 
       <!-- We get latest from TSF --> 
      </vsts> 
     </sourceControls> 
    </sourcecontrol> 
    <triggers> 
     <intervalTrigger seconds="60" /> 
    </triggers> 
    <tasks> 
     <msbuild> 
      <executable>&msbuildExecutable;</executable> 
      <workingDirectory>app\consoleApp1</workingDirectory> 
      <projectFile>consoleApp1.sln</projectFile> 
      <buildArgs>/noconlog /p:Configuration=Release /v:quiet</buildArgs> 
      <logger>ThoughtWorks.CruiseControl.MsBuild.XmlLogger,"D:\Program Files\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MsBuild.dll"</logger> 
     </msbuild> 
     <nunit> 
      <path>&nunitConsoleExecutable;</path> 
      <assemblies> 
       <assembly> D:\_300\app\consoleApp1\bin\Release\consoleApp1.exe</assembly> 
      </assemblies> 
     </nunit> 
     <exec> 
      <executable>&ncoverExecutable;</executable> 
      <buildArgs>"&nunitConsoleExecutable;" "app\consoleApp1\bin\Release\consoleApp1.exe" /nologo</buildArgs> 
     </exec> 
     <exec> 
      <executable>&ndependExecutable;</executable> 
      <buildArgs>D:\_300\app\consoleApp1.xml /Silent</buildArgs> 
     </exec> 

     <merge> 
      <files> 
       <file>D:\_300\app\consoleApp1\unit-test.xml</file> 
       <file>D:\_300\app\consoleApp1\ApplicationMetrics.xml</file> 
       <file>D:\_300\app\consoleApp1\AssembliesBuildOrder.xml</file> 
       <file>D:\_300\app\consoleApp1\AssembliesDependencies.xml</file> 
       <file>D:\_300\app\consoleApp1\AssembliesMetrics.xml</file> 
       <file>D:\_300\app\consoleApp1\CQLResult.xml</file> 
       <file>D:\_300\app\consoleApp1\InfoWarnings.xml</file> 
       <file>D:\_300\app\consoleApp1\NDependMain.xml</file> 
       <file>D:\_300\app\consoleApp1\TypesDependencies.xml</file> 
       <file>D:\_300\app\consoleApp1\TypesMetrics.xml</file> 
      </files> 
     </merge> 
    </tasks> 
    <publishers> 
     <merge> 
      <files> 
       <file>D:\_300\app\consoleApp1\SymbolModule.Xml</file> 
      </files> 
     </merge> 
     <xmllogger logDir="." /> 
     &emailconsoleApp1; 
    </publishers> 
</project> 

답변

1

대화 후 개발자는 (내가 링크 된 대체 로거가 꽤 오래되어 사용법이 권장되지 않는다고 들었습니다.) 기본, 표준 로거 및 xslt를 사용하고 있습니다. 문제가 발생하면 CruiseControl.Net Jira에 버그를 신고하십시오. 더 많은 사람들이 코드에 대한 커밋 권한이있는 사람이 빠를수록 더 많은 사람들이 이에 대해 투표 할 수 있습니다.

"빌드 로그보기"는 빌드 서버 설정을 디버깅하는 것 외에는 사용할 수없는 원시보기입니다. 일부 프로젝트에서는이 크기가 거의 5MB이며 서버를 열어도 아무런 문제가 발생하지 않습니다. 잠시 동안). NCover를 사용하면 buildlog.xml을 100MB 이상으로 늘리는 데 문제가 발생할 수 있습니다.이 경우 NCoverExplorer를 사용하여 병합하기 전에 NCoverExplorer를 사용하여 결과를 분석해야만 서버에서 예외가 발생하기 전에 신경 쓰지 않아도됩니다.

WebDashboard에서 서식이 지정된 MSBuild 결과를 보려면 대시 보드 구성에 msbuild.xsl이 포함되어 있는지 확인하십시오 (그러면 ViewBuildReport 페이지의 "MSBuild Report"에 대한 링크가 제공되고 페이지 자체에 대한 기본 정보가 포함될 것입니다).

+0

감사합니다. 나는 당신의 대답에 대해 찬성표를 던졌지 만 나는 그것을 해결책으로 표시 할 수는 없다 ... 아직.;) 제공된 링크를 열어 조사 할 것입니다. 커스텀 로거는 좋은 접근 방법이라고 생각합니다. 왜냐하면 내가 작성한 것보다 노이즈를 필터링하여 CI 서버에서 더 빨리 그리고 덜 소모되는 훨씬 작은 로그를 생성 할 수 있기 때문입니다. –

+0

필자는 완전히 이해하지 못했습니다. '기본'로거는 여전히 CCNet 전용으로 작성된 사용자 정의입니다. 로드 메이어 (Rodemeyer)의 성능이 더 좋다면, 아마도 배포판의 '기본'을 대체해야합니다. 그러나 대부분의 위키 기사는 구식입니다. ThoughtWorks.CruiseControl.MsBuild.XmlLogger는 더 이상 그런 왜곡 된 결과를 가져 오지 않습니다. – skolima

+0

이것에 대한 고집에 감사드립니다. 정말 감사. 웹 대시 보드에서 "Build Build Log"를 선택하면 XML의 MASS가 표시됩니다. 그것은 msbuild 출력, NUnit 출력, 그리고 NCover와 NDepend의 XML 몬스터로 시작합니다. 이게 진짜 문제 야? msbuild 출력에 대한 링크가 있어야합니까? 출력을 병합하지 않아야합니까? 프로젝트 xml로 질문을 업데이트하여 우리가하는 일을보다 자세하게 볼 수 있습니다. –

1

그것은 내 자신의 질문에 대답 이상한 조금 느낌이 있지만, 누군가가 같은 질문이 그래서 여기가 내 대답을 감사 할 수있는 기회가있다.

일반 로거와 다른 로거 사용에 대해 설명하는 다음 페이지 http://confluence.public.thoughtworks.org/display/CCNETCOMM/Improved+MSBuild+Integration을 방문했습니다 (일반 로거는 XSLT 변환을 수행 할 때 서버가 다운되는 매우 큰 파일을 생성합니다).

이 페이지는 로거와 XSLT 파일을 CC.Net 프로젝트에 통합하는 방법에 대한 간단하고 명확한 지침과 함께 제공합니다. 이 로거와 XSLT를 시도해 본 결과 아직 원시 XML을 얻고있는 것을 발견했습니다. 실제로 모든 XML이 하나의 거대한 페이지에 결합되었습니다.

2

나는 msbuild2ccnet.xsl와 결합 로거로 Rodemeyer.MsBuildToCCnet.dll 1.0.0.5CruiseControl.Net 1.4.4.83을 시도했습니다, 출력 기사의 출력 샘플처럼 아무것도 없다 :

Build started 
Project "" (Integration.Common.csproj target(s)): 
error CS1002: 
Build succeeded 
error CS1002: 
1 Error(s) 
0 Warning(s) 
Time elapsed 

msbuild.xsl와 결합 로거 ThoughtWorks.CruiseControl.MSBuild.dll을 사용하여 결과가 잘되어 :

Build started 07/16/2009 13:46:38 
Person.cs (18,53): error CS1002: ; expected 
Build FAILED 
Person.cs (18,53): error CS1002: ; expected 
1 Error(s) 
0 Warning(s) 
Time elapsed 00:00:00 
관련 문제