You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求咨询: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_

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 12:25:01