Amazon Elastic Beanstalk + Git 子模块

Amazon Elastic Beanstalk + Git 子模块

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

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

我正在使用 node.js,所以我认为安装脚本可能是最好的选择

答案1

  • 如果您没有太多子模块(并且您不经常更改或更新它们),那么您可以用静态文件替换它们。

  • PHP 社区中的许多人开始不再使用 Git 子模块管理依赖项,而是使用 Composerhttp://getcomposer.org/。这可能会使您的部分部署流程变得更简单。

  • 这里还概述了一个解决方案https://forums.aws.amazon.com/message.jspa?messageID=474880最后一条评论(2013 年 8 月 1 日下午 1:37,作者:oquismail)向您展示了如何修改 Elastic beanstalk 配置文件

  • 您可以考虑通过以下方式管理部署https://github.com/briandilley/ebs-deploy(用于管理 Amazon Elastic Beanstalk 应用程序的基于 Python 的命令行工具。)

答案2

你也可以只git clone使用子模块来返回独立的 Git 存储库。请参阅https://stackoverflow.com/q/29246750/242933

答案3

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

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

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

我们通过更改行为来修复此问题,以便将子模块也添加到压缩档案中。您可以在 github.com/uppercasebrands/awsebcli-3.10.1/compare/eb-deploy-submodule 上查看修复程序,该修复程序位于我们从原始 PyPi 包创建的 git repo 中。

您可以使用 pip 安装已修复的 awsebcli-3.10.1,它现在支持子模块:

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

相关内容