2017-01-17 5 views
12

Ich versuche, meinen Quellcode mit Sonar Jenkins-Pipelines zu analysieren. Um Sonar zu fragen, Github mit den Ergebnissen zu benachrichtigen, muss ich die Pull Request ID angeben.So erhalten Sie Pull Request ID von Jenkins Pipeline

Wie bekomme ich diese Pull Request ID von Jenkins Pipelines?

Wir verwenden GitHub Organization Folder Plugin, um Pull-Requests zu erstellen, nicht GitHub pull request builder plugin. Deshalb funktioniert $ghprbPullId nicht für mich. Irgendwelche Ideen, wie man die Pull-Request-ID anders bekommt?

Antwort

11

Jenkins eine globale Variable mit dem Namen CHANGE_ID aussetzt:

Für einen mehrfach verzweigten Projekt zu einer Art Änderungsanforderung entspricht, wird dies auf die Änderung ID eingestellt werden, wie ein Pull Anforderungsnummer .

Diese Variable nur für Pull-Request bevölkert baut, so müssen Sie deaktivieren Niederlassung baut und ermöglichen PR baut in der Konfiguration Ihrer Pipeline der für Zweig Quellen:

enter image description here

Meine Pipeline Schritt sieht dann aus wie dies:

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

Danke, das hat geholfen. Weißt du, was der Unterschied zwischen "Zusammengeführt mit Basiszweig" und "nicht zusammengedrängter Kopf" ist? –

+0

Wenn Sie den Basiszweig vor dem Erstellen in Ihren PR integrieren möchten, wählen Sie den ersten. Dies hilft Konflikte zu erkennen. Siehe https://go.cloudbees.com/docs/cloudbees-documentation/cje-user-guide/index.html#github-branch-source – Thomas

0

Sie erhalten die PR-Nummer durch zum Beispiel env.BRANCH_NAME.

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

Danke für Ihre Antwort, aber leider kann es nicht für meinen Fall angewendet werden. In meinem Fall hat BRANCH_NAME keine Beziehung zur PR-ID. Zum Beispiel haben wir normalerweise Branch-Namen als "Feature/JIRA-34" und PR-ID ist nicht notwendig 34. Es könnte eine beliebige Zahl sein. –

Verwandte Themen