AWS Elastic Beanstalk + Git子模块

时间:2013-08-14 07:24:50

标签: git amazon-web-services git-submodules elastic-beanstalk

我正在使用Amazon的Elastic Beanstalk通过Git部署我的应用程序,而且我的Git中有子模块。当然,当我查看子模块的数据所在的目录时,没有任何内容,因为子模块尚未初始化。

显然Elastic Beanstalk不支持子模块。它是否正确?如果是这样,我如何说服Git让我拥有子模块的功能,但是当我推送主回购时仍然上传子模块的所有代码?

4 个答案:

答案 0 :(得分:6)

如果您确保在Customizing and Configuring AWS Elastic Beanstalk Environments使用的AMI上安装了Git,则Elastic Beanstalk会支持子模块。您可以通过在git仓库中提供配置来实现:

  • 创建扩展名为.config的配置文件(例如myapp.config),并将其放在git repo的.ebextensions顶级目录中

    < / LI>
  • 在该文件中,指定依赖项:

   packages: 
      <name of package manager>:
         <package name>: <version>

例如:

   packages:
      yum:
         git: []
  • 确保您将name of package manager与您正在使用的AMI相匹配,例如对于Amazon Linux为yum,对于Ubuntu为apt

  • 您可能需要调整构建脚本来初始化子模块,因为EB不会为您做这些

  • 提交,推送和部署并转到

答案 1 :(得分:0)

哪个容器? Java,Ruby等?

有不同的部署工具,您不仅可以使用aws上提供的命令行eb。我一直在研究一个配置/ rake gem(使用eb_deployer),我将很快推出,只使用一个zip文件,而不是git push,这样就行了。您也可以尝试ebs-deploy

答案 2 :(得分:0)

如果您通过pip安装 awsebcli ,那么这可能会对您有所帮助。

我们在PyPi上找到了the source code for AWS-EB client 3.10.1

问题在于如何处理git repos,同时压缩项目的源代码以将其上传到AWS。如果您不为您的AWS项目使用git,则会压缩整个项目目录(包括您可能拥有的子目录下的任何其他git模块)并将其发送给AWS。如果您使用git,那么除了子模块之外的所有签入或暂存代码都会被压缩并发送到AWS。跳过Git子模块。

我们通过更改行为来为此问题编写了一个修补程序,以便子模块也会添加到压缩存档中。您可以在我们的git repo上看到github.com/uppercasebrands/awsebcli-3.10.1/compare/eb-deploy-submodule上的修复程序,它是从原始PyPi程序包创建的。

您可以使用pip安装现在支持子模块的固定awsebcli-3.10.1:

pip install --upgrade git+https://github.com/uppercasebrands/awsebcli-3.10.1.git@eb-deploy-submodule

答案 3 :(得分:0)

如果您使用的是CodePipeline,则可以使用CodeBuild获取所有子模块并将此工件自动提供给Elastic Beanstalk:https://medium.com/@cristiano.ventura/working-with-git-submodules-in-codepipeline-83e843e5d0a