将Java Web应用程序部署到Amazon Elastic Beanstalk

lib*_*eek 4 java git-svn amazon-web-services amazon-elastic-beanstalk

我的团队正在开发一个Java Web应用程序,该应用程序将部署在Amazon Elastic Beanstalk中.开发环境是Eclipse和Subversion.他们能够使用Eclipse插件部署它,但为了自动化部署,我正在尝试亚马逊提供的CLI工具.

基本上,在将subversion存储库转换为git存储库之后,我遵循了亚马逊博客文章中详述的步骤.我按照这个SO答案中解释的步骤进行了操作

按照上面的步骤,我发出了命令git aws.push,该命令已成功完成.但是在运行应用程序时,有错误和.所以我从Beanstalk环境下载了war文件,发现文件夹结构搞砸了,源文件没有编译成类文件.看起来源文件是这样上传的.

在使用aws.push之前,我是否需要构建应用程序(使用ant)?或者我错过了什么?

lib*_*eek 6

现在看来我的答案就是我的问题.

aws.push不仅适用于PHP应用程序,而且还可用于部署Java和PHP应用程序.我已经成功地与Apache Ant一起使用,并且设置在我们的UAT环境中工作正常.

我开发了一个shell脚本,它执行以下操作:

  1. 查看subversion存储库中的源代码
  2. 使用Apache Ant构建和创建WAR文件
  3. 将WAR文件分解为git存储库(使用Amazon EB工具初始化)
  4. 将展开的文件添加到git repo并提交更改.
  5. 使用aws.push将war文件部署到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
Run Code Online (Sandbox Code Playgroud)

此脚本存在与过时类文件相关的已知问题.要逃脱它,你可能需要清理git repo.

这是蚂蚁目标:

<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>
Run Code Online (Sandbox Code Playgroud)