2017-11-02 18 views
0

パイプラインからビルドジョブを介してトリガされるABCというダウンストリームジョブがあります。ジョブABCのBUILD_URLとBUILD_NUMBERを抽出したいと思います。 、「ABC」伝播:Jenkinsパイプラインでダウンストリームジョブビルドの詳細を取得する方法

デフINT_JOBは、ジョブを構築= falseを、待つ:真

私の環境: 1)私は、スクリプトのパイプラインの構文ではなく、宣言構文を使用していますので、ためのソリューションを持っていると思いますスクリプトによるパイプライン構文。 2)コードはGroovyサンドボックスで記述され、実行されます。 3)groovyのサンドボックスの制限のため、currentBuild.rawBuildが動作しません。

私は多くの同様の質問とunanswered duplicate questionを行っていますが、運はありません。誰かが私を助けてくれますか?

+1

ダウンストリームのビルドの詳細は取得したいが、方法をホワイトリストに登録したくないのですか?不可能です。 [Run#getEnvironment()](http://javadoc.jenkins-ci.org/hudson/model/Run.html#getEnvironment-hudson.model.TaskListener-)を承認する必要があります。 –

答えて

0

同じ問題が発生しました。限り、それはすべてのジョブとそれが実行に時間がかかる全ての実験で2つのループで構成されて

for (job in Hudson.instance.getAllItems(hudson.model.Job)) { 
    for (run in job.getBuilds()) { 
    cause = run.getCause(Cause.UpstreamCause) 
    if ((cause) && (cause.pointsTo(mainBuild))) { 
     println "Downstream for " + mainBuild.getFullDisplayName() + " is " + run.getFullDisplayName() 
    } 
    } 
} 

: は現在、私は解決策を次のようしています。 この検索を減らす方法を探しています。お知らせします。

UPD:終わり

私は親実行オブジェクトから下流の実行を取得する任意の効率的な方法を見つけましたが、開始時間の基準を使用して検索を繰り返しを減らすことに成功しませんでした:

int i=0; 
for (job in Hudson.instance.getAllItems(hudson.model.Job)) { 
    laterRuns = job.getBuilds().byTimestamp(mainBuild.getStartTimeInMillis(),System.currentTimeMillis()); 
    for (run in laterRuns) { 
    i++; 
    cause = run.getCause(Cause.UpstreamCause) 
    if ((cause) && (cause.pointsTo(mainBuild))) { 
     println "Downstream for " + mainBuild.getFullDisplayName() + " is " + run.getFullDisplayName() 
    } 
    } 
} 
println "Iterations - $i" 

これにより、12960から57までの合計反復回数が減少しました(数字はもちろん私のJenkinsにのみ関連しています)。

関連する問題