【问题标题】:Github webhook triggers jenkins job with too large JSON payload errorGithub webhook 触发 jenkins 作业,JSON 负载过大错误
【发布时间】:2017-02-10 20:40:27
【问题描述】:

我正在为一个项目进行持续集成设置。所有代码都在 github repo 上,然后合并将触发到运行特定作业的 jenkins 服务器的 webhook。从那里该作业查看有效负载并根据其分支确定要运行的下游作业。不需要有效负载的其余部分。在合并中有大量提交的情况下,json 有效负载将非常大,以至于它会因以下错误而中断:

Cloning the remote Git repository
Cloning repository <git_repo>
> git init <http://jenkins_instance/job> # timeout=10
ERROR: Error cloning remote repo 'origin'
hudson.plugins.git.GitException: Could not init <http://jenkins_instance/job>
        ...
Caused by: hudson.plugins.git.GitException: Error performing command: git init <http://jenkins_instance/job>
        ...
Caused by: java.io.IOException: Cannot run program "git" (in directory "<http://jenkins_instance/job>")>: error=7, Argument list too long
        ...
Caused by: java.io.IOException: error=7, Argument list too long
        ...
ERROR: null

主要问题: 有没有办法减少这个有效载荷的大小?或者关于如何处理有效载荷以避免错误的建议?

设置类似于此帖How to process a github webhook payload in Jenkins?

此作业的当前设置是“参数化”,并且“有效负载”有一个参数“字符串参数”。然后在主 shell 执行期间将此变量保存到一个文件中:

echo "Current payload is ${payload}"
if [ -d ./payload.txt ]
then
    rm payload.txt;
fi
touch payload.txt
echo $payload >> payload.txt

【问题讨论】:

    标签: json git jenkins webhooks


    【解决方案1】:

    我的解决方法是使用另一个项目来处理有效负载超过 linux 限制时的问题。父项目将在 git checkout 时出现 ioexception 失败,触发子项目并传递内部版本号,子项目通过 rest api 查询父项目以获取有效负载。

    另一种解决方法就是使用窗口节点。

    参考: https://serverfault.com/questions/533709/bulk-size-text-parameters-in-jenkins-report-error

    【讨论】:

      猜你喜欢
      • 2018-12-23
      • 2019-09-03
      • 2019-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-15
      • 2020-02-29
      相关资源
      最近更新 更多