2017-02-16 18 views
0

내 Jenkins 단계에서 java jar 파일 (java -Dfile.encoding = UTF-8 -jar C : \ Test1 \ Test.jar C : \ Test \ test)을 실행하는 Windows 배치 명령이 있습니다. .log)이며 출력은 String 값입니다 (확인 된 Jenkins 콘솔에서 문자열이 인쇄됩니다). 어떻게이 문자열 컨텐츠를 사용하고 편집 가능한 이메일 컨텐츠 본문에 삽입하여이 컨텐츠를 전자 메일로 보낼 수 있습니까? 젠킨스 콘솔 전체가이 문자열 만 전자 메일로 보내길 원치 않습니다. 스크립트 실행 후 문자열을 환경 변수로 설정해야한다고 가정합니다. EnvInjPlugin을 내 시나리오에 정확히 사용할 수 있다면 정확히 사용할 수 있을지 모르겠습니다.젠킨스 편집 가능한 이메일 내용 사용자 정의

답변

0

사전 보내기 스크립트를 사용해보십시오. "이 임의의 정수는 이메일 내용에 있어야 : 3,432,805"

는 예를 들어, 당신은 로그에 같은 문자열이 을하고 내용을 이메일로 무작위로 생성 된 정수를 추가 할.

  1. 당신이 원하는대로와 기본 콘텐츠을 설정하지만, 대체 몇 가지 값을 추가합니다. 예를 들면 :

    이 build.log에서 임의 INT입니다 : TO_REPLACE

  2. 다음 이 스크립트 사전 보내 "고급 설정"버튼을 클릭 추가 :

    String addThisStringToContent = ""; 
    build.getLog(1000).each() { line -> 
         java.util.regex.Pattern p = java.util.regex.Pattern.compile("random\\sinteger.+\\:\\s(\\d+)"); 
         java.util.regex.Matcher m = p.matcher(line); 
         if (m.find()) { 
          addThisStringToContent = m.group(1); 
         } 
    } 
    
    if (addThisStringToContent == "") { 
         logger.println("Proper string not found. Email content has not been updated."); 
    } else { 
         String contentToSet = ((javax.mail.Multipart)msg.getContent()).getBodyPart(0).getContent().toString().replace("TO_REPLACE", addThisStringToContent); 
         msg.setContent(contentToSet, "text/plain"); 
    } 
    

여기서 :

  • build.getLog(1000) - 빌드 출력의 마지막 1000 행을 검색합니다.
  • Pattern.compile("random\\sinteger.+\\:\\s(\\d+)") - 콘텐츠 유형
  • String contentToSet = ((javax.mail.Multipart)msg.getContent()).getBodyPart(0).getContent().toString().replace("TO_REPLACE", addThisStringToContent); - - 정규식은 적절한 문자열
  • "text/plain"를 찾을 수

그것은 당신을 도울 것입니다 희망 당신의 값을 문자열 TO_REPLACE을 대체합니다.