我正在尝试为我的应用程序自动化部署管道。这是自动化架构,我想出了:
如您所见,我正在使用codePipeline和codeBuild来自动化我的部署。我的后端基于无服务器框架sls deploy
,它在触发命令时部署 lambda 函数。这就是原因,我没有使用codeDeploy来做传统的部署。buildspec.yml
文件如下所示:
version: 0.1
phases:
install:
commands:
– apt-get -y update
– npm install -g serverless@1.9.0
build:
commands:
– cd nj2jp/serverless && npm install
post_build:
commands:
– serverless deploy –verbose
artifacts:
files:
– serverless.yml
discard-paths: yes
现在,我有3 个关于CodeBuild和Serverless的问题:
问题1:该命令sls deploy
依赖于一个名为的文件,该文件config.yml
包含数据库密码等机密。该文件不会被检入 git。您认为包含config.yml
在 codeBuild 中的最佳方式是什么?
问题 2: 如果我们必须使用codeDeploy部署传统的 EC2 应用程序,可以使用 AWS 完成回滚。在 serverless 的情况下,我们不使用codeDeploy并且 serverless 也支持回滚功能。我们如何在codePipeline中利用无服务器回滚?
问题 3:Pull Request发生时触发 codePipeline 。我看到一些帖子说,codePipeline 不支持。但是这些帖子是去年的,codePipeline 现在是否支持 Pull Request?
破解答案(不正确,但有效。需要您提供更好的答案。)
答案 1:该config.yml
文件可以保存在私有S3 存储桶中,并且可以作为设置的一部分拉到 codeBuild,pre-build
或者我们可以将所有机密添加到 codeBuild 的 Env 变量。我不喜欢第二种选择,因为我希望在所有环境中保持一致。这个问题有更好的解决方案吗?
答案 2:我想不出有什么破解之法。期待你的答案。
答案 3:我看到一些博客文章使用[APIGateway + Lambda + S3]来触发codePipeline以进行拉取请求。但我觉得,这个功能必须作为开箱即用的功能提供。此功能的 codePipeline 是否有任何更新?