2017-01-17 3 views
12

Jenkins 파이프 라인을 사용하여 Sonar로 소스 코드를 분석하려고합니다. 결과와 함께 Github에 알리도록 Sonar에게 요청하려면 Pull Request ID를 지정해야합니다.Jenkins Pipeline에서 끌어 오기 요청 ID를 얻는 방법

젠 킨스 파이프 라인에서이 끌어 오기 요청 ID를 얻으려면 어떻게해야합니까?

GitHub pull request builder plugin이 아닌 풀 요청을 빌드하는 데 GitHub Organization Folder Plugin을 사용하고 있습니다. 그것이 $ghprbPullId이 나를 위해 작동하지 않는 이유입니다. 어떤 아이디어를 다른 방법으로 끌어 오기 요청 ID를 얻는 방법?

답변

11

젠킨스 전역 변수라는 CHANGE_ID 드러낸다

변경 요구의 일종에 상당하는 multibranch 프로젝트를 들어, 이는 이러한 풀 요청 번호로, 변경 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은 홍보 ID와 아무런 관련이 없습니다. 예를 들어, 일반적으로 지점 이름은 "feature/JIRA-34"이고 PR ID는 필요하지 않습니다. 34입니다. 임의의 숫자 일 수 있습니다. –