2017-01-17 10 views
12

Jenkinsパイプラインを使用してSonarでソースコードを分析しようとしています。結果を使ってGithubに通知するようSonarに依頼するには、Pull Request IDを指定する必要があります。JenkinsパイプラインからプルリクエストIDを取得する方法

ジェンキンスパイプラインからこのプルリクエストIDを取得するにはどうすればよいですか?

GitHub pull request builder pluginではなく、GitHub Organization Folder Pluginを使用してプルリクエストを作成しています。だからこそ$ghprbPullIdが私のために働いていないのです。任意のアイデアはどのように別の方法でプル要求IDを取得するには?

答えて

11

ジェンキンスはCHANGE_IDという名前のグローバル変数公開します 変更要求のいくつかの種類に対応するマルチブランチプロジェクトのために

を、このようなプル 要求番号として、変更のIDに設定されます。

プルリクエストのビルドのためにあなたがブランチのビルドを無効とPRを有効にする必要がありますので、この変数は唯一、移入され、分岐源のためのあなたのパイプラインの構成で構築します。

enter image description here

私のパイプラインステップは、その後のようになります。これは

def PULL_REQUEST = env.CHANGE_ID 

stage('Analysis') { 
     withCredentials([[$class: 'StringBinding', credentialsId: '***', variable: 'GITHUB_ACCESS_TOKEN']]) { 
      withSonarQubeEnv('Sonar') { 
       withMaven(maven: 'M3') { 
        sh "mvn org.sonarsource.scanner.maven:sonar-maven-plugin:3.2:sonar " + 
          "-Dsonar.analysis.mode=preview " + 
          "-Dsonar.github.pullRequest=${PULL_REQUEST} " + 
          "-Dsonar.github.oauth=${GITHUB_ACCESS_TOKEN}" 
       } 
      } 
     } 
    } 
+0

ありがとうございました。 「ベースブランチとマージされた」と「マージされていないヘッド」の違いは何ですか? –

+0

ビルド前にベースブランチをPRにマージする場合は、ブランチを選択します。これは競合の検出に役立ちます。 https://go.cloudbees.com/docs/cloudbees-documentation/cje-user-guide/index.html#github-branch-sourceをご覧ください。 – Thomas

0

たとえば、env.BRANCH_NAMEでPR番号を取得します。

if (env.BRANCH_NAME.startsWith('PR-')) { 
    def prNum = env.BRANCH_NAME.replace(/^PR-/, '') 
    ... 
} 
+3

ご返信ありがとうございます。申し訳ありませんが、私の場合は申し訳ありません。私の場合、BRANCH_NAMEはPR Idとは関係ありません。たとえば、ブランチ名は通常「feature/JIRA-34」、PR IDは必要ありません34。 –

関連する問題