GitLab CI Pipeline Stage Timeout

Solution 1:

You can set a global timeout in "Project settings -> CI/CD Pipelines -> Timeout" or "Project settings -> Builds -> Timeout" in older versions.

As of version 12.3, you can set a timeout per stage in your CI .yml file using timeout:

timeout allows you to configure a timeout for a specific job. For example:

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

test:
  script: rspec
  timeout: 3h 30m

The job-level timeout can exceed the project-level timeout but can’t exceed the Runner-specific timeout.

Solution 2:

There are two timeout can be set: project timeout and runner timeout.

Project timeout:

It is possible to set timeout per job from Settings -> CI/CD -> General pipelines

enter image description here

Runner timeout:

runner's timeout can be set from Settings -> CI/CD -> Runners, select the runner from Runners activated for this project and edit the Maximum job timeout from the runner edit form. enter image description here

Be aware that these two types of timeout can be overridden by each other. Refer the docs.

Solution 3:

A job-specific timeout was introduced in 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