jenkins jenkins-plugins gerrit

¿Cómo publicar votos en etiquetas personalizadas de jenkins gerrit trigger?



jenkins-plugins (3)

La sintaxis $ ENV_VAR solo se puede utilizar para los mensajes de inicio de compilación ya que es el único momento en que existe la posibilidad de una sola compilación en el contexto.

El plugin es actualmente (v. 2.12) un poco obstinado con respecto a las etiquetas de revisión que conoce, está asumiendo una revisión verificada y de código. Pero al editar los comandos verificados, puede cambiar lo que significa la verificación y revisión del código en Jenkins en Gerrit. Por ejemplo

gerrit review <CHANGE>,<PATCHSET> --message ''Build Successful <BUILDS_STATS>'' --acceptance-tests <VERIFIED> --code-quality <CODE_REVIEW>

Se han celebrado conversaciones entre los desarrolladores del complemento para agregar soporte de etiqueta configurable, pero la revisión del código y las suposiciones verificadas se ejecutan en profundidad en el código, por lo que no es una solución fácil.

Estoy usando el plugin jenkins gerrit-trigger. Sí desencadena el trabajo. El problema es que una vez finalizado el trabajo, jenkins no puede enviar una revisión porque no tengo una etiqueta ''verificada'' en gerrit.

Descubrí que en la configuración hay una sección de Gerrit Reporting Values (Jenkins -> Manager -> Gerrit Trigger -> Haga clic en el botón "edit" de Gerrit). En esa sección hay subsecciones codificadas para "Verificar" y "Revisión de código". Otra subsección es "Comandos verificados de Gerrit" con comandos como:

gerrit review <CHANGE>,<PATCHSET> --message ''Build Successful <BUILDS_STATS>'' --verified <VERIFIED> --code-review <CODE_REVIEW>

¿Cómo puedo agregar etiquetas personalizadas aquí?

Intenté cambiar los comandos a algo como:

gerrit review <CHANGE>,<PATCHSET> --message ''Build Successful <BUILDS_STATS>'' --acceptance-tests $ACCEPTANCE_TESTS_VOTE --code-quality $CODE_QUALITY_VOTE

De documentos:

Las variables y tendrán los valores definidos anteriormente. La variable tendrá la URL del resultado de compilación.

y

También puede usar cualquier variable de entorno de la compilación que se inició con la sintaxis $ ENV_VAR.

¿Cómo agregar un nuevo "parámetro" como o cómo pasar la variable de entorno?

Intenté usar el complemento EnvInject , pero parece que la variable de entorno no está llena de valor (el mensaje de error de jenkins dice que no hay un parámetro $ VAR).


La pregunta es bastante antigua, pero enfrenté el mismo problema y quiero compartir mi solución:

Instale el complemento Groovy Postbuild: https://wiki.jenkins-ci.org/display/JENKINS/Groovy+Postbuild+Plugin

Use la siguiente secuencia de comandos como PostBuild-Action.

Lo hará por usted:

  • recoger las variables de entorno necesarias y el estado del trabajo
  • construir mensaje de retroalimentación
  • construir el comando ssh
  • ejecutar comando ssh -> enviar comentarios a gerrit

    //Collect all environment variables of the current build job def env = manager.build.getEnvironment(manager.listener) //Get Gerrit Change Number def change = env[''GERRIT_CHANGE_NUMBER''] //Get Gerrit Patch Number def patch = env[''GERRIT_PATCHSET_NUMBER''] //Get Url to current job def buildUrl = env[''BUILD_URL''] //Build Url to console output def buildConsoleUrl = buildUrl + "/console" //Verification will set to succeded (+1) and feedback message will be generated... def result = +1 def message = "///"Static code analysis succeeded - ${buildUrl}///"" //...except job failed (-1)... if (manager.build.result.isWorseThan(hudson.model.Result.SUCCESS)){ result = -1 message = "///"Static code analysis failed - ${buildUrl}///"" } //...or job was aborted if (manager.build.result == hudson.model.Result.ABORTED){ result = 0 message = "///"Static code analysis aborted - ${buildConsoleUrl}///"" } //Send Feedback to Gerrit via ssh //-i - Path to private ssh key def ssh_message = "ssh -i /path/to/jenkins/.ssh/key -p 29418 user@gerrit-host gerrit review ${change},${patch} --label=customLabel=${result} --message=${message}" manager.listener.logger.println(new ProcessBuilder(''bash'',''-c'',"${ssh_message}").redirectErrorStream(true).start().text)

Espero que esto te ayude a resolver tu desafío sin utilizar el complemento de activación de Gerrit para informar


Estoy publicando + 1 / -1 en una etiqueta personalizada cambiando los comandos en la sección avanzada de la configuración del activador gerrit a, por ejemplo,

gerrit review <CHANGE>,<PATCHSET> --message ''Build Successful <BUILDS_STATS>'' --label ''MyCustomVerifiedLabel=<VERIFIED>'' --code-review <CODE_REVIEW>