MSBuild로 똑똑하게 빌드하기

  • Post author:
  • Post category:
  • Post comments:0 Comments
  • Post last modified:October 8, 2007

지난 편에서는 고통과 좌절을 경험했다. 머리를 아무리 싸매도 해결책이 안 떠올라서 좌절하던 중에 다른 분과 이야기를 나누다가 멋진 해법을 알게 됐다.

요컨대 Build만 하고 Rebuild는 하지 않는 게 가장 간단하고 직관적인 해결책이다. Build가 깨진 경우엔 CCTray에 빨간불이 들어온다. 개발자가 로그를 보고 이건 Rebuild하면 될 것 같은데?라고 판단한다. Force Build 버튼을 눌러 다시 빌드한다.

이때 요점은 평소에는 Build를 하다가 사용자가 직접 Force Build 버튼을 눌렀을 때만 Rebuild를 하게 만드는 것이다. 다행히 CruiseControl .NET은 이와 관련된 정보를 MSBuild로 넘겨준다.

MSBuild 스크립트는 이런 형태를 취한다.

<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Choose>
	<When Condition=" '$(CCNetBuildCondition )'=='IfModificationExists' ">
		<PropertyGroup>
			<BuildConditionForCI>Build</BuildConditionForCI>
		</PropertyGroup>
	</When>
	<Otherwise>
		<PropertyGroup>
			<BuildConditionForCI>Rebuild</BuildConditionForCI>
		</PropertyGroup>
	</Otherwise>
</Choose>

<Target Name="BuildForCI">
	<Message Text="$(BuildConditionForCI) 조건에서 빌드를 시도합니다. " Importance="high"/>
	<MSBuild
	   Projects = "@(ProjectReferences)"
	   Properties = "Configuration=Debug"
	   Targets = "$(BuildConditionForCI)"
	   StopOnFirstFailure = "true"
	   ContinueOnError="false">
	</MSBuild>
</Target>
</<Project>
Kubernetes, DevSecOps, AWS, 클라우드 보안, 클라우드 비용관리, SaaS 의 활용과 내재화 등 소프트웨어 개발 전반에 도움이 필요하다면 도움을 요청하세요. 지인이라면 가볍게 도와드리겠습니다. 전문적인 도움이 필요하다면 저의 현업에 방해가 되지 않는 선에서 협의가능합니다.
follow me
  • 싸이월드 법인가 뭔가 화제였는데 이런 게 훨씬 현실적인 접근이다 https://t.co/fSB9LiMYzO
    24 hours ago
  • 시장을 좋게 보는 사람을 좋게 볼 근거를 찾고 그렇지 않은 사람은 나쁘게 볼 근거만 열심히 찾네. 그 반대로 해야 얻는 게 있을텐데
    1 day ago
  • 일본이 liberal country 라는 말이 마음에 걸리네 https://t.co/aLteP9gEE8
    2 days ago
Buy me a coffeeBuy me a coffee
×
Kubernetes, DevSecOps, AWS, 클라우드 보안, 클라우드 비용관리, SaaS 의 활용과 내재화 등 소프트웨어 개발 전반에 도움이 필요하다면 도움을 요청하세요. 지인이라면 가볍게 도와드리겠습니다. 전문적인 도움이 필요하다면 저의 현업에 방해가 되지 않는 선에서 협의가능합니다.
Latest Posts