AWS CodeCommit是一个托管的、安全的、Git源代码管理服务。AWS CodeCommit主要针对企业内部代码协作,所以他并没有像Github或者Gitlab一样实现一些社交相关的功能,比如fork和喜欢等。Gerrit Code Review是一款成熟且被Andorid和Eclipse基金会项目广泛使用的代码协作工具,AWS CodeCommit也很容易借鉴Gerrit的思路用于各种开发团队的协作。
这里推荐的最佳实践由以下特性和工作流程组成,
- 每个代码仓库用户包含两种角色,
- 代码仓库
所有者
或维护者
- 代码仓库
开发参与者
- 代码仓库
开发参与者
有权限读取仓库,从仓库拉取代码更新,但仅可以将代码推送到特定前缀开头的分支,例如pr/
,features/
和bugs/
。参与者
能够创建、关闭和评论代码合并请求
。- 代码仓库
所有者
或维护者
除了拥有参与者
权限外,还具备一些仓库管理权限。例如,更新仓库信息,同意以及执行合并代码合并请求
。 - 任何人都不可以直接推送代码到仓库主分支,包括仓库
所有者
或维护者
。 - 每一个新创建的
代码合并请求
以及代码合并请求
源分支的代码变动将自动触发AWS CodeBuild服务为该仓库集成的PR构建
。该构建会将状态已评论的形式更新回对应的代码合并请求
。如果构建成功,会为对应的代码合并请求
的同意合并
投票加一。 - 默认的最佳合并请求规则会被创建且关联到对应仓库上。该合并规则要求
代码合并请求
至少需要收到两票同意合并
投票才可被合并。 - AWS CodeBuild构建/AWS CodePipeline流水线会被创建,同仓库的主分支所关联。每当主分支有的代码更变,将自动触发该仓库的部署,同整体业务系统的集成。
完整的工作流程图如下,
这个最佳实践通过AWS CDK/CloudFormation贯穿了基础架构即代码的理念,即使企业有成百数千的代码仓库也可以按最佳实践的方式统一管理。
- 安装 Node LTS 版本(例如 12.x)
- 安装 Docker Engine(用于部署前编译Typescript所写的Lambda代码)
- 为 awscli 配置你的 AWS 账户
# 安装项目部署依赖及 Lambda 函数依赖。如首次使用 AWS CDK,初始化 cdk toolkit。
npm run init
# 部署
npm run deploy
npm run cleanup
This sample code is made available under the MIT-0 license. See the LICENSE file.