2012-07-02 2 views
2

시나리오 :MSBuild/TFS2008을 사용하여 비 데스크탑 빌드를 강제 실행하는 방법?

가 나는 TFS가 구축이 여러 목표를 오버라이드가 (TFS2008) : BuildNumberOverrideTarget, AfterGet, BeforeCompileConfiguration, AfterCompileConfiguration, AfterCompile, AfterDropBuild 및 AfterEndToEndIteration을. 모든 것이 잘 작동합니다.

하지만 이제는 모든 CI를 Jenkins 서버로 이식하고 있습니다.

/fileLogger /fileLoggerParameters:LogFile=TFSBuild_DesktopBuild.log;Create;Encoding=UTF-8;verbosity=normal /상세 :

정상 나는이 매개 변수를 사용하여 TFSBuild.proj를 호출하는 MSBuild에서 플러그인을 사용

문제 설명 :

내 문제는 사용자 지정 작업 중 일부가 실행되고 있다는 것입니다 : BeforeCompileConfiguration, AfterCompileConfiguration, AfterCompile.

위에서 보듯이 BuildNumberOverrideTarget, AfterGet, AfterDropBuild 및 AfterEndToEndIteration이 실행되어야합니다.

컴파일 작업 및 사용자 지정 작업 만 실행중인 것처럼 보입니다. TFS에서 트리거되는 빌드는 비 데스크탑 빌드로 처리되고 Jenkins에서 트리거되는 빌드는 데스크톱 빌드로 처리됩니다.

지금까지 시도한 내용.

로컬 .cmd 파일에서 빌드를 실행하면 동일한 문제가 발생합니다. 그래서 IsDesktopBuild 속성에 문제가 있다고 생각합니다. 이 msdn link의 추가 읽기 나에게

"수행 (그들이 사용할 수있는 경우) 만 컴파일 및 테스트"

을 읽을 때의 단서를 주었다.

/fileLogger /fileLoggerParameters:LogFile=TFSBuild_DesktopBuild.log;Create;Encoding=UTF-8;verbosity=normal /상세 : 일반 /부동산 그래서 나는 DesktopBuild을 강제로 재산을 자신을 추가하는 시도 : IsDesktopBuild = 사실

그러나 동작은 동일에만 실행 작업입니다 : BeforeCompileConfiguration, AfterCompileConfiguration, AfterCompile

그래서 제 질문은 두 배 :

  1. 사람은 명령 줄에서 데스크톱 빌드를 강제하는 방법을 알고?(/속성 : IsDesktopBuild = true으로 충분하지 않음)
  2. IsDesktopBuild가 문제가 아닌 경우 일부 사용자 지정 작업이 트리거되지 않는 이유에 대한 단서가 있습니까?

답변

1

데스크톱을 강제로 설치해서는 안됩니다. 사실, 반대 방향으로 향해야합니다 - 데스크톱이 아닌 빌드를 강요합니다.

데스크톱 빌드가 기본값입니다. 즉, 기본적으로 IsDesktopBuild = true를 의미합니다. 따라서 명시 적으로 설정할 필요가 없습니다.

TFS Build가 빌드를 수행하면 IsDesktopBuild에 false가 전달됩니다.

Jenkins가 TFS Build와 동일한 작업을 실행하게하려면 IsDesktopBuild에 false를 전달해야합니다. 대신 :

/fileLogger /fileLoggerParameters:LogFile=TFSBuild_DesktopBuild.log;Create;Encoding=UTF-8;verbosity=normal/상세 : 일반/부동산 : IsDesktopBuild = 사실

당신에게 IsDesktopBuild false로 설정해야

/fileLogger /fileLoggerParameters:LogFile=TFSBuild_DesktopBuild.log;Create;Encoding=UTF-8;verbosity=normal/상세 정상/속성 : IsDesktopBuild = 거짓

+0

그런 다음 어떻게 강제로 이러한 작업 (BuildNumberOverrideTarget, AfterGet, AfterDropBuild 및 AfterEndToEndIteration)을 실행해야합니까? –

+0

/속성 : IsDesktopBuild = false –

+0

/property : IsDesktopBuild = false 대상 (BuildNumberOverrideTarget, AfterGet, AfterDropBuild 및 AfterEndToEndIteration)을 실행하지 마십시오. –

0

원하는 대상을 명시 적으로 지정하는 이유는 무엇입니까? /t : BuildNumberOverrideTarget; AfterGet; BeforeCompileConfiguration; AfterCompileConfiguration 등 언급 한 매개 변수 외에?

관련 문제