2016-09-15 2 views
1

모든 로봇 테스트 빌드를 병렬로 실행하는 젠킨스에서 파이프 라인을 설정하려고 시도한 다음 모두 완료 한 후 전송을 포함하는 다른 빌드를 실행합니다 모든 테스트 결과가 포함 된 1 개의 이메일 (빌드 당 1 개의 스팸이 아닌).젠킨스 파이프 라인에서 병렬 빌드 다운 스트림의 매개 변수를 전달하는 방법

로봇 플러그인이 현재 사용중인 변수 $ (ROBOT_PASSPERCENTAGE) 및 $ (ROBOT_PASSRATIO)을 반환한다는 것을 알고 있습니다. 나는 그 (것)들을 추출하고 다운 스트림 pipline 건축을위한 매개 변수로 사용하는 방법이 있기를 바라고 있었다.

테스트와 마찬가지로 아래 양식을 멋지게 시도했지만 변수를 얻고 다운 스트림 빌드로 전달하는 방법을 알 수 없습니다.

도움을 주시면 감사하겠습니다. Jenkins pipeline steps reference에서

stage('set up') { 
node { 
    build job: 'setup', propagate: false 
} 
} 

stage('run suites') { 
parallel 'test set 1':{ 
    node { 
     build job: 'test set 1', propagate: false 
     def 1_PASSPERCENTAGE = build.buildVariableResolver.resolve("ROBOT_PASSPERCENTAGE") 
     def 1_PASSRATIO = build.buildVariableResolver.resolve("ROBOT_PASSRATIO") 
     println "FOO=$CRM_PASSPERCENTAGE" 
     println "FOO=$CRM_PASSRATIO" 
    } 
}, 'test set 2':{ 
    node { 
     build job: 'thankQ Robot Mission Personnel Tests', propagate: false 
     def 2_PASSPERCENTAGE = build.buildVariableResolver.resolve("ROBOT_PASSPERCENTAGE") 
     def 2_PASSRATIO = build.buildVariableResolver.resolve("ROBOT_PASSRATIO") 
     println "FOO=$MP_PASSPERCENTAGE" 
     println "FOO=$MP_PASSRATIO" 
    } 
} 
} 
stage('results') { 
node { 
    println "FOO=$2_PASSPERCENTAGE" 
    println "FOO=$2_PASSRATIO" 
    println "FOO=$1_PASSPERCENTAGE" 
    println "FOO=$1_PASSRATIO" 
} 
} 

답변

1

,이 같은 매개 변수를 사용하여 다운 스트림 작업을 호출 할 수 있습니다

build job: downstreamJob, parameters: [ 
     [$class: 'StringParameterValue', name: 'passPercentage', value: "${1_PASSPERCENTAGE}"], 
     [$class: 'StringParameterValue', name: 'passRatio', value: "${1_PASSRATIO}"] 
] 

내가 그것을 사용한 적이 로봇 변수를 얻는 방법에 관해서는하지만 난 당신이 항상 URL을 사용할 수있는 것 같아요 테스트 빌드 (예 : test set 1 작업)를 검색하고 찾고있는 변수에 대한 로그 파일 또는 빌드 페이지를 구문 분석하십시오. 이런 식으로 뭔가 : 하류 부분에 대한

def robotLog = script: 'curl http://your-jenkins/job/test-set-1/lastBuild/robot.log', returnStdout: true // First determine which URL corresponds to the robot.log file, or use the main page of your build. 
def percentageMatcher = robotLog.trim() =~ 'Pass percentage.*(\\d+)%' // Again, find the exact regex here 
def 1_PASSPERCENTAGE = percentageMatcher[0][1] 

... // Same thing with pass ratio... 
+0

그게 정말 도움이 다른 부분 내가 올바르게 빌드에서 실제로 변수를 읽지 않습니다 무엇을, 나는 그 변수를 얻을하는 방법을 잘 것을이었다 그들을 꺼내십시오. 로봇 플러그인은 표준이 아닌 로봇 플러그인에 의해 생성됩니다. 그것에 대한 아이디어가 있습니까? –