5

I'm using Amazon's Elastic Beanstalk to deploy my app via Git, and I've got submodules within my Git. Of course, when I look at the directories where the data for the submodules should be, nothing is there because the submodules have not been initialized.

Apparently Elastic Beanstalk doesn't support submodules. Is this correct? If so, how can I convince Git to let me have the features of a submodule but still upload all the code of the submodule when I push the main repo?

4

4 回答 4

6

如果您通过自定义和配置 AWS Elastic Beanstalk 环境确保您使用的 AMI 上安装了 Git,则 Elastic Beanstalk 确实支持子模块。你可以通过在你的 git repo 中提供一个配置来做到这一点:

  • 创建一个带有扩展名.config(例如,myapp.config)的配置文件,并将其放在.ebextensionsgit repo 的顶级目录中

  • 在该文件中,指定依赖项:

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

例如:

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

  • 您可能需要调整构建脚本来初始化子模块,因为 EB 不会为您执行此操作

  • 提交、推送和部署,然后执行

于 2014-03-28T06:23:08.627 回答
0

哪个容器?Java、Ruby 等?

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

于 2013-08-14T20:14:10.340 回答
0

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

我们在 PyPi 上找到了 AWS-EB 客户端 3.10.1 的源代码。

问题在于如何在压缩项目的源代码以将其上传到 AWS 时处理 git repos。如果您的 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

于 2017-05-18T12:08:20.987 回答
0

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

于 2020-10-26T13:40:24.583 回答