Serverless Framework Pro 实践之 CI/CD
Serverless Framework Pro 版是个 SaaS 应用,是个托管的 Dashboard。
本文主要实践 Serverless Framework Pro 的 CI/CD 功能。
配置 CI/CD 功能
CI/CD 功能是 Service 级别的,点击 Service 处的 settings 开始配置:
CI/CD 一边连接的是 Git 代码平台(目前支持 GitHub 和 BitBucket),另一边连接的是云服务(目前仅支持 AWS)。
代码工具这里选择 GitHub,点击 connect,会弹出一个对话框,需要 GitHub 进行授权, 授权后会在 GitHub 用户下安装 Serverless app:
在 git 和 aws 配置好后,选择代码仓库和 base 目录:
构建设置中,可以选择部署到哪个 region,也可以配置指定文件变化时才触发构建:
分支部署中,可以指定哪个分支部署到哪个 stage (注意:branch 和 stage 都必须是目前存在的,如果新增了分支,就必须手动修改配置):
预览部署,可以在创建 PR 时,自动部署一个环境,以便预览。
这个环境所在的 stage 名称和分支名称一样(注意:这里需要考虑预览环境和分支环境是否会覆盖的问题)
可以选择在分支删除时,删除对应的 stage 和资源;
也可以选择部署到指定的 stage,但是如果有多个到 master 分支的 PR,环境会互相覆盖。
通知支持在部署开始、结束时,发送一些消息:
触发 CI/CD,查看运行情况
根据上面配置的规则,让我们看下整个 CI/CD 流程。
- 往 dev 分支提交一下代码,便会自动部署到 stage: dev-stage;
- 创建一个 到 dev 分支到 master 分支的 Pull Request,便会自动部署到 stage:dev;
- 合并这个 Pull Request 到 master 分支便会将 master 分支部署到 stage:prod;
- 合并 Pull Request 后删除 dev 分支,便会删除 stage:dev 和对应资源。
点击 Serverless Dashboard 左侧 ci/cd 菜单,CI/CD 部署记录截图如下:
在每个 stage 的 deploys 页面,也可以看到部署记录:
GitHub 提交记录处,可以看到 CI/CD 部署记录链接,点击便可跳转到 Serverless Dashboard 页面:
此外,GitHub PR 页面也可以看到部署记录,预览部署截图如下:
问题与思考
遇到的问题以及思考:
- 代码仓库下拉菜单无法获取某个 GitHub 组下面的仓库
- 官方博客推荐将不同的 stage 部署到不同的 aws 账户下,做到资源安全隔离。但是目前 Serverless Dashboard 并不支持不同的 stage 绑定不同的 aws provider。
- CI/CD 比较基础,无法做一些定制化操作。
总结
本文实践了如何在 Serverless Dashboard 配置 CI/CD,以及通过代码提交或 Pull Request 事件触发 CI/CD,完整体验了 CI/CD 流程。最后提出自己的一些观点。