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

Jenkins如何配置生产部署前构建测试仓库完成BDD测试校验?

Jenkins配置Cucumber BDD测试卡点实现生产部署管控

核心逻辑是把全量BDD测试作为master分支合并后生产部署的强制前置门禁,只有测试100%通过才放行部署流程,具体配置步骤如下:

前置准备

  • 提前在Jenkins安装必备插件:Git Plugin、Pipeline Plugin、Parameterized Trigger Plugin、Credentials Binding Plugin、Cucumber Reports Plugin、Workspace Cleanup Plugin
  • 本地调试通Cucumber-Java项目的全量执行命令,确保执行对应命令可以自动跑完全部用例、输出标准Cucumber测试报告,比如Maven项目默认执行mvn clean test即可触发全量用例
  • 提前在Jenkins配置好服务代码仓库、BDD测试仓库的拉取凭证,同时确认执行测试的Jenkins节点网络可达待上线预发环境、生产环境,避免网络策略拦截导致测试失败
  • 提前在代码托管平台(GitLab/GitHub/Gitea等)配置好webhook,确保服务仓库master分支有代码合并推送时,能正常触发Jenkins任务

第一步:创建BDD全量测试专用Jenkins任务

这个任务只负责执行全量Cucumber测试、输出测试结果,配置项如下:

  • 源码管理选择Git,绑定BDD测试仓库地址,拉取分支指定为*/master
  • 构建环境勾选「每次构建前清空工作空间」,避免历史缓存的旧代码、旧报告干扰本次测试结果
  • 构建步骤选择执行Shell(Linux节点)/Windows批处理命令(Windows节点),写入提前调试好的测试执行命令,注意传入待测试服务的地址参数,示例:
# Maven项目示例,指定测试目标环境为刚构建完成的待上线预发服务地址
mvn clean test -Dtest.base-url=${TEST_TARGET_ENV}
  • 构建后操作配置:
    • 新增Cucumber报告收集配置,指定测试报告的json路径(一般Maven项目默认路径为target/cucumber-reports/*.json),方便失败时快速定位问题用例
    • 配置结果判定规则:只要存在1个失败、异常跳过的用例,直接将任务标记为失败,不要设置为「不稳定」状态
  • 配置任务超时规则:根据日常全量用例的执行时长设置超时阈值(比如日常跑25分钟就设40分钟超时),超时直接判定任务失败,避免测试进程僵死卡住整个发布流程
  • 保存任务,记录任务名称(比如命名为prod-bdd-full-regression),后续主流水线会调用这个任务

第二步:配置服务master分支主发布流水线

这个任务是整个流程的入口,绑定服务代码的master分支,按阶段配置执行逻辑:

  • 源码管理选择Git,绑定服务代码仓库地址,拉取分支指定为*/master
  • 构建触发器选择「Git webhook触发」,对应之前配置的代码平台webhook,确保master分支有代码合并时自动触发该流水线
  • 按顺序配置三个执行阶段,禁止开放普通用户的阶段跳过权限,仅管理员可操作跳过:
    1. 构建制品阶段:拉取master分支最新代码,编译打包生成可部署的服务制品,上传到内部制品库,同时将制品部署到隔离的预发验证环境,不要直接部署生产
    2. BDD测试卡点阶段:通过Parameterized Trigger插件触发第一步创建的BDD测试任务,必须勾选等待下游任务执行完成选项,同时将预发环境地址、当前构建的服务版本号作为参数传递给BDD测试任务;配置结果传递规则:下游BDD测试任务只要不是成功状态,直接终止当前整个流水线,标记为失败
      如果是使用Jenkinsfile编写声明式流水线,该阶段示例代码如下:
    stage('全量BDD回归测试门禁') {
      steps {
        build(
          job: 'prod-bdd-full-regression',
          parameters: [
            string(name: 'TEST_TARGET_ENV', value: "http://预发环境服务访问地址"),
            string(name: 'SERVICE_VERSION', value: "${env.BUILD_ID}")
          ],
          wait: true,
          propagate: true // 下游测试失败时,当前流水线直接标记失败
        )
      }
    }
    
    1. 生产部署阶段:只有前两个阶段全部执行成功,才会进入该阶段,执行生产环境部署脚本,把制品库中对应版本的服务制品发布到生产集群

第三步:流程验证与兜底配置

  • 做一次全流程验证:向服务master分支合并测试代码,确认流水线会先构建服务、再自动触发全量BDD测试;故意修改一个BDD用例构造失败场景,确认流水线会在测试阶段终止、不执行生产部署;再恢复用例让测试全部通过,确认流程会自动走到生产部署步骤
  • 配置通知规则:BDD测试失败导致流程终止、生产部署完成两个节点,都自动给对应的开发、测试团队发送通知,失败通知里直接附Cucumber测试报告的访问路径,减少排查时间

内容的提问来源于stack exchange,提问作者SmriG6

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 01:42:27