2016-04-30 22 views
2

ich konfiguriert haben zu holen und integriert Jenkins und Gerrit mit Gerrit Trigger-Plugin und als Teil der postbuild Aufgabe in Jenkins ich bin Ausführung folgende Skript:Jenkins nicht in der Lage changeId und RevisionId

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

Hier ist, was sputnik ist: https://github.com/TouK/sputnik

Aber Iam folgende Ausgabe bekommen:

[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 
+0

Sie verwenden Sputnik auf dem wrogn Weg finden Ausgabe. ** changeId ** und ** revisionId ** benötigen einen Wert. – CSchulz

Antwort

2

Das Problem von this security patch für Jenkins verursacht wird - es gilt zu den Versionen 1.651.2, 2.3 und höher. Hier ist ein list of affected plugins.

Grundsätzlich verbietet es Plugins, Parameter zu injizieren, die nicht explizit für Build konfiguriert sind, daher kennt Ihr Jenkins nichts über $GERRIT_CHANGE_ID und $GERRIT_PATCHSET_REVISION.

Nach Gerrit Trigger Plugin creators' notice:

Als Abhilfe können Sie die folgende JAVA_ARG zu Ihrer jenkins Konfiguration hinzufügen können

-Dhudson.model.ParametersAction.keepUndefinedParameters=true

Allerdings finde ich diese Lösung zu invasiv so kam ich mit einer anderen Lösung. Fügen Sie einfach diese String-Parameter an die Job-Konfiguration:

  • GERRIT_CHANGE_ID

  • GERRIT_PATCHSET_REVISION

Und das ist es. Nun sollten Sie Ihre Konfiguration wie folgt aussehen:

Job parameters