我正在使用Amazon的Elastic Beanstalk通过Git部署我的应用程序,而且我的Git中有子模块。当然,当我查看子模块的数据所在的目录时,没有任何内容,因为子模块尚未初始化。
显然Elastic Beanstalk不支持子模块。它是否正确?如果是这样,我如何说服Git让我拥有子模块的功能,但是当我推送主回购时仍然上传子模块的所有代码?
答案 0 :(得分:6)
如果您确保在Customizing and Configuring AWS Elastic Beanstalk Environments使用的AMI上安装了Git,则Elastic Beanstalk会支持子模块。您可以通过在git仓库中提供配置来实现:
创建扩展名为.config
的配置文件(例如myapp.config
),并将其放在git repo的.ebextensions
顶级目录中
在该文件中,指定依赖项:
packages: <name of package manager>: <package name>: <version>
例如:
packages: yum: git: []
确保您将name of package manager
与您正在使用的AMI相匹配,例如对于Amazon Linux为yum
,对于Ubuntu为apt
。
您可能需要调整构建脚本来初始化子模块,因为EB不会为您做这些
提交,推送和部署并转到
答案 1 :(得分:0)
哪个容器? Java,Ruby等?
有不同的部署工具,您不仅可以使用aws上提供的命令行eb
。我一直在研究一个配置/ rake gem(使用eb_deployer),我将很快推出,只使用一个zip文件,而不是git push,这样就行了。您也可以尝试ebs-deploy。
答案 2 :(得分:0)
如果您通过pip安装 awsebcli ,那么这可能会对您有所帮助。
我们在PyPi上找到了the source code for AWS-EB client 3.10.1。
问题在于如何处理git repos,同时压缩项目的源代码以将其上传到AWS。如果您不为您的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
答案 3 :(得分:0)
如果您使用的是CodePipeline,则可以使用CodeBuild获取所有子模块并将此工件自动提供给Elastic Beanstalk:https://medium.com/@cristiano.ventura/working-with-git-submodules-in-codepipeline-83e843e5d0a