GitLab CI/CD未传标签时自动运行SANITY测试模块配置方案
配置修复方案
现有配置存在3个核心问题导致无参数时无法自动执行SANITY测试:
- 未给
Tag变量配置默认值,不传参时Cucumber过滤标签参数为空,无法匹配冒烟测试用例 rules逻辑存在错误:判断条件写的是$Tag == "reg",和实际传入的regression参数值不匹配;且没有兜底触发规则,不满足条件时任务不会被加入流水线script里的参数加了不必要的嵌套引号,容易引发Maven参数解析异常
注意:Job层级的tags字段是GitLab用来匹配对应标签Runner的配置,和Cucumber测试标签没有关联,不要混淆
修正后完整配置
stages: - build cucumber_test: stage: build tags: [regression , sanity] allow_failure: false script: # 采用GitLab CI变量默认值语法,未传入Tag参数时自动使用sanity作为过滤标签 - mvn clean test -Dcucumber.filter.tags="@${Tag:-sanity}" rules: # 匹配传入regression标签的场景,按需求设置允许失败 - if: '$Tag == "regression"' allow_failure: true # 兜底规则,其余场景(包括未传参跑SANITY的场景)正常触发任务 - when: on_success artifacts: paths: - Report when: always
核心改动说明
- 替换原有
%Tag%占位符为GitLab CI原生变量语法${Tag:-sanity}:当流水线启动时未传入Tag变量,自动将Cucumber过滤标签设置为@sanity,触发冒烟测试集执行;传入regression等自定义标签时,优先使用传入值 - 修正规则匹配条件:将原判断里的
reg改为实际使用的regression,保证传入回归标签时允许失败的逻辑正常生效 - 新增规则兜底逻辑:避免无匹配规则时测试任务被流水线跳过,保证所有合法场景下任务都能正常执行
- 移除script命令里多余的嵌套引号,避免Maven执行时参数解析错误
内容的提问来源于stack exchange,提问作者gaurav kumar
相关产品推荐
相关产品推荐

