我有一个Elastic Beanstalk Python应用程序。
所以我已经创建了构建脚本,我生成了一个deploy.zip文件,我将其部署到EB中。它确实像它想象的那样工作。
因此,在构建了用于构建与EB兼容的工件(我的deploy.zip)的脚本之后,我开始在我的gitlab-ci中配置EB cli以使用eb deploy
,因此它将部署到EB认证服务器,当进入开发分支时进行提交并进入EB生产时进入主服务器。 (现在我正在研究认证服务器)。
所以我确实阅读了文档并注意到eb会自己构建神器。但由于我已经拥有自己的构建脚本,因此部署了Artifact Instead of the Project Folder,因此我使用以下配置在其中创建了.elasticbeanstalk
文件夹和config.yml
。
deploy:
artifact: deploy.zip
所以我做了一个eb init
,确实设置了所有内容(区域,ID,密钥并选择了我现有的项目。
当我做eb deploy
时,它的工作正如它所设想的那样。所以我确实怀疑eb
本身正在制作de artifactory,所以我检查了配置文件,注意eb
已经在文件中添加了一堆其他配置,我的部署配置就在那里,所以对于另一项测试我删除了我的deploy.zip
所以当我做eb deploy
时,它就像它想象的那样失败了。
在此之前,所有内容都按照我的计划运行,因此在将git status
文件夹添加到git之前,我进行了.elasticbeanstalk
检查。令我惊讶的是,文件夹未列出且.gitignore
文件已更改。检查.gitignore
时,其中包含.elasticbeanstalk
。
所以它让我警惕是否应该将此文件夹添加到git中,因为eb
的默认行为是将其添加到忽略中。
我计划提交eb配置并使用环境变量设置密钥,如Configuration Settings and Precedence会话中所述。
我尝试运行eb deploy
而没有在命令之前传递env vars的配置,例如AWSAccessKeyId=<access_key> AWSSecretKey=<secret_key> eb deploy
,但它说我应该在它之前运行eb init
。
我不应该git eb
配置吗?如果不是,我应该如何进行使用EB的CI部署?
答案 0 :(得分:3)
.elasticbeanstalk
是eb cli存储其配置的地方。正如你所写的那样 - 有一个文件config.yml
,所以你可以自己创建它。当您拨打eb init
时,您的版本会被命令覆盖。
如果您只有一个环境,或者安全性不是问题 - 那么在您的存储库中拥有该配置是个好主意。您正在公开一些像ssh密钥名称的详细信息,因此出于安全考虑,并非所有人都应该看到它。我所有人都是公共回购。也许这就是为什么他们把它放到.gitignore
。
请注意,通常您拥有test
,pre-prod
,prod
,环境 - 因此无论如何都需要进行配置。下一步是一个单独的配置存储库,用于所有那些不喜欢的东西,你可以在那里拥有目录或每个环境的分支。
我同意你的看法,看起来很奇怪 - .ebextensions
并不是那么安全......
如果我遗漏了某些内容 - 发布问题,我会在此答案中附上澄清。