我使用 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