请求咨询:Pull Request触发独立构建环境并运行E2E测试的方案
可行方案及实现细节
1. Bitbucket Pipeline 触发与跨仓库联动
首先在FE、BE、E2E三个仓库的bitbucket-pipelines.yml中配置PR专属触发规则,确保仅在PR推送时执行流程:
pipelines: pull-requests: '**': - step: name: 启动PR环境部署流程 script: - # 调用共用部署脚本或触发跨仓库任务
通过Bitbucket的Repository Variables存储AWS密钥、域名后缀等共用配置;利用Pipeline Triggers实现跨仓库触发——比如FE/BE的PR推送时,自动触发E2E仓库的测试流程。
2. PR专属环境的Docker部署
前端(React)
- 构建带PR编号的镜像:
docker build -t my-fe:pr-${BITBUCKET_PR_ID} . - 用Nginx或Traefik做反向代理:Traefik可自动识别容器标签,生成
pr-${BITBUCKET_PR_ID}.mydomain.com的子域名路由;也可通过AWS Route 53动态添加DNS记录,指向EC2/ECS上的前端容器实例。
后端(Django REST Framework)
- 构建带PR编号的镜像:
docker build -t my-be:pr-${BITBUCKET_PR_ID} . - 启动独立临时数据库:用Docker启动PostgreSQL容器,或创建AWS RDS临时实例(测试完成后销毁),避免污染生产/Staging数据库。
- 配置环境变量:设置
ENVIRONMENT=pr-${BITBUCKET_PR_ID},确保后端服务识别当前为PR专属环境。
3. PR环境的生命周期管理
- 创建脚本:在Pipeline中自动执行DNS记录添加、容器启动、数据库初始化等操作
- 清理脚本:监听PR关闭/合并的Webhook事件,自动销毁对应容器、删除DNS记录、清理临时数据库;可配合AWS Lambda+CloudWatch实现自动化清理
- 成本控制:设置资源超时销毁规则,避免闲置PR环境产生不必要的AWS费用
4. E2E测试在PR环境执行
- 在E2E仓库的Pipeline中,通过
BITBUCKET_PR_ID变量拼接PR环境地址:pr-${BITBUCKET_PR_ID}.mydomain.com/app - 配置测试框架(Cypress/Playwright)的
baseURL为该地址,直接在PR环境运行测试 - 测试完成后,将结果写入Bitbucket PR评论区,方便开发者快速查看
5. 核心注意事项
- 资源隔离:每个PR环境的容器、数据库完全独立,避免互相干扰
- 权限配置:给Bitbucket Pipeline绑定AWS IAM角色,授予创建/销毁ECS容器、Route 53记录、RDS实例的最小权限
- 构建优化:在Pipeline中缓存Docker构建层、前端依赖包,缩短构建时间
内容的提问来源于stack exchange,提问作者Hamodey_
相关产品推荐
相关产品推荐

