我正在为我的应用程序自动执行Deployment Pipeline。这里是自动化架构,我想出了: AWS codeBuild/codePipeline with serverless framework
正如你所看到的,我使用codePipeline和codeBuild自动化部署我。我的后端基于Serverless Framework,它在发射sls deploy
命令时部署了lambda函数。这是原因,我没有用codeDeploy来做传统的部署。 buildspec.yml
文件看起来像这样:
version: 0.1
phases:
install:
commands:
– apt-get -y update
– npm install -g [email protected]
build:
commands:
– cd nj2jp/serverless && npm install
post_build:
commands:
– serverless deploy –verbose
artifacts:
files:
– serverless.yml
discard-paths: yes
现在,我有3方面问题到CodeBuild和无服务器:
问题1:上的文件的命令sls deploy
取决于称为config.yml
其中包含诸如db密码之类的秘密。这个文件不会被检入到git中。你认为在codeBuild中包含config.yml
的最佳方法是什么?
问题2:回滚可以用AWS做,如果我们不得不使用部署codeDeploy传统的EC2应用程序。在无服务器的情况下,我们不使用codeDeploy和无服务器也支持回滚功能。我们如何利用代码管道内的无服务器回滚?
问题3:当发生合并请求时触发代码管线。我看到一些帖子说,CodePipeline不支持它。但那些帖子是从去年开始的,现在是否支持code Pullline支持请求?
哈克答案(不正确的,但作品需要从你更好的答案。)
答1:的config.yml
文件可以保存在私人S3桶,可以拉到codeBuild作为pre-build
setup的一部分或者我们可以将所有秘密添加到codeBuild的Env变量中。我不喜欢第二种选择,因为我想在所有环境中保持一致。这个问题有什么更好的解决方案
回答2:我想不出这个问题。寻找你的答案。
答3:我所有使用[APIGateway + Lambda + S3]一些博客文章来触发codePipeline为引入请求。但我觉得,这个功能必须作为一个开箱即用的功能来提供。有关此功能的codePipeline有更新吗?
精彩回答!你的答案完全合理。只是好奇,你如何管理不同分支(prod,dev&stg)的环境(秘密)。我为'.env.prod','.env.dev'和'.env.stg'等每个环境使用了明确的'.env'文件。所有这些都没有检入到git中。 –
我的秘密都存储在EC2参数存储中。我的开发人员,分期和生产使用单独的AWS账户。所以,我可以轻松使用相同的变量名称,而不用担心冲突。 – dashmug
好啊!但是,您如何在当地环境中管理它?就像它将是相同的变量,但不同的值。你是否也版本控制env文件?如果是的话,这是有道理的。我认为,这对私人回购有好处。 –