如何通过单个AWS CodePipeline对接两个Bitbucket仓库实现CICD?
单AWS CodePipeline对接Bitbucket双仓库实现前后端CICD方案
可行性说明
完全可行。AWS CodePipeline支持多源阶段配置,或通过单个源阶段配合CodeBuild拉取双仓库代码,结合分模块构建部署逻辑,就能实现单流水线处理前后端两个项目的需求。
实现方式与流程
方案一:配置多源阶段独立触发
- 在CodePipeline中添加两个独立的源阶段,分别对接Bitbucket前端、后端仓库:
- 每个源阶段选择Bitbucket作为源提供商,配置对应仓库的分支、OAuth授权信息
- 可设置触发条件:仅当对应仓库目标分支有代码提交时,触发该源阶段启动流水线
- 构建阶段设置并行任务:
- 前端构建:关联专属CodeBuild项目,拉取前端源代码,执行打包、ECR镜像构建推送等操作
- 后端构建:关联后端CodeBuild项目,完成代码编译、镜像构建推送
- 部署阶段:
- 可选择并行部署到ECS Fargate的前后端服务,或按依赖顺序部署(如先后端再前端)
- 每个部署动作对应ECS中各自服务的更新任务
方案二:单源阶段+CodeBuild拉取双仓库
- 配置单个源阶段对接其中一个仓库(如后端仓库),作为流水线触发源
- 在对应CodeBuild项目的
buildspec.yml中添加脚本,拉取第二个仓库代码:# 从Secrets Manager读取Bitbucket访问令牌 BB_TOKEN=$(aws secretsmanager get-secret-value --secret-id bitbucket-access-token --query SecretString --output text) # 拉取前端仓库代码到指定目录 git clone https://x-token-auth:${BB_TOKEN}@bitbucket.org/[你的账号]/frontend-repo.git ./frontend - 在同一个CodeBuild项目中依次执行前后端的构建、镜像推送操作
- 部署阶段同步更新ECS前后端服务
流程运作逻辑
- 方案一:任意仓库提交代码时,对应源阶段触发流水线,后续并行完成前后端构建部署(或仅触发对应模块的流程,需额外配置阶段跳过规则)
- 方案二:仅指定仓库提交时触发流水线,CodeBuild拉取双仓库代码后统一构建,再完成部署
关键注意事项
- 权限配置:确保CodePipeline/CodeBuild拥有Bitbucket仓库读取权限、ECR镜像推送权限、ECS服务更新权限
- 版本一致性:若前后端存在版本依赖,方案二中可通过指定拉取前端仓库的特定标签/分支确保版本匹配;方案一中可通过流水线执行ID关联前后端构建版本
- 触发规则:方案一可通过源阶段的触发条件,实现仅对应仓库提交时触发对应模块的构建部署,避免无效全流程执行
内容的提问来源于stack exchange,提问作者Rehan Shakeel
相关产品推荐
相关产品推荐

