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

Bitbucket流水线中MSSQL Testcontainers测试卡住问题排查求助

排查Bitbucket CI/CD中Testcontainers MSSQL测试卡住的思路

1. 先确认CI环境的Docker基础配置

  • 检查Bitbucket Runner的Docker版本是否满足Testcontainers 1.19.3的最低要求(需≥20.10.x),版本不兼容会导致容器启动异常
  • 查看Runner的Docker daemon日志,排查启动MSSQL容器时是否有权限报错、资源不足等异常
  • 确认Runner进程是否加入docker用户组,拥有操作Docker的完整权限

2. 开启详细日志追踪卡点

  • 给测试添加系统属性-Dtestcontainers.debug=true,打印Testcontainers容器启动、网络配置的完整DEBUG日志
  • 开启HikariCP DEBUG日志:-Dlogging.level.com.zaxxer.hikari=DEBUG,追踪连接池初始化的每一步操作
  • 开启Liquibase DEBUG日志:-Dlogging.level.liquibase=DEBUG,定位SQL脚本执行的具体卡点

3. 排查资源限制问题

  • MSSQL容器内存占用较高,给Bitbucket Runner分配至少4GB内存及2核CPU,避免资源不足导致容器启动缓慢或卡住
  • 在Testcontainers配置中给MSSQL容器设置内存上限,比如:
    mssqlContainer.withCreateContainerCmdModifier(cmd -> 
        cmd.getHostConfig().withMemory(2048 * 1024 * 1024)
    );
    
    防止容器耗尽Runner资源

4. 验证网络与端口通信

  • 检查CI环境是否有防火墙/安全组策略,阻止测试进程与容器内部的通信
  • 临时切换Testcontainers到主机网络模式(withNetworkMode("host")),排查是否为端口映射问题导致的连接失败
  • 确认CI环境中Testcontainers自动分配的端口未被其他进程占用

5. 调整镜像与版本兼容性

  • 更换MSSQL镜像为稳定版本,比如从mcr.microsoft.com/mssql/server:2022-latest换成2022-CU10-ubuntu-22.04,避免最新镜像的兼容性bug
  • 确认SpringBoot 3.1.5、Testcontainers 1.19.3与所选MSSQL镜像的版本适配性

6. 优化Testcontainers配置

  • 禁用容器复用功能:添加系统属性-Dtestcontainers.reuse.enable=false,CI环境复用容器易导致状态异常
  • 明确配置MSSQL容器的环境变量,确保EULA接受和SA密码设置正确:
    mssqlContainer.withEnv("ACCEPT_EULA", "Y")
                  .withEnv("SA_PASSWORD", "YourStrong!Passw0rd");
    
  • 添加更严格的启动等待策略,确保容器完全就绪后再执行测试:
    mssqlContainer.waitingFor(Wait.forSqlServerPort()
                                  .withQuery("SELECT 1")
                                  .withTimeout(Duration.ofMinutes(2)));
    

7. 分步缩小排查范围

  • 单独运行卡住的测试类,排除其他测试的干扰
  • 在CI流水线中先通过docker命令手动启动MSSQL容器,验证容器能否正常连接,再执行测试,区分是容器启动问题还是测试代码问题
  • 用GenericContainer替代MSSQLContainer,手动配置镜像和启动命令,排查是否为MSSQLContainer封装逻辑导致的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 02:19:59