2017-12-16 11 views
3

Jenkins 용 선언적 파이프 라인을 설정 중입니다. 내 post 섹션에 slackSend을 사용하여 빌드가 잘못되었다고 팀에 알립니다. 나는 실패 이유를 포함시키고 싶다. 이 파일은 env 또는 currentBuild 또는 다른 파일로 제공 되나요? 설명서에서 아무 것도 보지 못했지만 일반적인 사용 사례처럼 보입니다.Jenkins 파이프 라인에서 실패 이유 가져 오기

currentBuild.rawBuild.getLog(10)을 사용하는 것에 대한 몇 가지 게시물을 보았지만 너무 많은 정보로 가득 차 있습니다. 실제 예외에 대해서는 0이 필요합니다.

+0

당신은 https://stackoverflow.com/questions/43736594/get-error-reason-in-jenkinsfile-failure에서 살펴 보았습니다. – saw303

+0

괜찮은 시작이었습니다. 그러나 실패/무효가 아닌 실패 단계 만 제공합니다. – MikeB

답변

1

또 다른 접근법은 use a catchError 또는 적어도 a try/catch입니다. String error = "${e}";

이 catchError에 관해서는, 당신은 잠재적으로 catchError 함수에 실패 할 수 있습니다 모든 단계를 감싸는 것 :
그런 다음, in this answer, 당신은 오류 메시지를 얻을 수 있습니다. 오류가 발생하면 build.result을 FAILURE로 설정하고 은 빌드를 계속 진행합니다.

try/catch 접근 방식 만 실제 오류 e (및 해당 문자열)을 잡는 데 유용 할 수 있다고 지적한 catchError을 참조하십시오.
그런 다음 오류 문자열을 post 단계가 액세스 할 수있는 전역 변수에 추가 할 수 있습니다.
currentBuild.rawBuild.getLog(10)보다 덜 자세하고 정확합니다.

+0

감사합니다. 정보를 위해! 선언적 파이프 라인을 사용하고 있기 때문에 스크립트 {try {...} catch (e) {...}}에서 모든 단계의 모든 단계를 래핑해야합니까? – MikeB

+0

@MikeB 예, 선언문이 try/catch와 호환되지 않을 수도 있지만 https://stackoverflow.com/q/44003788/6309 – VonC

+0

을 참조하십시오. 단계에서 오류를 발견 할 수 있으면 스크립트를 사용하여 변수를 할당 할 수 있습니다. https://github.com/jenkinsci/pipeline-examples/blob/094fa9f02f95dfc0c7d798c7e83b8d38caae0a65/declarative-examples/simple-examples/postUnstable.groovy – VonC