CruiseControl.net에서 CCNetArtifactDirectory 문제 해결

자동화된 빌드 시스템을 설정하는 것은 까다로울 수 있으며, 특히 플랫폼 특유의 구성으로 인해 어려움이 생길 수 있습니다. 개발자들이 직면하는 일반적인 문제 중 하나는 CruiseControl.netMSBuild 작업을 통합하는 것입니다. 이 블로그 포스트는 CCNetArtifactDirectory를 효과적으로 사용하는 방법을 명확히 하여 불필요한 프로젝트 파일 수정을 피하면서 빌드 출력을 올바르게 관리하는 것을 목표로 합니다.

문제 이해하기

CruiseControl.net을 설정하는 동안 MSBuild 작업 구성과 관련하여 문제를 만났을 수도 있습니다. 여기서 주요 질문은 다음과 같습니다:

내 빌드 프로세스에 오류를 발생시키지 않고 MSBuild 내에서 CCNetArtifactDirectory를 효과적으로 활용하려면 어떻게 해야 할까?

혼란이 발생하는 이유는 CCNetArtifactDirectory가 MSBuild에 자동으로 전달되어야 하지만, 많은 사용자들이 빌드 인수에서 이를 올바르게 참조하지 못하기 때문입니다. 자주 발생하는 오류는 다음과 같습니다:

ThoughtWorks.CruiseControl.Core.Config.Preprocessor.EvaluationException: Reference to unknown symbol CCNetArtifactDirectory

해결책을 알아봅시다.

해결책

CCNetArtifactDirectory에 대해 걱정하지 마세요

좋은 소식은 MSBuild 명령어에서 CCNetArtifactDirectory를 직접 지정할 필요가 없다는 것입니다. 기본적으로 CruiseControl.net은 이 디렉토리를 MSBuild에 전달하며, MSBuild는 구성에서 지정한 작업 디렉토리를 기반으로 빌드 출력을 적절한 위치에 배치합니다.

다음은 예시 구성입니다:

<executable>c:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe</executable>
<workingDirectory>C:\data\projects\FooSolution\</workingDirectory>
<projectFile>FooSolution.sln</projectFile>
<buildArgs>/noconsolelogger /p:Configuration=Debug</buildArgs>

출력 위치

위 구성을 사용하면, 빌드의 출력은 다음 위치로 전송됩니다:

C:\data\projects\FooSolution\[ProjectName]\bin\Debug

이는 CCNetArtifactDirectory를 지정하지 않아도 아티팩트가 올바르게 생성된다는 것을 의미합니다.

출력 위치 사용자 정의

하지만 다른 위치로 출력을 안내하고 싶다면, CruiseControl.net 구성의 <publishers> 섹션을 통해 이를 달성할 수 있습니다.

출력 디렉토리를 사용자 정의하는 방법은 다음과 같습니다:

<publishers>
  <xmllogger />
  <buildpublisher>
    <sourceDir>C:\data\projects\FooSolution\FooProject\bin\Debug</sourceDir>
    <publishDir>C:\published\FooSolution\</publishDir>
    <useLabelSubDirectory>false</useLabelSubDirectory>
  </buildpublisher>
</publishers>

이 샘플 구성에서:

  • sourceDir: MSBuild가 아티팩트를 게시할 디렉토리를 지정합니다.
  • publishDir: 빌드 출력을 게시하고자 하는 목적지를 설정합니다.
  • useLabelSubDirectory: 이 옵션을 사용하여 퍼블리시 경로에 레이블 디렉토리를 포함하거나 제외할 수 있습니다.

요약

CruiseControl.net과 MSBuild의 통합은 어려운 작업일 필요가 없습니다. CCNetArtifactDirectory를 직접 참조할 필요가 없다는 것을 인식함으로써, 빌드 프로세스를 효과적으로 간소화할 수 있습니다. 빌드 출력을 리디렉션해야 할 경우에는 <publishers> 섹션을 적절히 구성하면 됩니다.

이러한 솔루션을 통해 자동화된 빌드 구성을 원활하게 처리할 수 있는 능력을 갖추게 될 것입니다.


이것으로 MSBuild를 사용할 때 CCNetArtifactDirectory 문제를 다루는 방법에 대한 개요를 마칩니다. 이 지식을 활용하여 워크플로를 개선하고 개발 경험을 더욱 원활하게 만들어 보세요!