steps statement ocean example blue github jenkins-pipeline github-organizations

github - statement - jenkins pipeline steps



Cómo obtener un ID de solicitud de extracción de Jenkins Pipeline (3)

En el caso de que la respuesta de Thomas no funcione o no se aplique a usted, también puede (posiblemente) usar el nombre de la rama para obtener el número de solicitud de extracción consultando la API de REST de Github. Todo lo que necesita es un token de API y el nombre de la rama, busque las solicitudes de extracción en el orden en que se actualizan los DESC y busque el primer RP que coincida con el nombre de su rama. Eso tendrá el número de solicitud de extracción.

Esto solo funciona si tiene un nombre de sucursal único para cada solicitud de extracción (como un número de boleto de emisión JIRA).

Estoy tratando de analizar mi código fuente con Sonar usando las tuberías de Jenkins. Para pedirle a Sonar que notifique a Github con los resultados que necesito para especificar la ID de solicitud de extracción.

¿Cómo puedo obtener este ID de solicitud de extracción de Jenkins Pipelines?

Estamos utilizando el GitHub Organization Folder Plugin para crear solicitudes de extracción, no el GitHub pull request builder plugin . Es por eso que $ghprbPullId no está funcionando para mí. ¿Alguna idea de cómo obtener la identificación de solicitud de extracción de una manera diferente?


Jenkins expone una variable global llamada CHANGE_ID:

Para un proyecto multibranquio correspondiente a algún tipo de solicitud de cambio, esto se establecerá en la ID de cambio, como un número de solicitud de extracción.

Esta variable solo se rellena para las compilaciones de solicitud de extracción, por lo que debe deshabilitar las compilaciones de sucursales y habilitar las compilaciones de PR en la configuración de su canalización para las fuentes de las sucursales:

Mi paso de la tubería entonces se ve así:

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}" } } } }


Obtiene el número de PR a través de, por ejemplo, env.BRANCH_NAME .

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