基于AWS CodeCommit与Amplify生成发布说明及版本更新咨询
AWS原生解决方案实现CodeCommit分支合并后的版本更新与发布说明生成
针对你用AWS CodeCommit做版本控制、Amplify部署的场景,这里提供两个AWS原生的实现方案,完全适配CodeCommit环境,无需依赖GitHub生态工具:
方案一:CodePipeline + Lambda 自动化流程
这个方案适合需要灵活流程控制的场景,能完整覆盖版本更新、发布说明生成、触发部署的全链路:
- 配置CodePipeline触发规则:创建以CodeCommit main分支为源的Pipeline,设置触发条件为「分支有代码合并」。Pipeline的源阶段直接拉取CodeCommit最新代码。
- 编写核心Lambda函数:
- 用AWS SDK的CodeCommit客户端拉取仓库提交历史,解析合并到main分支的所有提交记录(可通过对比合并前后的commit ID范围实现)。
- 基于语义化提交规范(比如
feat:/fix:前缀)提取提交信息,生成结构化发布说明文件(比如RELEASE_NOTES.md或release-notes.txt),支持直接导出。 - 使用
semver库自动升级package.json版本号:比如feat类型提交升minor版本,fix类型升patch版本,破坏性变更升major版本。 - 通过CodeCommit的
PutFileAPI将修改后的package.json和发布说明文件提交回main分支(提交信息可设为chore: bump version and generate release notes)。
- 衔接Amplify部署:Lambda提交更新后的代码回main分支后,Amplify监听分支变更会自动触发构建部署;也可以在Pipeline中添加部署阶段,直接调用Amplify部署API触发部署。
方案二:Amplify自定义构建脚本
如果不想额外搭建CodePipeline,直接在Amplify构建流程中嵌入逻辑更轻量:
- 修改Amplify的buildspec.yml:在构建脚本中加入分支判断和版本处理逻辑:
version: 1 phases: preBuild: commands: - if [ "$AWS_BRANCH" = "main" ]; then npm install semver git-cli; git config --global user.name "Amplify Build Bot"; git config --global user.email "amplify-bot@example.com"; fi build: commands: - npm run build postBuild: commands: - if [ "$AWS_BRANCH" = "main" ]; then # 解析提交记录生成发布说明 node generate-release-notes.js; # 更新package.json版本号 CURRENT_VERSION=$(jq -r '.version' package.json); NEW_VERSION=$(npx semver -i minor "$CURRENT_VERSION"); # 可根据提交类型调整规则 jq --arg version "$NEW_VERSION" '.version = $version' package.json > temp.json && mv temp.json package.json; # 提交修改到CodeCommit git add package.json RELEASE_NOTES.md; git commit -m "chore: bump version to $NEW_VERSION and generate release notes"; git push origin main; fi - 配置IAM权限:给Amplify的服务角色添加CodeCommit的
GitPush、GetRepository等权限,确保Amplify能提交代码回仓库。 - 发布说明生成脚本:编写
generate-release-notes.js脚本,调用git命令拉取最近提交记录,过滤出合并到main的提交并整理成说明文件。
关键注意事项
- IAM权限配置:无论用哪种方案,执行角色都需要CodeCommit的读写权限,以及CloudWatch Logs权限用于日志排查。
- 提交规范约定:提前约定团队使用语义化提交规范,这样脚本能准确识别提交类型,自动匹配版本升级规则并生成清晰的发布说明。
- 发布说明存储:生成的发布说明文件除了提交到仓库,还可以上传到S3桶,方便团队成员下载或集成到其他系统。
内容的提问来源于stack exchange,提问作者dcp3450
相关产品推荐
相关产品推荐

