CAKE 0.22.0 및 TeamCity 9.x를 사용합니다.TeamCity 개요에 표시되지 않은 CAKE 작업 오류
TeamCity에서는 빌드 단계가 build.ps1
인 빌드 단계가 하나뿐입니다. 차례대로 build.cake
으로 실행됩니다.
trap
{
write-output $_
##teamcity[buildStatus status='FAILURE' ]
exit 1
}
이유는 a known PowerShell bug가 (즉, -file
으로 스크립트를 실행하면 종료 코드 0을 반환 말아야 때) 우회하는 것입니다
는 build.ps1
, 나는 다음과 같은 추가했습니다.
build.ps1
내에서 발생합니다
는 인 TeamCity는 제대로 빌드 실패를 표시 오류가 build.cake
내에서 발생하는 경우
그러나, 인 TeamCity 잘못 모든 것이 성공적으로 실행 주장 :
다음은에 의해 참조되는 "성공적인"빌드에 해당하는 빌드 로그입니다. 위의 스크린 샷 : 당신이 볼 수 있듯이
오류는 build.cake
작업에서 발생했다. 이 오류는 build.ps1
의 trap
절에 포착되지 않으므로 TeamCity에 빌드 실패가 통보되지 않았습니다.
Information(@"Some error message\n##teamcity[buildStatus status='FAILURE']]"
에 비슷한 포함))
build.cake
에 내 모든 작업에
OnError
절을 추가하는 방법에 대한 생각, 그러나 이것은 중복 된 코드의 무시 무시한 양으로 이어질 것입니다.
build.cake
의 작업 내에서 던져지는 오류가 build.ps1
의 trap
절에 잡힐 수 있도록하는 간결한 방법이 있습니까?
나는 생각한다 너는 틀린 나무를 짖고 있을지도 모른다. 'trap' 수정은 Powershell 스크립트가 예외를 던지는 경우에만 도움이 될 것입니다. cake를 사용할 때 PS 스크립트는 cake 실행 파일을 호출하고 Cake가 반환하는 종료 코드를 반환합니다. Cake는 작업에서 발생하는 예외를 처리합니다. 실제로 빌드 로그에'프로세스가 코드 1로 종료되었습니다 '라고 나와 있는데, PS 스크립트가 올바른 코드를 반환하고 있으며, 빌드 단계가 종료 코드를 사용하여 오류를 표시하지 않는다고합니다. TeamCity 빌드 단계를 확인해 보겠습니다. – heavyd
@heavyd 답장을 보내 주셔서 감사합니다! 내 TeamCity 빌드 단계에서 매개 변수''표준 오류 출력 형식은''경고''로 설정됩니다. 이것이 TeamCity가 빌드를 성공적으로 표시하는 이유를 설명 할 수 있습니까? –
죄송합니다, 원래 의견에서 오인되었습니다. 설정은 개별 빌드 단계가 아니라 빌드 구성의 "실패 조건"섹션에 있습니다. [여기에 문서보기] (https://confluence.jetbrains.com/display/TCD10/Build+Failure+Conditions). 빌드 프로세스 종료 코드가 0이 아닌지 확인하십시오. – heavyd