2016-05-10 154 views
0

我最近创建了一个AWS CodePipeline管道,从Github抽取,使用Jenkins/Maven构建,并部署到现有的ElasticBeanstalk项目。构建步骤的输出和输入到部署步骤的内容是构建的.war文件。在成功构建WAR之后,部署将失败并出现AWS EB控制台的此错误。AWS CodePipeline ElasticBeanstalk部署失败

[实例:i-6605c4e1]命令在实例上失败。返回码:2输出:(截断)... opt/elasticbeanstalk/deploy/appsource/source_bundle +/usr/bin/unzip -o -d/tmp/deployment/application/ROOT/opt/elasticbeanstalk/deploy/appsource/source_bundle存档:/ opt/elasticbeanstalk/deploy/appsource/source_bundle mapname:转换失败。钩/opt/elasticbeanstalk/hooks/appdeploy/pre/02unzip.sh失败。有关更多详细信息,请使用控制台或EB CLI检查/var/log/eb-activity.log。

我可以拉一个更详细的信息包括在这里,但也许有人可以看到明显的东西,我想念我看不到。

我可以成功地将Jenkins/Maven生成的WAR文件直接部署到Elastic Beanstalk,但通过CodePipeline,部署失败。

谢谢!

+1

CodePipeline Jenkins插件将上传到S3之前将Jenkins作业“输出位置”压缩。是否WAR文件被压缩两次?你的Jenkins“输出位置”指向压缩的WAR文件吗?您可以尝试将其更改为生成WAR文件的未压缩路径。 – tapichu

+0

谢谢@tapichu!那就是诀窍。 – klesh

回答

1

只是为了回答这个问题并将其标记为已解决,我正在重申@tapichu提供的答案。

CodePipeline Jenkins插件将压缩Jenkins作业“输出位置”,然后将其上传到S3。

在Jenkins项目配置页面中,可以选择设置构建后操作。我选择了“AWS CodePipeline Publisher”这一操作,并最初将“输出位置”设置为构建项目的WAR文件。这是不正确。相反,请将输出位置设置为...

...到生成WAR文件的未压缩路径。

再次感谢@tapichu!

+0

从版本0.15开始,插件将按原样上传常规文件,而不再压缩它们。因此,您可以返回并更新输出位置以指向要上载的WAR文件。 – tapichu