2016-09-15 5 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

、あなたはこのようなパラメータを指定して、下流の仕事を呼び出すことができます。私はそれを使用したことがないが、私はあなたが常にURLを使用することができると思い、あなたのロボット変数を取得する方法については

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

をテストビルド(例: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

厥本当に便利、 他の部分は私が正しく構築さから実際の変数を読み取ることはありません持っているもの、私はこれらの変数を取得する方法がわからないということだったとそれらを引き出します。それらは標準ではなく、ロボットプラグインによって作成されます。その上の任意のアイデア? –

関連する問題