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

Docker容器中Cypress依赖缺失问题及Bitbucket流水线集成方案咨询

报错直接修复

你遇到的libgbm.so.1缺失问题,可直接安装对应依赖包解决,Ubuntu/Debian系系统执行命令:

apt-get install -y libgbm-dev libdrm2 libxshmfence1

你之前安装的依赖包没有覆盖Cypress 8+版本新增的图形渲染依赖,所以会触发本次报错,仅补全对应依赖可临时解决问题,但不是长期最优方案。

Cypress集成CI流水线通用最佳实践
  • 优先使用官方预构建镜像
    直接采用Cypress官方发布的预构建镜像作为流水线运行环境,镜像中已经预装了所有系统依赖、对应版本的Node和Cypress二进制包、常用浏览器,无需手动配置依赖,Bitbucket流水线可直接在step中指定镜像:
    - step:
        image: cypress/included:8.2.0 # 和你项目中使用的Cypress版本保持一致
        script:
          - npm ci
          - npm run e2e (你的环境变量)
    
  • 配置缓存减少重复下载
    开启Bitbucket流水线缓存,缓存npm依赖和Cypress二进制包,避免每次运行都重复下载,配置示例:
    definitions:
      caches:
        cypress: ~/.cache/Cypress
    pipelines:
      default:
        - step:
            image: cypress/included:8.2.0
            caches:
              - node # Bitbucket内置的npm依赖缓存
              - cypress
            script:
              - npm ci
              - npm run e2e (你的环境变量)
    
  • 对齐本地调试与CI环境
    本地验证时直接使用和CI相同的Cypress官方镜像,不要用自定义的基础镜像调试,避免环境不一致导致的问题,本地调试命令参考:
    docker run -v `pwd`:/mycode -w /mycode -it cypress/included:8.2.0 /bin/sh
    
  • 避免CI中动态修改运行环境
    不要在流水线执行阶段用nvm动态升级Node版本,直接选择对应Node版本的官方Cypress镜像即可,动态修改环境容易引发路径、权限、版本匹配类问题。
系统依赖缺失问题规避方案
  • 不推荐手动逐个补全依赖:Cypress不同版本的系统依赖会发生变动,手动补全容易出现遗漏,每次升级Cypress版本都可能需要重新排查依赖问题。
  • 自定义镜像需全量预装依赖:如果必须使用团队自定义的基础镜像,直接参考Cypress官方依赖列表把所有运行时依赖一次性打包到基础镜像中,不要在流水线执行阶段临时执行apt install命令,既降低运行速度,也容易因为软件源波动导致安装失败。
  • 版本严格对齐:项目中使用的Cypress版本和CI镜像版本、本地调试环境版本必须保持一致,不要跨大版本混用。
遗漏的配置要点
  • 你当前的依赖安装逻辑是临时执行apt命令,没有将依赖固化到基础镜像,每次流水线运行都可能因为依赖变动、软件源问题失败。
  • 没有配置Cypress二进制缓存,每次npm ci都会重新下载Cypress包,可能出现下载不完整、版本不匹配的问题。
  • 本地调试使用的自定义镜像和CI环境不一致,会出现本地验证通过但流水线运行失败的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 12:45:01