Changing the default timeout for a Continuous Integration project

- By Abhijit Kini

BACK TO BLOG HOME

There are few occassions when Continuous Integration (CI) builds timeout. This means, a CI build failed to complete within the expected time and is now in a timeout or in an incomplete state. Until the timed out build remains in that state for 60 minutes (for free subscription plans on Shippable) or 120 minutes (for paid subscription plans on Shippable) or it is manually canceled, it can block CI build queues.

Changing the default timeout of 60 minutes (for free plans) or 120 minutes (for paid plans) will help you address this problem. In this tutorial, I'll walk you through changing the default timeout for a CI project so that you have more control over the build queues blocked due to build timeouts. 

Continuous Integration build timeout icon

Before you begin

Ensure you have:

  • Have signed into Shippable using your GitHub or BitBucket credentials
  • Have an enabled project on Shippable platform, to run continuous integration
  • Forked this Node.js project (available on GitHub) to follow along

Timeout settings

Shippable runs one CI build per machine, where each machine is 2 cores, 3.75GB RAM for free. This means each CI build gets its own dedicated machine, each time it is run. There are times when resource intensive CI builds will need more capacity than provided in the default, free plan. In such cases, CI builds are likely to timeout using the following logic:

  • There is no log output or a command hangs for more than 10 minutes
  • The CI build is still running after 60 minutes (for free plans) or 120 minutes (for paid plans)

There are several ways to speed up the CI build process such as enabling cache, building a fine-tuned custom image or bringing your own dedicated host. I'll cover each of these in subsequent tutorials.

Shown below is a picture of a build timeout.

  • The build status icon is violet. Hovering the cursor over it shows 'Timeout'
  • You can see the step where the timeout occurred - 'wait_for_exit'

Example of a timeout of a Continuous Integration build

Changing default timeout

Shippable gives you the ability to change the default timeout setting. You can configure it to any number between 1 and 120 minutes (depending on the free/paid subscription plan on Shippable). The steps to follow are:

  • Go to the 'Project settings' of the project that you wish to change the timeout
    • For this tutorial, the project is 'sample_nodejs'
  • Scroll down to the 'Custom Timeout' section
  • Click the 'Edit' button
  • Enter a value between 1 and 60 (for free plans) or 1 and 120 (for paid plans)
  • Click 'Save'

NOTE: For values less than 1 or greater than 60/120, you will see the following error:

Error for incorrect timeout setting for a continuous integration project

 

  • If you see this error, close the error and enter a value between 1 and 60 (for free plans) or 1 and 120 (for paid plans) and click 'Save'
  • To revert back to the default setting of 60 minutes or 120 minutes, click on 'Clear'.

We've gone through changing the default timeout setting for CI builds. Use it to your advantage to ensure stuck builds are not holding up the build queue from processing.

If you see build timeouts happening and believe they shouldn't, open a support issue & we'll help in troubleshooting the root cause.


Try Shippable

Topics: continuous integration (CI), how-to, tutorial, tips, timeout