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>
Author Details
Kubernetes, DevSecOps, AWS, 클라우드 보안, 클라우드 비용관리, SaaS 의 활용과 내재화 등 소프트웨어 개발 전반에 도움이 필요하다면 도움을 요청하세요. 지인이라면 가볍게 도와드리겠습니다. 전문적인 도움이 필요하다면 저의 현업에 방해가 되지 않는 선에서 협의가능합니다.
0 0 votes
Article Rating
Subscribe
Notify of
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments