Goals

More efficient use of resources. One project may be running CPU intensive tests while another deploys a website to a remote server.

Improve user experience by not requiring developers to wait as long for their builds to finish.

Definitions

  • parallel builds manager
    • creates and manages the build instance of each project associated with a specific schedule
    • keeps track of which projects are being built
    • manages the "overall" build queue
  • "overall" build queue
    • contains a number of build queues each containing different project build instances
    • has its own checkout queue and build queue

Requirements

A. UI/Configuration

  1. add a new field "Number of Allowed Builds in Parallel" in the General Configuration page
    • there must be a limit to the maximum number of parallel builds that can be set by the user
    • it must be possible to disable parallel builds
  2. add a new page for adding a build queue. It should have a build queue name that will be used to associate it with a schedule. The number of build queues that can be added should respect the "Number of Allowed Builds in Parallel" set in the General Configuration.
  3. in the add/edit schedule page, add a list box that contains the build queues which would allow the user to select which build queue(s) to associate with the schedule.
  4. configuration stored and editable in XML configuration file
  5. queue page should list average wait time for each queue

B. Build

  1. Parallel builds manager
    1. when a build is triggered:
      • check for available build queue(s) associated with the schedule. Get the first available build queue.
      • add the project to the associated build queue's checkout queue or build queue depending whether the project is configured to always "build fresh"
      • once the build finishes, remove the project build instance from the associated build queue
      • build the next project in the queue
    2. for releases:
      • projects to be released will be built in sequence in a queue of their own. As long as they don't modify the build state or working copy it is ok to build the original project simultaneously. If the working copy changes are made in place for bumping versions, suggest blocking it and being built elsewhere.

Limitations

  • Projects in a single group will be built sequentially in the proper order based on their inter-dependencies.
  • A project group cannot be built multiple times simultaneously

Future Enhancements

  • Concurrent build of inter-dependent projects in a group

References

CONTINUUM-265
CONTINUUM-1635

  • No labels