Jenkins no puede get changeId y revisionId

He configurado e integrado Jenkins y Gerrit con Gerrit Trigger Plugin y como parte de la tarea postbuild en Jenkins estoy ejecutando el siguiente script:

/opt/sputnik/bin/sputnik --conf /opt/sputnik/myconf.properties --changeId $GERRIT_CHANGE_ID --revisionId $GERRIT_PATCHSET_REVISION echo "exit 0 workaround" 

Esto es lo que es sputnik: https://github.com/TouK/sputnik

Pero estoy obteniendo el siguiente resultado:

 [PostBuildScript] - Execution post build scripts. [PostBuildScript] - Resolving environment variables for the script content. [PostBuildScript] - Evaluating the script: /var/lib/jenkins/sputnik/bin/sputnik --conf /var/lib/jenkins/sputnik/gerrit.properties --changeId $GERRIT_CHANGE_ID --revisionId $GERRIT_PATCHSET_REVISION echo "exit 0 workaround" [project1] $ /bin/sh -xe /tmp/hudson6990025050616459512.sh + /var/lib/jenkins/sputnik/bin/sputnik --conf /var/lib/jenkins/sputnik/gerrit.properties --changeId --revisionId Sputnik version 1.7.0 Sputnik - review your Gerrit patchset with Checkstyle, PMD and FindBugs usage: sputnik [--apiKey <apiKey>] [--buildId <buildId>] [--changeId <changeId>] --conf <conf> [--pullRequestId <pullRequestId>] [--revisionId <revisionId>] --apiKey <apiKey> Optional API key for using Sputnik for Github --buildId <buildId> Optional build id for using Sputnik for Github --changeId <changeId> Gerrit change id --conf <conf> Configuration properties file --pullRequestId <pullRequestId> Stash pull request id --revisionId <revisionId> Gerrit revision id Missing argument for option: changeId Build step 'Execute a set of scripts' changed build result to FAILURE Build step 'Execute a set of scripts' marked build as failure Finished: FAILURE 

El problema es causado por este parche de security para Jenkins: se aplica a las versiones 1.651.2 , 2.3 y posteriores. Aquí hay una list de plugins afectados .

Básicamente, prohíbe a los complementos inyectar parameters no configurados explícitamente para la compilation, por lo tanto, su Jenkins no sabe acerca de $GERRIT_CHANGE_ID y $GERRIT_PATCHSET_REVISION .

Según el aviso de los creadores de Gerrit Trigger Plugin :

Como solución, puede agregar el siguiente JAVA_ARG a su configuration de jenkins

-Dhudson.model.ParametersAction.keepUndefinedParameters=true

Sin embargo, creo que esta solución es demasiado invasiva, así que se me ocurrió otra solución. Simplemente agregue estos parameters de cadena a la configuration del trabajo:

  • GERRIT_CHANGE_ID

  • GERRIT_PATCHSET_REVISION

Y eso es. Ahora tu configuration debería verse así:

Parámetros de trabajo