4

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

基本上,在将 subversion 存储库转换为 git 存储库后,我遵循了Amazon 博客文章中详述的步骤。我按照这个 SO 答案中解释的步骤

完成上述步骤后,我发出命令 git aws.push,成功完成。但是在运行应用程序时,会出现错误和 . 于是从Beanstalk环境下载了war文件,发现文件夹结构乱了,源文件没有编译成class文件。看起来源文件是这样上传的。

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

4

3 回答 3

6

现在看来,我的问题有了答案。

aws.push不仅适用于 PHP 应用程序,还可以用于部署 Java 和 PHP 应用程序。我已经成功地与Apache Ant一起使用,并且该设置在我们的 UAT 环境中运行良好。

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

  1. 从 subversion 存储库中查看源代码
  2. 使用 Apache Ant 构建和创建 WAR 文件
  3. 将 WAR 文件分解到 git 存储库(使用 Amazon EB 工具初始化)
  4. 将分解后的文件添加到 git 存储库并提交更改。
  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

此脚本存在与陈旧类文件相关的已知问题。要摆脱它,您可能必须清理 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>
于 2012-10-09T12:24:12.470 回答
1

如果您使用 Maven 和Beanstalker,则 git aws.push 的等效功能可以恢复为单个命令,无论您是否使用 git。

$ mvn package beanstalk:fast-deploy

但要确保你的pom 准备好了

于 2014-02-10T23:03:46.777 回答
-1

我遇到了同样的问题 - 似乎 git 方法仅适用于 PHP 应用程序。

我目前正在寻找其他一些基于 Java 的工具,因为我不使用 Eclipse,而且 AWS 控制台是一种管理版本的笨拙方式(而且上传速度非常慢)。

于 2012-07-27T18:50:39.177 回答