2016-05-10 200 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