GitLab CI 管道阶段超时
Posted
技术标签:
【中文标题】GitLab CI 管道阶段超时【英文标题】:GitLab CI Pipeline Stage Timeout 【发布时间】:2016-11-19 02:39:41 【问题描述】:我正在使用自托管GitLab CI server
(社区版v8.9.5)和gitlab-ci-multi-runner
1.2.0 来构建项目。我的一个管道阶段(测试)需要一段时间才能运行,我得到以下 erm:
ERROR: Build failed: execution took longer than 3600 seconds
我应该把这个超时的覆盖放在哪里?我可以将其仅应用于测试管道阶段吗?
【问题讨论】:
【参考方案1】:您可以在 “项目设置 -> CI/CD 管道 -> 超时” 或 “项目设置 -> 构建 -> 超时” 中设置全局超时版本。
从 12.3 版开始,您可以使用 timeout
在 CI .yml 文件中设置每个阶段的超时时间:
timeout
允许您为特定作业配置超时。例如:
build:
script: build.sh
timeout: 3 hours 30 minutes
test:
script: rspec
timeout: 3h 30m
作业级超时可以超过项目级超时,但不能超过 Runner 特定超时。
【讨论】:
至少从 8.11.5 开始,此设置可以在 Project settings -> CI/CD Pipeline -> Timeout 中找到 本地运行gitlab-runner时可以设置超时时间吗? @damian 我会说跑步者在哪里跑步无关紧要,但不要相信我的话。 Issue for per job timeouts【参考方案2】:可以设置两种超时时间:project timeout和runner timeout。
项目超时:
可以通过设置 -> CI/CD -> 常规管道
设置每个作业的超时时间跑步者超时:
runner的超时时间可以从Settings -> CI/CD -> Runners中设置,从Runners激活的选择runners这个项目并从运行器编辑表单中编辑最大作业超时。
请注意,这两种类型的超时可以相互覆盖。参考docs。
【讨论】:
如果我在本地运行它,我会收到此错误。ERROR: Job failed: execution took longer than 30m0s seconds FATAL: execution took longer than 30m0s seconds
。我已经在 toml 文件中设置了 1 小时的 timwout。让我知道可能是什么问题
也许同时检查项目超时和运行超时? @shaktisinghmoyal
我尝试了项目超时和跑步者超时。但是在本地运行时,gitlab 方面有很多限制。为我解决的解决方案是,如果您在本地运行,则使用命令gitlab-runner exec docker job_name --timeout 3600
使用类似这样的参数传递运行器超时【参考方案3】:
Gitlab 12.3 中引入了特定于作业的超时
https://docs.gitlab.com/ce/ci/yaml/README.html#timeout
build:
script: build.sh
timeout: 3 hours 30 minutes
test:
script: rspec
timeout: 3h 30m
【讨论】:
如果我在本地运行它会收到此错误。ERROR: Job failed: execution took longer than 30m0s seconds FATAL: execution took longer than 30m0s seconds
。我已经在 toml 文件中设置了 1 小时的 timwout。让我知道可能是什么问题
@shaktisinghmoyal 我想你现在已经想通了,但是还有一个项目最大超时和一个 gitlab 运行器最大超时需要由 gitlab 管理员配置。【参考方案4】:
如果在 Gitlab 上运行它,那么上述答案已经告诉了正确的方法。但是,如果您也想在本地运行 Gitlab CI 并使用自己的跑步者,那么跑步者超时,您需要使用命令传递。
gitlab-runner exec docker job_name --timeout 3600
这里将跑步者超时设置为 3600 秒
【讨论】:
以上是关于GitLab CI 管道阶段超时的主要内容,如果未能解决你的问题,请参考以下文章