2011-01-12 6 views
0

CruiseControl으로 재미와 게임을 즐기십시오.CruiseControl : 변경되었지만 작업 복사본의 타임 스탬프는 변경되지 않았습니다.

내 Windows XP 컴퓨터에서 CruiseControl의 로컬 설치에 대한 Java 프로젝트를 준비했습니다.

내 config.xml 파일은 1 분마다 실행되며 개미 스크립트에서 내 프로젝트를 빌드합니다.

대시 보드의 "수정"탭에서 트렁크의 변경 사항을 감지 했음에도 불구하고 작업 복사본에서 영향을받는 파일의 날짜와 타임 스탬프를 볼 때 변경되지 않은 것을 알았습니다.

내 build.xml이 실행되는이 로컬 복사본이므로 CruzeControl이 변경을 감지하도록 내 config.xml이 올바르게 구성되어 있지만 Ant 스크립트가 작동중인 복사본에 대해 실행되지 않는 것이 걱정됩니다. 트렁크와 동기화.

내 구성 파일을 게시하면 누군가가 거기에 분명하게 들키지 만 나에게는 그렇지 않다는 희망을 갖게됩니다.

구성의 XML :

<?xml version="1.0"?> 
<cruisecontrol> 

    <dashboard url="http://localhost:8080/dashboard" postinterval="1" /> 

    <project name="myProject" requireModification="false"> 
     <listeners> 
       <currentbuildstatuslistener file="logs/myProject/status.txt"/> 
      </listeners> 

      <bootstrappers> 
      <svnbootstrapper file="build.xml" 
      username="cruise_control" password="password" 
       localWorkingCopy="projects\myProject" /> 
     </bootstrappers> 

     <modificationset> 
      <svn repositoryLocation="https://path/to/myTrunk" 
       localWorkingCopy="projects/myProject" 
       username="cruise_control" password="password"> 
       </svn> 
      </modificationset> 

      <schedule interval="60" > 
      <ant buildfile="build.xml" anthome="C:\Program Files\apache-ant-1.8.2" antWorkingDir="projects/myProject/" /> 
      </schedule> 

     <log> 
       <merge dir="C:\Program Files\CruiseControl\projects\myProject\reports\junit" pattern="TEST*.xml" /> 
     </log> 

     <publishers> 
      <artifactspublisher dir="C:\Program Files\CruiseControl\projects\myProject\dist" 
       dest="C:\Program Files\CruiseControl\artifacts\myProject" 
       moveInsteadOfCopy="true" /> 
     </publishers> 
    </project> 
</cruisecontrol> 

대시 보드 설정 파일 : 사전에

<dashboard> 
    <buildloop 
     logsdir="C:/Program Files/CruiseControl/logs/" 
     artifactsdir="C:/Program Files/CruiseControl/artifacts/" /> 
    <features allowforcebuild="true" /> 
    <trackingtool projectname="" baseurl="" keywords=""/> 
    <subtabs> 
     <subtab class="net.sourceforge.cruisecontrol.dashboard.widgets.ErrorsAndWarningsMessagesWidget" /> 
    </subtabs> 
</dashboard> 

감사합니다.

답변

0

IIRC Cruisecontrol은 저장소 변경을 감지하지만 작업 복사본을 자동으로 업데이트하지 않습니다. 따라서 빌드 스크립트에 작업 사본을 저장소의 변경 사항으로 업데이트하는 코드 (예 : svn update)가없는 빌드 스크립트가있을 수 있습니다.

+0

올바른 Raghuram입니다. SVNBootStrapper는 SVN 업데이트를 담당합니다. 이 작업을 올바르게 구성하지 않았습니다. – Ben

0

문제점을 발견했습니다. "파일"속성

<svnbootstrapper file="build.xml" 
      username="cruise_control" password="password" 
       localWorkingCopy="projects\myProject" /> 

을 만 주어진 파일을 모니터링 svnbootsraper 다음과 같이

내 부트 스트 래퍼이었다. 하나가 modificationset 속성은 SVN 업데이트를 수행한다고 가정하는 일반적인 실수로 나타납니다

<svnbootstrapper username="cruise_control" password="password" 
       localWorkingCopy="projects\myProject" /> 

:이 속성이 제거되면

는 부트 스트 래퍼는 전체 작업 복사본을 모니터링합니다. 실제로 리비전 번호의 증가분 만 수신합니다. SVN 업데이트를 수행하는 svnbootstrapper입니다.

희망이 있으면 도움이됩니다.

+0

사실 svnbootstrapper (http://cruisecontrol.sourceforge.net/main/configxml.html#svnbootstrapper)는 차례로 svn 업데이트 작업을 실행해야하는 단일 파일 (일반적으로 build.xml)을 업데이트하기위한 것입니다. 당신이 제안한 것은 효과가 있을지 모르지만 아마도 올바르지 않을 것입니다. – Raghuram

+0

"올바른"방법은 개미 스크립트가 실제 svn update 명령을하도록하는 것입니다. 또한 modificationset은 이미 repositoryLocation을 가지고 있기 때문에 localWorkingCopy를 무시할 것이고 두 가지를 모두 사용하는 것은 지원되지 않습니다. – MatsT

2

저는 Ben이 앞서 지적한 것과 같은 길이를 구성했습니다. 그러나 두 가지 문제가 발생했습니다.

  1. SVNBootsTrapper는 로컬 작업 복사본을 "처음으로"사용하지 않으면 내 로컬 작업 디렉토리를 업데이트하지 않습니다. 나는 커맨드 라인이나 ant 스크립트를 통해 명시 적 "svn checkout"을하거나 수동으로이 로컬 작업 디렉토리로 코드를 옮겨야한다. 그 후 "SVN Boots Trapper"는 저장소 변경으로 로컬 작업 디렉토리/사본을 업데이트 할 수 있습니다. 이것이 SVNBoots 트 랩퍼가 작동하는 방식입니까? 아니면 처음으로 리포지토리를 로컬 작업 복사본에 채우는 방식입니까?

2.I는

<bootstrappers> 
    <svnbootstrapper file="build.xml" localWorkingCopy="projects\myProject" /> 
</bootstrappers> 

없이 UID/비밀번호 필드를했다. 2.8.4 버전 이전의 내 오래된 Cruisecontrol에서는 제대로 작동합니다. 그러나 여기에 실패하고 나에게 묻는다 :

ProjectController를 - 'MyProject를'컨트롤러 : progress 이벤트를 구축 : SVNBootstrapper 부트 스트랩 - SVN : 비밀번호를

그리고 실패를 가져올 수 없습니다. 이 암호 문제를 해결할 수있는 유일한 방법은

a입니다. 사용자 이름과 비밀번호 속성을 추가하십시오 (Ben이 위와 같이).

b. cmd 라인 svn update 명령을 실행하고 프롬프트가 표시되면 uid/pwd를 제공하십시오. 그런 다음 '암호화되지 않은'비밀번호를 저장하려면 '예'라고 말합니다. 두 번째 문제에 대해 (a)와 (b) 두 가지 방법을 사용하는 방법이 있습니까?