programing

Powershell 스크립트에서 TeamCity 시스템 속성에 액세스할 수 있는 방법이 있습니까?

javamemo 2023. 9. 7. 21:26
반응형

Powershell 스크립트에서 TeamCity 시스템 속성에 액세스할 수 있는 방법이 있습니까?

파워셸 러너를 사용하여 팀시티에 새로운 빌드 구성을 설정하려고 합니다.하지만 빌드 스크립트에서 TeamCity System Properties에 액세스할 수 있는 방법을 찾을 수 없는 것 같습니다.가능하다는 힌트는 보았지만 방법에 대한 설명서는 찾을 수 없습니다.

파워셸 변수 구문인 $variable을 사용하여 시스템 속성에 액세스하려고 했습니다.또한 메모리에 있는 모든 변수를 출력해 놓았는데 사용할 팀시티 변수가 없습니다.

파워셸 러너에서는 이것이 가능하며, 만약 그렇다면 작동시키기 위해 필요한 구문은 무엇입니까?

TeamCity는 build.number와 같은 환경 변수를 설정합니다(팀시티 내에서 이러한 변수 목록을 볼 수 있음).

파워셸에서는 환경 변수에 접근할 수 있습니다. 예를 들어, env "provider" 를 사용합니다.

$env:PATH

TeamCity 변수는 .를 a _로 대체하여 접근할 수 있으므로 build.number 변수는 다음과 같이 접근할 수 있습니다.

$env:build_number

TeamCity 설명서에 나와 있듯이 시스템 매개 변수는 빌드 스크립트 러너로 전달되지만 모든 빌드 스크립트 러너가 이를 어떻게 처리해야 할지 아는 것은 아닙니다.파워셸 스크립트 러너의 경우 스크립트 파일을 사용할 때 스크립트로 전파되지 않습니다.

Psake에 최적화된 빌드 러너를 작성해야 한다는 생각이 들었지만, 그 사이에 다음 중 하나를 수행할 수 있습니다.

  • Script Source 상자 내에서 사용할 수 있는 매개 변수 확장을 사용하여 TeamCity 빌드 속성을 스크립트 매개 변수에 명시적으로 매핑합니다..\build.ps1 -someParam:%build.name%

  • PowerShell 내에서 명시적으로 액세스할 수 있는 환경 매개 변수를 사용$env:NAME_IN_TEAMCITY syntax, 예를 들면$env:TEAMCITY_VERSION, 또는 루프를 통해 가변 범위로 밀어 넣거나,

  • TeamCity가 빌드하는 동안 사용할 수 있도록 하는 빌드 속성 파일에 액세스합니다.파일은 다음 사이트에서 사용할 수 있습니다.$env:TEAMCITY_BUILD_PROPERTIES_FILE, 또한 XML 버전을 로드하면 루프를 거치고 모든 것을 범위에 적용하기가 매우 쉽습니다(물론 모든 것을 문자열로 얻을 수는 있지만).이것을 어떻게 할 것인가에 대한 요지(https://gist.github.com/piers7/6432985) 를 올렸습니다.또는 Psake를 사용하는 경우 위 스크립트를 수정하여 Psake의 -properties 인수에 직접 전달할 수 있는 해시 테이블을 반환합니다.

가능합니다.다음은 시스템 속성을 PSake 스크립트에 전달하는 방법의 예입니다.

& .\psake.ps1 -parameters @{build_number=%build.number%; personal_build=%build.is.personal%}

Psake를 사용하지 않을 경우 다음과 같이 변수를 정의할 수 있습니다.

$build_number = %build.number%

%build.number%일부는 TeamCity에서 제공한 데이터로 대체됩니다. 생각에는 소스코드 스크립트 입력 모드에서만 작동하는 것 같습니다.

시스템 매개변수를 파워셸 스크립트에서 선언된 매개변수로 전달할 메타러너를 만들었습니다.완벽하지는 않지만('@'를 소스에 입력하면 깨집니다), 필요한 만큼은 사용할 수 있습니다. https://gist.github.com/anonymous/ef60ada3f48f0fb25093

언급URL : https://stackoverflow.com/questions/13278615/is-there-a-way-to-access-teamcity-system-properties-in-a-powershell-script

반응형