GitLab CI流水线阶段超时

86

我正在使用一个自托管的 GitLab CI 服务器(社区版 v8.9.5)和 gitlab-ci-multi-runner 1.2.0 来构建一个项目。我的其中一个流水线阶段(测试)需要一段时间来运行,我遇到了以下错误:

ERROR: Build failed: execution took longer than 3600 seconds
我应该在哪里覆盖这个超时时间?我能把它应用于测试流水线阶段吗?
4个回答

121
您可以在 项目设置CI/CD常规流水线超时 或者 旧版本中的 项目设置构建超时 中设置全局超时时间。

GitLab 15.1 Timeout

从版本12.3开始,您可以使用timeout.gitlab-ci.yml文件中为每个阶段设置超时时间:

timeout允许您为特定作业配置超时时间。例如:

build:
  script: build.sh
  timeout: 3 hours 30 minutes

test:
  script: rspec
  timeout: 3h 30m

工作级别的超时时间可以超过项目级别的超时时间,但不能超过运行器特定的超时时间。

5
至少在8.11.5版本中,可以在“项目设置-> CI/CD流水线->超时”中找到此设置。 - drs
你能在本地运行gitlab-runner时设置超时时间吗? - damian
@damian 我认为跑步者在哪里跑步并不重要,但是不要只听我的话。 - tmt
3
每项工作超时问题的解决方案。 - l0b0

26

有两个超时时间可以设置: 项目超时运行器超时.

项目超时:

可以从设置 -> CI/CD -> 常规流水线中为每个任务设置超时时间。

enter image description here

运行超时:

可以从设置 -> CI/CD -> Runners中选择来自此项目激活的Runner并编辑最大作业超时时间来设置Runner的超时时间。 enter image description here

请注意,这两种类型的超时时间可以被彼此覆盖。请参考docs


如果我在本地运行它,我会得到这个错误:ERROR: Job failed: execution took longer than 30m0s seconds FATAL: execution took longer than 30m0s seconds。我已经在toml文件中将超时时间设置为1小时。请让我知道可能的问题是什么。 - shaktisinghmoyal
也许需要检查项目超时和运行器超时?@shaktisinghmoyal - Chuan
我尝试了项目超时和运行器超时两种方法。但是在本地运行时,由于GitLab的限制很多,导致无法正常工作。对我而言可行的解决方案是,如果你正在本地运行,请使用以下命令将运行器超时作为参数传递:gitlab-runner exec docker job_name --timeout 3600 - shaktisinghmoyal
请注意,如果您设置了通用和运行程序超时时间,则较小的值将适用:https://docs.gitlab.com/ee/ci/runners/configure_runners.html#set-maximum-job-timeout-for-a-runner - Gerald Combs

16

如果我在本地运行它,就会出现这个错误。 ERROR: Job failed: execution took longer than 30m0s seconds FATAL: execution took longer than 30m0s seconds。我已经在toml文件中设置了1小时的超时时间。请告诉我可能是什么问题。 - shaktisinghmoyal
@shaktisinghmoyal 我想你现在已经明白了,但是还有一个项目最大超时时间和一个GitLab Runner最大超时时间需要由GitLab管理员进行配置。 - Elias Dorneles

1
如果在Gitlab上运行,那么上述答案已经告诉了正确的方法。但是,如果您想要使用自己的runner本地运行Gitlab CI,那么需要通过命令传递runner超时时间。
gitlab-runner exec docker job_name --timeout 3600
这里将runner超时时间设置为3600秒。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接