【发布时间】:2016-11-19 02:39:41
【问题描述】:
我正在使用自托管GitLab CI server(社区版v8.9.5)和gitlab-ci-multi-runner1.2.0 来构建项目。我的一个管道阶段(测试)需要一段时间才能运行,我得到以下 erm:
ERROR: Build failed: execution took longer than 3600 seconds
我应该把这个超时的覆盖放在哪里?我可以将其仅应用于测试管道阶段吗?
【问题讨论】:
我正在使用自托管GitLab CI server(社区版v8.9.5)和gitlab-ci-multi-runner1.2.0 来构建项目。我的一个管道阶段(测试)需要一段时间才能运行,我得到以下 erm:
ERROR: Build failed: execution took longer than 3600 seconds
我应该把这个超时的覆盖放在哪里?我可以将其仅应用于测试管道阶段吗?
【问题讨论】:
您可以在 “项目设置 -> CI/CD 管道 -> 超时” 或 “项目设置 -> 构建 -> 超时” 中设置全局超时版本。
从 12.3 版开始,您可以使用 timeout 在 CI .yml 文件中设置每个阶段的超时时间:
timeout允许您为特定作业配置超时。例如:
build:
script: build.sh
timeout: 3 hours 30 minutes
test:
script: rspec
timeout: 3h 30m
作业级超时可以超过项目级超时,但不能超过 Runner 特定超时。
【讨论】:
可以设置两种超时时间: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。让我知道可能是什么问题
gitlab-runner exec docker job_name --timeout 3600 使用类似这样的参数传递运行器超时
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。让我知道可能是什么问题
如果在 Gitlab 上运行它,那么上述答案已经告诉了正确的方法。但是,如果您也想在本地运行 Gitlab CI 并使用自己的跑步者,那么跑步者超时,您需要使用命令传递。
gitlab-runner exec docker job_name --timeout 3600
这里将跑步者超时设置为 3600 秒
【讨论】: