繁体   English   中英

AWS Elastic Beanstalk + Git 子模块

[英]AWS Elastic Beanstalk + Git Submodules

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

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

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

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

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

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

例如:

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

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

  • 提交、推送和部署然后开始

哪个容器? Java、Ruby 等?

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

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

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

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

我们通过更改行为来解决此问题,以便将子模块也添加到压缩存档中。 您可以在 github.com/uppercasebrands/awsebcli-3.10.1/compare/eb-deploy-submodule 上看到我们的 git 存储库中的修复,它是从原始 PyPi 包创建的。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM