2017-04-26 16 views
3

すべてのJenkinsロジックを構造化パイプラインスクリプト(別名Jenkinsfile)に入れました。JenkinsマルチブランチパイプラインジョブのdisplayNameを取得する方法

何か問題が生じた場合は、メールを送信します。被験者にとっては、ジョブのdisplayNameを使用したいが、ジョブIDはenv.JOB_NAMEではない(アクセス制御パターンによって駆動され、可読性がないため)。

通常のパイプラインジョブでは、私はcurrentBuild.rawBuild.project.displayNameを使用できますが、マルチブランチパイプラインの場合はブランチ名です。

また、ユーザーフレンドリーな名前を取得し、rawBuildをトラッキングするさらに良い方法がありますか?今の

答えて

4

は、私にはとても便利パブリックAPIを発見したので、これは移動するための方法であるように思わ:

String getDisplayName(currentBuild) { 
    def project = currentBuild.rawBuild.project 

    // for multibranch pipelines 
    if (project.parent instanceof WorkflowMultiBranchProject) { 
     return "${project.parent.displayName} (${project.displayName})" 
    } else { 
     // for all other projects 
     return project.displayName 
    } 
} 
+0

は 'グローバルではなく、入力パラメータをcurrentBuild'ていませんか? –

+1

あなたは正しいですが、私は共有ライブラリが提供するクラスでこのコードを静的関数として使用していますので、パラメータとして 'currentBuild'を渡す必要がありました。パイプラインで関数を定義する場合、これは必要ありません。 – dag

関連する問題