我们有一个Jenkins-Chef设置程序,其中包含一个针对客户的网站的质量检查构建项目。该构建从Bitbucket获取代码,并且脚本将食谱从Chef Client上载到Chef Server。
这些构建运行了很长时间。两天前,自动构建和手动构建开始失败,并显示以下错误(来自Jenkins控制台输出):
更新环境质量检查 上载example-deployment [0.1.314] 错误:请求实体太大 响应:JSON不得超过1000000字节。
更新环境质量检查
上载example-deployment [0.1.314]
错误:请求实体太大
响应:JSON不得超过1000000字节。
据我了解,JSON文件应该与nodejs相关,这是开发人员在此Web服务器上使用的。
我们遍历了Jenkins,Chef-Server和QA服务器的所有配置文件。我们找不到更改导致此错误的1MB限制的方法。
我们尝试更改client_max_body_size,但无效。我们检查了JSON文件的大小,没有一个文件达到此限制。知道在哪里可以找到解决方案吗?可以更改此限制吗?我们能做些什么(在基础设施方面),还是应该在开发人员方面解决?
因此,首先,将1M值或多或少进行硬编码,而厨师服务器并不打算存储大对象。
发生的情况是在上传食谱之前,创建了包含其信息的json文件,因为此文件将存储在数据库中并对其进行索引,其大小不应超过太大,以避免性能问题。
这个想法是仅将绝对必要的内容上传到厨师服务器,剥离CVS目录,任何IDE构建/项目文件等。
实现此目标的最佳解决方案是使用chefignore文件。必须在cookbook_path下创建它。
内容是在上传食谱时忽略的通配符匹配,因此示例如下:
*/.svn/* # To strip subversion directories */.git/* # To strip git directories *~ # to ignore vim backup files