AWS Elastic Beanstalk + Git 子模块
Posted
技术标签:
【中文标题】AWS Elastic Beanstalk + Git 子模块【英文标题】:AWS Elastic Beanstalk + Git Submodules 【发布时间】:2013-08-16 01:00:45 【问题描述】:我正在使用 Amazon 的 Elastic Beanstalk 通过 Git 部署我的应用程序,并且我的 Git 中有子模块。当然,当我查看子模块的数据应该在的目录时,什么都没有,因为子模块还没有被初始化。
显然 Elastic Beanstalk 不支持子模块。它是否正确?如果是这样,我如何说服 Git 让我拥有子模块的功能,但在我推送主 repo 时仍然上传子模块的所有代码?
【问题讨论】:
【参考方案1】:如果您使用 CodePipeline,有一种方法可以使用 CodeBuild 获取所有子模块并自动将此工件提供给 Elastic Beanstalk:https://medium.com/@cristiano.ventura/working-with-git-submodules-in-codepipeline-83e843e5d0a
【讨论】:
【参考方案2】:如果您只需确保 Git 安装在 Customizing and Configuring AWS Elastic Beanstalk Environments 使用的 AMI 上,Elastic Beanstalk 确实支持子模块。你可以通过在你的 git repo 中提供一个配置来做到这一点:
创建一个扩展名为.config
(例如myapp.config
)的配置文件,并将其放在你的git repo的.ebextensions
***目录中
在该文件中,指定依赖项:
packages: <name of package manager>: <package name>: <version>
例如:
packages: yum: git: []
确保将 name of package manager
与您正在使用的 AMI 匹配,例如,yum
用于 Amazon Linux,apt
用于 Ubuntu。
您可能需要调整构建脚本来初始化子模块,因为 EB 不会为您这样做
提交、推送和部署并开始
【讨论】:
【参考方案3】:如果您使用通过 pip 安装的 awsebcli,那么这可能会对您有所帮助。
我们在 PyPi 上找到了the source code for AWS-EB client 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 查看修复,该 repo 是从原始 PyPi 包创建的。
您可以使用 pip 安装现在支持子模块的固定 awsebcli-3.10.1:
pip install --upgrade git+https://github.com/uppercasebrands/awsebcli-3.10.1.git@eb-deploy-submodule
【讨论】:
【参考方案4】:哪个容器? Java、Ruby 等?
有不同的部署工具,您不只是受困于 aws 提供的命令行 eb
。我一直在研究一个 config/rake gem(使用eb_deployer),我很快就会发布它,它只使用一个 zip 文件,而不是一个 git push,这样就可以了。你也可以试试ebs-deploy。
【讨论】:
我正在使用节点。不过,这是一个很好的观点,很有趣。我还在考虑在安装后运行一个节点构建脚本,这可能是我最终要做的。 我终于完成了宝石。有关想法,请参阅 github.com/alienfast/elastic-beanstalk。以上是关于AWS Elastic Beanstalk + Git 子模块的主要内容,如果未能解决你的问题,请参考以下文章
AWS Elastic Beanstalk .ebextensions 文件创建不起作用(apache 配置)
如何设置运行 Django 的 AWS Elastic Beanstalk Docker 平台?
具有相同 .gitignore 的 AWS Elastic Beanstalk 和 Github
AWS Elastic Beanstalk 和 JAVA_OPTS