2017-01-17 14 views
12

Próbuję przeanalizować mój kod źródłowy za pomocą sonaru za pomocą potoków Jenkins. Aby poprosić Sonara o powiadomienie Githuba o wynikach, muszę podać identyfikator żądania wyciągnięcia.Jak uzyskać identyfikator żądania ściągnięcia z Jenkins Pipeline

W jaki sposób mogę uzyskać ten identyfikator żądania wyciągnięcia od Jenkins Pipelines?

Używamy GitHub Organization Folder Plugin do budowania żądań ściągania, a nie GitHub pull request builder plugin. Dlatego $ghprbPullId nie działa dla mnie. Jakieś pomysły, jak uzyskać identyfikator żądania wyciągnięcia w inny sposób?

Odpowiedz

11

Jenkins naraża zmiennej globalnej o nazwie CHANGE_ID:

Jeśli już wielobranżowy projekt odpowiadający jakiejś żądanie zmiany, to zostanie ustawiona na identyfikatorze zmian, takich jak pull liczby żądanie .

Zmienna ta jest wypełniana tylko na życzenie rozkładaną buduje, więc trzeba wyłączyć oddział buduje i umożliwić PR buduje w konfiguracji Twojego rurociągu źródeł branżowych:

enter image description here

mój krok rurociąg wtedy wygląda to:

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

Dzięki, pomogło. Czy wiesz, jaka jest różnica między "połączonym z odgałęzieniem podstawowym" a "bez głowy"? –

+0

Jeśli chcesz scalić gałąź podstawową w swój PR przed rozpoczęciem budowy, wybierz ten pierwszy. Pomaga to wykryć konflikty. Zobacz https://go.cloudbees.com/docs/cloudbees-documentation/cje-user-guide/index.html#github-branch-source – Thomas

0

Otrzymujesz numer PR przez np. env.BRANCH_NAME.

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

Dziękuję za odpowiedź, ale niestety nie można jej zastosować w mojej sprawie. W moim przypadku BRANCH_NAME nie ma żadnego związku z identyfikatorem PR. Na przykład zwykle mamy nazwy oddziałów jako "feature/JIRA-34", a identyfikator PR nie jest potrzebny 34. Może to być dowolna liczba. –

Powiązane problemy