2009-08-26 7 views
1

CruiseControl.NET 서버 1.5.0.4401이 실행 중입니다. 하나의 프로젝트는 exec-task를 통해 포함 된 외부 컴파일러를 사용합니다. 이 컴파일러는 아티팩트 디렉토리에있는 텍스트 파일에 출력을 작성하도록 구성됩니다. 이 파일의 구성은 % ccnetartifactdirectory % \ keil_ % ccnetlabel % .txt와 비슷하지만 파일 이름은 keil_Revision-x.txt (x는 개정 번호)입니다.빌드 출력을 첨부 파일로 포함합니다.

이 출력 파일을 CC가 각 빌드에 대해 보내는 전자 메일 보고서에 첨부하려고합니다. 이메일 발행인의 구성은 (조금 단축) 다음이다 :

<email from="[email protected]" mailhost="zzz" mailport="25" includeDetails="TRUE" useSSL="FALSE"> 
    <users> 
     <!-- Here are some users --> 
    </users> 
    <groups> 
     <!-- Here are some groups --> 
    </groups> 
    <converters> 
     <!-- LDAP converter--> 
    </converters> 
    <modifierNotificationTypes> 
     <!-- Several notification types --> 
    </modifierNotificationTypes> 
    <subjectSettings> 
     <!-- Here are some subject settings -->   
    </subjectSettings> 
    <attachments> 
     <file>${CCNetArtifactDirectory}\keil_${CCNetLabel}.txt</file> 
    </attachments> 
</email> 

유일한 문제는 파일이 첨부되지 않는다는 것이다. 크루즈 컨트롤 콘솔의 디버그 출력에는 오류 메시지가 없습니다. 이슈 디렉토리에는 모든 파일이 포함되며 첨부되지 않습니다. 실패한 부분은 어디입니까?

답변

2

CCNetLabel과 같은 통합 등록 정보는 CCNET 구성에서 사용할 수 있습니까? 나는 그것을 의심하기 위해 모험한다. CCNET 1.4.4 SP1까지는 그렇지 않았습니다. 따라서 CCNetLabel이 제대로 해석되었는지 확인하려면 프로젝트 구성에서 attachment 노드를 확인하십시오.

는이 같은 통합 특성을 대체 할 수있는 전처리 상수를 정의해야

당신은 이름이 CCNET 구성에 의한 예측 결과를 파일로 작성하는 컴파일러를 지시 할 필요가
<cruisecontrol xmlns:cb="urn:ccnet.config.builder"> 
    <cb:define project.artifact.dir="C:\foodir" /> 
    <project name="foo"> 
     <artifactDirectory>$(project.artifact.dir)</artifactDirectory> 
     ... 
     <publishers> 
      ... 
      <email 
       from="[email protected]" 
       mailhost="zzz" 
       mailport="25" 
       includeDetails="TRUE" 
       useSSL="FALSE"> 
       .... 
       <attachments> 
        <file>$(project.artifact.dir)\keil.txt</file> 
       </attachments> 
      </email> 
     </publishers> 
    </project> 
</cruisecontrol> 

. 구성에는 레이블에 대한 액세스 권한이 없으므로 파일 이름의 일부가 아니어야합니다. 각 빌드에서 결과 파일을 덮어 쓰지 않으려면 %ccnetartifactdirectory%\keil.txt%ccnetartifactdirectory%\keil_%ccnetlabel%.txt에 복사하는 간단한 배치 파일을 트리거하는 실행 가능 태스크를 추가하십시오.

그렇지 않으면 this question에 대한 대답이 도움이 될 수 있습니다.

+0

우리는 1.5.0을 실행 중이며이 파일에 올바르게 레이블을 지정하고 이슈 디렉토리 통합 속성에 저장하는 한 제대로 작동하는 것 같습니다. 포함 세부 정보는 이미 TRUE로 설정되어 있습니다. 내 개인적인 의심은 괄호 $ []가 잘못되었다는 것입니다. 그러나 $ []도 $ {}도 그 일을하지 않는 것 같습니다. – PVitt

+1

내가 말했듯이 : $ {CCNetLabel}은 전혀 작동하지 않습니다.이 시점에서 1.5가 1.4.4처럼 동작한다고 가정했습니다. 통합 등록 정보는 CCNET 구성 내에서 액세스 할 수 없습니다. 그 목적을 위해 자체 선행 처리 상수를 정의해야합니다. –

+0

좋아, 다음 문제가 있습니다. 일반적인 파일 이름 (예 : keil.txt를 사용하면 CruiseControl이 해당 파일을 열고 덮어 쓰지 않도록 파일을 닫지 않습니다. 바로이 때문에 파일 이름에 CCNetLabel을 넣을 수 있습니다. 아마도 내가 CC에 대한 버그로이 열린/가까운 것을 등록해야합니다. – PVitt

관련 문제