2012-07-04 151 views
4

我的團隊正在開發將部署在Amazon Elastic Beanstalk中的Java Web應用程序。開發環境是Eclipse和Subversion。他們能夠使用Eclipse插件進行部署,但爲了實現部署的自動化,我正在嘗試使用Amazon提供的CLI工具。將Java Web應用程序部署到Amazon Elastic Beanstalk

基本上,我在將Subversion版本庫轉換爲git存儲庫之後,遵循了Amazon Blog post中詳述的步驟。我跟着步驟this SO answer

解釋執行上述步驟之後,我發出的命令的git aws.push,其被成功完成。但在運行應用程序時,會出現錯誤和。所以我從Beanstalk環境下載了war文件,發現文件夾結構混亂,源文件沒有編譯成類文件。它看起來就像源文件一樣上傳。

在使用aws.push之前,我是否需要構建應用程序(使用ant)?或者我錯過了什麼?

+0

爲什麼不directy部署與'上傳和deploy'彈性魔豆戰爭的文件嗎? – Sorter

+0

那時我需要一個增量部署功能,並且使用aws.push真的很快 – libregeek

+0

@DeepakMishra你有關於如何通過CLI上傳和部署war文件的更多信息?我們正在構建我們的戰爭文件,並希望推動這些文件,而不是從Git推送。 – emilebaizel

回答

-1

我有同樣的問題 - 它似乎git方法只能用於PHP應用程序。

我目前正在尋找一些其他的基於Java的工具,因爲我不使用Eclipse,而AWS控制檯是管理髮布的笨重的方式(與上傳速度很慢)。

+0

回答中不會提出其他問題,可以將評論添加到clarfy/ask中。 – Rndm

+0

-maven-beanstalk-plugin的-SNAPSHOT構建包含基於maven項目的基於git的部署實驗支持 – aldrinleal

6

現在看來我的答案是我的問題。

aws.push不僅適用於PHP應用程序,也可用於部署Java和PHP應用程序。我已成功使用Apache Ant,並且該設置在我們的UAT環境中正常工作。

我開發一個shell腳本執行以下操作:

  1. 退房從Subversion版本庫
  2. 編譯源代碼和創建WAR文件採用Apache Ant
  3. 爆炸WAR文件到一個Git倉庫(使用亞馬遜 EB工具初始化)
  4. 分解的文件添加到混帳回購協議並提交更改。
  5. 使用aws.push將戰爭文件部署到EB。

(我沒有訪問shell腳本現在,所以我可能無法提供詳細的命令)

這裏是Shell腳本的基本形式

source_dir="/home/libregeek/myapp" 
workingcopy="$source_dir/trunk" 
gitrepo="$source_dir/gitrepo" 
cd $workingcopy 
svn update 
ant createwar 
cd $gitrepo 
unzip -o $workingcopy/build/myapp.war 
git add * 
git commit -m "Deployed new version" 
git aws.push 

這個腳本涉及到陳舊的類文件存在一個已知的問題。爲了擺脫它,你可能需要清理git repo。

這裏是Ant目標:

<target name="createwar" depends="build" description="Create WAR file for deployment"> 
<war destfile="${alternate.path}/${name}.war" webxml="${web.dir}/WEB-INF/web.xml"> 
<fileset dir="${web.dir}"> 
<include name="**/*.*"/> 
</fileset> 
</war> 
</target> 
+0

如果您分享了您的腳本,我會爲您的答案投票!謝謝。 –

+0

您是什麼時候做的,Elastic Beanstalk是否仍然捆綁爆炸的WAR,以便您可以在不同版本之間來回切換? –

+0

是的,你可以在版本之間切換。 – libregeek

1

它你使用Maven和Beanstalker,混帳aws.push相當於功能可以恢復到一個單一的命令,如果不管你使用的git或不。

$ mvn package beanstalk:fast-deploy

但要確保你的pom is ready

相關問題