运行 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
根据我目前的研究,我断定这似乎与记忆力不足有关。
- 还有其他合理的选择吗?
- 我可以做些什么来提供更多 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。
我正在基于 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
根据我目前的研究,我断定这似乎与记忆力不足有关。
- 还有其他合理的选择吗?
- 我可以做些什么来提供更多 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。