运行 Cypress 时 GitLab 管道退出,错误代码为 137

GitLab pipeline exiting with error code 137 when running Cypress

我正在基于 alpine:3.13 创建一个 Docker 图像,用于我的测试阶段,运行在 GitLab 的管道中。

在那里我安装了所有的依赖项。该应用程序由两个组件组成,我称之为前端和后端。

我运行下面的命令来设置前后,最后在headless模式下执行cypress。

"e2e:run": "concurrently -n front, back \"yarn front\" \"yarn back\" \"yarn front:wait && yarn back:wait && yarn cypress:run\""

它可以很好地构建前端和后端,但是作业日志在几分钟内没有显示任何进度,直到我最终得到这个退出代码:

ERROR: Job failed: command terminated with exit code 137

根据我目前的研究,我断定这似乎与记忆力不足有关。

  1. 还有其他合理的选择吗?
  2. 我可以做些什么来提供更多 memory/reduce 内存消耗?

正如@SamBob 提到的,这个问题可能是由于 运行ning docker 容器内存不足,shm_size 参数可以增加它。但是,由于您不是直接 运行 在工作中设置图像(即,执行 docker run...)而是 gitlab-runner 过程,因此您必须设置 shm_size Docker 执行器的 Runner 配置中的参数。为此,您还必须 运行 自己的 运行 人,如果您还没有的话。

当 运行你自己的 运行ners 时,每个人都会在 /etc/gitlab-runner 中有一个 config.toml 文件,默认情况下如下所示:

listen_address = ":9252"
concurrent = 1
check_interval = 0

[session_server]
  session_timeout = 1800

[[runners]]
  name = "runner-1"
  url = "https://gitlab.example.com"
  token = "TOKEN"
  executor = "docker"
  [runners.custom_build_dir]
  [runners.cache]
    [runners.cache.s3]
    [runners.cache.gcs]
  [runners.docker]
    image = "alpine:latest"
    privileged = false
    disable_entrypoint_overwrite = false
    oom_kill_disable = false
    disable_cache = false
    volumes = ["/cache"]
    shm_size = 0

如您所见,默认情况下 shm_size 参数设置为 0 字节。您可以编辑此文件以增加 shm_size,然后重新启动 gitlab-runner 服务以重新加载新配置。

我对我的 运行 人员做的另一件事是在我增加的那些 运行 人员上添加一个 shm-increased 标签,因为我的管道中只有几个工作需要更多共享内存。

要查看有关 运行 自己的 Gitlab Runners 的更多信息,请参阅 here

要查看有关 Gitlab Runners 的 shm_size 参数和其他高级 运行ner 配置选项的更多信息,请参阅 here

要查看有关标记 运行 人员和工作的信息,请参阅 here