如何配置GitLab CI任务运行集成sbt的Gatling测试?已装插件不知如何执行场景
配置GitLab CI运行sbt集成的Gatling测试指南
我来帮你一步步搞定这个配置,之前在几个负载测试项目里这么搭过,流程很顺畅:
一、先确认本地sbt Gatling配置没问题
既然你已经部署了sbt Gatling插件,还是先做个快速校验,避免本地跑不通导致CI踩坑:
- 检查
project/plugins.sbt里是否有插件依赖:addSbtPlugin("io.gatling" % "gatling-sbt" % "3.10.3") // 替换成你用的版本 - 检查
build.sbt里是否启用了插件:enablePlugins(GatlingPlugin) - 确认你的Gatling测试场景(继承
Simulation的类)放在默认路径src/gatling/scala下,或者你自定义的路径已经在sbt里配置好 - 本地执行
sbt gatling:test,确保所有测试能正常运行,没有报错
二、编写GitLab CI配置文件(核心步骤)
在项目根目录创建.gitlab-ci.yml文件,下面是一个通用的配置模板,我会逐段解释:
stages: - test gatling-load-test: stage: test # 选择包含JDK、Scala、sbt的镜像,避免手动安装依赖 image: hseeberger/scala-sbt:17.0.6_1.9.0_3.3.1 # 缓存sbt依赖,大幅加快CI运行速度 cache: paths: - ~/.ivy2/cache - ~/.sbt - target/resolution-cache script: # 执行所有Gatling测试,若要指定单个场景用:sbt "gatling:testOnly com.your.package.YourSimulation" - sbt gatling:test # 保存Gatling测试报告,作为CI产物方便查看 artifacts: paths: - target/gatling # 报告保存1周,可根据需求调整 expire_in: 1 week # 可选:给测试分配更多资源,避免runner性能不足 resources: limits: memory: 4G cpu: 2
关键部分解释:
- 镜像选择:用
hseeberger/scala-sbt系列镜像,里面预安装了对应版本的JDK、Scala和sbt,省去了安装步骤,也能避免版本不一致的问题,你可以根据自己项目的JDK/sbt版本选择对应的镜像标签。 - 缓存配置:缓存sbt的依赖目录,这样每次CI运行时不用重新下载所有依赖,能节省大量时间。
- 测试命令:
sbt gatling:test会运行所有Gatling测试场景;如果只想跑特定场景,把命令改成sbt "gatling:testOnly com.your.package.YourSimulation",替换成你自己的模拟类全路径即可。 - 产物保存:Gatling的测试报告默认生成在
target/gatling目录,配置artifacts后,你可以在GitLab的CI job页面下载或在线查看报告,非常方便。
三、额外优化建议
- 环境变量注入:如果你的测试需要动态配置目标服务地址、并发数等参数,可以在GitLab项目的「设置→CI/CD→变量」里配置环境变量,然后在Gatling模拟类里读取:
val targetUrl = sys.env.getOrElse("TARGET_URL", "http://localhost:8080") - 失败断言处理:Gatling默认会在测试断言失败时返回非0退出码,GitLab CI会自动标记job失败,完全符合我们的需求,不用额外配置。
- 定时运行测试:如果需要定期执行负载测试,可以在GitLab CI里配置流水线调度(在项目「CI/CD→调度」里设置),比如每天凌晨跑一次,自动监控系统性能。
最后提醒
先在本地确保sbt gatling:test能正常运行,再把配置推到GitLab上触发CI,这样能快速排查是本地配置问题还是CI环境问题。
内容的提问来源于stack exchange,提问作者user13373458
相关产品推荐
相关产品推荐

