2

我已经使用 Gerrit Trigger Plugin 配置并集成了 Jenkins 和 Gerrit,作为 Jenkins 构建后任务的一部分,我正在执行以下脚本:

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

这是 sputnik 是什么:https ://github.com/TouK/sputnik

但我得到以下输出:

[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
4

1 回答 1

2

问题是由Jenkins 的这个安全补丁引起的- 它适用于版本1.651.22.3更高版本。这是受影响插件的列表

基本上它禁止插件注入未明确配置为构建的参数,因此您的 Jenkins 不知道$GERRIT_CHANGE_IDand $GERRIT_PATCHSET_REVISION

根据Gerrit Trigger Plugin 创建者的通知

作为一种解决方法,您可以将以下 JAVA_ARG 添加到您的 jenkins 配置中

-Dhudson.model.ParametersAction.keepUndefinedParameters=true

但是,我发现这个解决方案过于侵入,所以我想出了另一个解决方案。只需将这些字符串参数添加到作业配置中:

  • GERRIT_CHANGE_ID

  • GERRIT_PATCHSET_REVISION

就是这样。现在你的配置应该是这样的:

作业参数

于 2016-06-07T12:56:20.327 回答