2016-07-01 8 views
2

マルチブランチパイプラインプロジェクトを使用してアプリケーションをビルドしています。我々は約100以上のコンポーネントとその多くのパイプラインプロジェクトを持っています。例えば我々は持っている:私たちは、これらすべてのジョブのSCMポーリングを使用しているマルチブランチパイプラインプロジェクトのトリガー依存ジョブ

→プロジェクトCに依存→プロジェクトBに依存

プロジェクトAを。プロジェクトCをビルドしたら、プロジェクトBをビルドしてから、そのプロジェクトAをビルドする必要があります。依存関係のリストは、プロジェクトごとに異なる場合があります。

私はSNAPSHOT依存性をを構築されているときは常にMavenプロジェクトがビルドトリガ→☑ビルドでこれを扱うことができることを知っているが、マルチブランチパイプラインのプラグインで、これを処理する方法を見つけることができませんでした。

任意のポインタ?

答えて

1

は、他のプロジェクトの後ビルドは、支店内組み込まれている設定ページと、それを選択することができますが、枝の設定を保存することはできません☐あります(支店サイドバーのメニュー項目はちょうどビュー構成読み込み、を設定しないでください。)。

Jenkinsfileとして次のようにしてください。すべてのブランチに追加します。変更があった場合は、master/trunkに編集して、これらの変更の影響を受けるブランチにcherrypickしてください。

branch2上でそれを実行している
[Pipeline] echo 
    + Triggering build for branch 'branch1' 
[Pipeline] echo 
    Building branch 'branch1'... 
[Pipeline] echo 
    ++ Triggering build for branch 'master' 
[Pipeline] echo 
    Building branch 'master'... 
[Pipeline] End of Pipeline 
Finished: SUCCESS 

branch1上でそれを実行している

// From: Trigger dependent jobs in Multibranch Pipeline project 
//  http://stackoverflow.com/a/38151703/1744774 

String[][] buildChains = [ 
    ['master'], 
    ['branch1', 'master'], 
    ['branch2', 'branch1', 'master'], 
    ['no-build'] 
    // ... further build chains ... 
    ] 

for (buildChain in buildChains) { 
    if (buildChain[0].equalsIgnoreCase(env.BRANCH_NAME)) { 
    int depth = 0 
    for (branch in buildChain) { 
     String depthIndicator = "+" * ++depth 
     //optional: String depthIndicator = new String(new char[++depth]).replace('\0', '+') 
     //optional: String depthIndicator = repeat("+", ++depth) 
     println " $depthIndicator Triggering build for branch '$branch'" 
     build(branch) 
     } // for (branches) 
    break // comment this if there are more build chains for one branch 
    } 
    } // for (buildChains) 


def build(String branch) { 

    switch (branch) { 
    case "master": 
     buildMaster() 
     break 
    case ["branch1", "branch2"]: 
     buildBranch(branch) 
     break 
// case ... 
// ... 

    default: 
     println " --- No build defined for branch \'$branch\' ---" 
    } // switch (branch) 
    } // build(branch) 

def buildMaster() { 
    println ' Building branch \'master\'...' 
    // ... build code ... 
    } 

def buildBranch(String branch) { 
    println " Building branch '$branch'..." 
    // ... build code ... 
    } 

// From: Can I multiply strings in Java to repeat sequences? 
//  http://stackoverflow.com/a/34650746/1744774 
String repeat(String s, int count) { 
    return count > 0 ? s + repeat(s, --count) : "" 
    } 

[Pipeline] echo 
    + Triggering build for branch 'branch2' 
[Pipeline] echo 
    Building branch 'branch2'... 
[Pipeline] echo 
    ++ Triggering build for branch 'branch1' 
[Pipeline] echo 
    Building branch 'branch1'... 
[Pipeline] echo 
    +++ Triggering build for branch 'master' 
[Pipeline] echo 
    Building branch 'master'... 
[Pipeline] End of Pipeline 
Finished: SUCCESS 

Script Security Pluginで最初に禁止機能を承認することを忘れないでくださいでは、プロセス→ジェンキンスを管理しますスクリプトの承認

+0

ご返信ありがとうございます。試してみる。 –

+1

@SarojGharatようこそ。あなたがここにいる人々に感謝したいのであれば、なぜ投票が重要なのかを見てください(http://stackoverflow.com/help/why-vote)。 –

+0

私は正常に起動するために完全なパスを使用しなければならなかった –

関連する問題