CircleCI运行RSpec测试报Redis::CannotConnectError该如何解决
你遇到的Redis::CannotConnectError报错是因为CircleCI运行测试的环境中没有启动Redis服务,你当前的配置仅声明了Ruby运行环境和PostgreSQL数据库两个Docker容器,Sidekiq测试需要连接的6379端口无对应服务响应,按以下步骤修改配置即可解决:
第一步:新增Redis服务容器
修改你的config.yml中jobs.build.docker配置块,追加Redis兼容镜像,修改后docker块如下:
docker: - image: cimg/ruby:2.7.3-browsers environment: BUNDLE_JOBS: 3 BUNDLE_RETRY: 3 BUNDLE_PATH: vendor/bundle PGHOST: 127.0.0.1 PGUSER: myapp RAILS_ENV: test CAPYBARA_DEFAULT_MAX_WAIT_TIME: 10 - image: circleci/postgres:9.5-alpine # database image environment: # environment variables for database POSTGRES_USER: myapp POSTGRES_DB: myapp POSTGRES_PASSWORD: mypass # 新增Redis服务镜像 - image: cimg/redis:6.2
第二步:新增等待Redis启动的校验步骤
在原有「等待DB」步骤之后,新增等待Redis端口就绪的步骤,避免Redis还没启动完成就跑测试:
- run: name: 等待Redis启动 command: dockerize -wait tcp://localhost:6379 -timeout 1m
如果你的测试环境Redis配置了密码、自定义端口,可以在Redis镜像的environment块添加对应配置,同时修改Rails测试环境的Redis连接参数匹配即可。你现有配置中的Chrome Driver相关配置已经满足Sidekiq GUI功能测试的要求,不需要额外修改。
内容的提问来源于stack exchange,提问作者user2012677
相关产品推荐
相关产品推荐

