我有一个存储库,在github上托管我的lambda函数。我希望能够在新逻辑推送到主控时部署新版本。
我做了很多研究,发现了一些不同的方法,但没有什么是明确的。想知道其他人认为最好的方法是什么,也许还有一些细节(如果可能的话)如何设置管道。
谢谢
我知道这不是你要求的,但我使用无服务器框架(https://serverless.com)进行部署,我喜欢它。当我推送我的回购时,我不进行部署。相反,在我部署之后,我会推送到我的仓库。我喜欢这种流程,因为部署可能因为很多事情而失败,而且推送到GitHub的可能性要小得多。我这样做,我阻止推送无法部署到我的主分支的代码。
我不知道你是否熟悉这个框架,但它非常简单。该网站描述了创建和部署此类功能的简单步骤。
1 # Step 1. Install serverless globally
2 $ npm install serverless -g
3
4 # Step 2. Create a serverless function
5 $ serverless create --template hello-world
6
7 # Step 3. deploy to cloud provider
8 $ serverless deploy
9
10 # Your function is deployed!
11 $ http://xyz.amazonaws.com/hello-world
您还可以使用许多插件轻松地与APIGateway上的自定义域集成,修剪旧版本的lambda函数,这些函数可能会填满您的限制等等...
总的来说,我发现它是管理和部署我的lambda的最简单方法。希望能帮助到你!
欢迎来到StackOverflow。您可以通过阅读this页面来改善您的问题。
您可以使用CircleCI with its GitHub integration(这是一个在线服务,因此您不需要维护任何内容,例如Jenkins服务器)来设置CI / CD管道。
每次提交到您的存储库时,都会触发CircleCI构建。一旦构建过程结束,您可以声明sls deploy
,sam deploy
,使用Terraform甚至创建一个脚本,将.zip文件从GitHub仓库上传到S3 Bucket,然后在脚本中调用create-function命令。有一个例子说明如何使用CircleCI和Serverless Framework here部署无服务器应用程序
其他选项包括TravisCI,AWS Code Deploy甚至维护您自己的CI / CD服务器。同样的逻辑适用于所有这些工具:commit - > build - > deploy(使用您选择的工具之一)。
编辑:在@Matt的回答之后,它点击了OP从未提及无服务器框架(我,不知何故,以为他已经在使用它,所以我指出OP已经使用无服务器框架的教程)。然后,我决定使用其他一些无服务器部署选项来更新我的答案
鉴于您使用的是AWS Lambda,您可能需要考虑CodePipeline来自动化您的发布过程。 [SAM(https://docs.aws.amazon.com/lambda/latest/dg/serverless_app.html)也可能很有趣。