如何在GitLab CI/CD脚本中使用blazemeter/taurus镜像并解决bzt报错
问题根源
你遇到的报错是两个配置错误共同导致的:
- 你配置的CI Job使用
blazemeter/taurus作为运行镜像,该镜像的默认入口点(ENTRYPOINT)为bzt命令。GitLab CI的Docker执行器运行script段命令时,默认会附加-c参数调用shell执行命令,此时-c参数会被传递给bzt,而bzt没有该参数,直接触发报错。 - 你已经在
blazemeter/taurus镜像启动的容器内,script段再执行docker run属于冗余操作,且默认Docker执行器没有挂载Docker socket,该命令本身也无法正常运行。
修复方案
推荐使用更轻量的方案1,无需Docker in Docker支持:
方案1:直接在当前镜像内执行测试
覆盖镜像默认入口点,让GitLab CI可以正常调用shell命令,再直接运行bzt执行测试即可,修改后的CI配置如下:
preformence_acceptance-test: image: name: blazemeter/taurus entrypoint: [""] # 覆盖默认的bzt入口点 stage: acceptance-test script: # 请将路径替换为你仓库中测试yml文件存放的实际路径,示例为仓库根目录下的performancetests文件夹 - bzt performancetests/*.yml
方案2:Docker in Docker运行方式(仅适用于需要隔离容器的场景)
如果你确实需要通过独立容器运行测试,需要将Job基础镜像替换为带Docker客户端的镜像,同时开启Docker in Docker服务:
preformence_acceptance-test: image: docker:latest stage: acceptance-test services: - docker:dind variables: DOCKER_HOST: tcp://docker:2376 DOCKER_TLS_CERTDIR: "/certs" script: # 移除了原命令中的-it参数(CI环境为非交互式,无需分配终端),同时修改挂载路径为当前仓库目录 - docker run --rm -v $(pwd)/performancetests:/bzt-configs blazemeter/taurus *.yml
内容的提问来源于stack exchange,提问作者stein korsveien
相关产品推荐
相关产品推荐

