TeamCity는 MSBuild 단계에서 "/ property :"대신 "Build Parameters"를 사용한다고 말합니다. 그게 무슨 뜻입니까?


80

CI 빌드를 수행하기위한 TeamCity 서버 설정이 있습니다. 저는 C # 솔루션을 빌드 및 테스트하고 일부 사용자 지정 MSBuild 작업을 실행하고 있습니다. 이 작업 중 하나는 빌드 출력에 경고를 인쇄하는 것입니다.

MSBuild 명령 줄 매개 변수에는 "/ property :"또는 "/ p :"매개 변수가 포함됩니다. 대신 빌드 매개 변수를 사용하십시오.

이것이 무엇을 의미하는지 또는 제거하는 방법을 이해하지 못합니다. 오타가 있든 없든 Google은 잘되지 않습니다. 명령 줄 ( /verbosity:diagnostic) 에서 작업을 실행했는데 표시되지 않으므로 TeamCity 메시지라고 생각합니다.

MSBuild 작업은

<Target Name="InstallDb">
  <MakeDir Directories="$(DbPath)" />
  <Exec Command="sqlcmd -S .\sqlexpress -i db\OmnyxDatabaseDrop.sql" />
  <Exec Command="sqlcmd -S .\sqlexpress -i db\OmnyxDatabaseCreate.sql -v DbPath=&quot;$(DbPath)&quot;" />
  <Exec Command="sqlcmd -S .\sqlexpress -i db\OmnyxDatabaseProgrammability.sql" />
</Target>

관련 TeamCity 단계 정보는

MSBuild 버전 : 4.0
MSBuild 도구 버전 : 4.0
실행 플랫폼 : x64
대상 : InstallDb
명령 줄 매개 변수 : /property:DbPath=%env.DB_PATH%


5
@AnneTheAgile은 TeamCity 시스템 빌드 매개 변수 를 추가하기 만하면 됩니다. 언급 한 3 가지 유형의 빌드 매개 변수 중 하나입니다. 'system. <name-of-my-build-parameter>'와 같이 이름을 지정하고 원하는 값을 제공합니다. TeamCity는 자동으로 MSBuild로 보냅니다. 빌드 보고서에서 매개 변수 값을 확인할 수 있습니다. 매개 변수가 모두 나열되는 탭이 있습니다.
Anthony Mastrean

답변:


58

구성 Build Parameters에서 Properties and environment변수 아래 에 추가 해야합니다.

`여기에 이미지 설명 입력

그래서의 명령 라인 파라미터에 Build StepMSBUILD 용으로 지정되는 임의의 속성을 제거 /p:하고, 그 각각에 부가 Build Parameters(상술 한 스크린 샷) 및 값을 수득


5
@Anthony Mastrean 그래 -Build parameters are passed to a build. Build parameters can be of two types: system properties and environment variables. Environment variables are supported by any build runner, however system properties are only available for build runners with property notion. For example, Command line runner does not support properties.
manojlds

8
감사! 이것은 효과가 있었지만 실제로 구현 / 사용법을 이해 하기 위해이 문서를 방문해야했습니다 .
Anthony Mastrean 2011 년

2
팀 도시 문서에서 : 구성 매개 변수는 템플릿에서 상속 된 빌드 구성의 일부 설정을 재정의하는 방법을 제공합니다. 빌드로 전달되지 않습니다.
topwik 2011-12-13

8
동일한 매개 변수를 사용하지만 값이 다른 동일한 빌드 구성 내에 두 개의 MSBuild 단계가있는 경우 이는 문제가되는 것 같습니다. "빌드 구성"수준에서 정의해야하는 경우 동일한 매개 변수의 다른 값을 빌드 단계에 전달하는 것이 불가능 해 보입니다.
TSmith

2
이것은 좋을 것입니다. 그 버그를 제외하고. 동일한 매개 변수 이름을 공유하는 두 개의 다른 빌드 단계에 다른 매개 변수를 전달하려면 어떻게해야합니까?
Doug

39

모든 것이 뒤에서 일어난다! 올바른 규칙을 따르기 만하면됩니다. MSBuild 스크립트에서 일반 변수 표기법을 사용합니다.

$(DbPath)

TeamCity에서는 시스템 또는 환경 변수를 정의합니다.

system.DbPath

TeamCity는 'system'또는 'env'부분을 제거하여 모든 시스템 / env 변수를 MSBuild 작업에 자동으로 보냅니다. 그리고 /property:DbPath=system.DbPathTeamCity 작업 을 작성할 필요가 없습니다 .


문서 에 따르면 시스템 변수 만 스크립트에 삽입됩니다.
ladenedge

1
내가 알기로 환경 변수 는 빌드 에이전트에서 실제 환경 변수로 설정됩니다. 시스템 변수처럼 빌드 스크립트 / 단계에 전달되지 않을 수 있지만 사용할 수 있습니다. MSBuild를 사용하여 $(MyVar)호출하는 구피 cmd 라인 도구에 대한 값을 제공하는 TeamCity 환경 변수가 있으므로 MSBuild는 환경 변수를 사용하여 값을 제공해야합니다 .
Anthony Mastrean
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.