Speed up Build Times with Codeship's ParallelCIBy Patrick Sullivan on Feb 12, 2015
I was recently given access to a new feature from Codeship, called ParallelCI. ParallelCI lets you run tests in parallel to reduce the overall time that is spent during a build running tests. Basically, I think its pretty cool :), so here is a little overview about it.
ParallelCI allows you to split your test commands across multiple build VMs to speed up your build time.
Below is the UI where I set up my different test pipelines. From giving it a try I liked the way that the setup is done. It makes the process intuitive and pretty quick to get up and running with a new pipeline.
Each project has multiple test pipelines. Each of those pipelines is a build VM running independently of each other. Codeship will first run your setup commands and then any arbitrary test commands you defined for this specific pipeline via the interface. To ease distinguishing different pipelines you can provide a name for each one.
For each project in Codeship I can have multiple pipelines. For every pipeline I have, on the backend there is a VM running the tests in that pipeline. I can name each pipeline to describe it and distinguish it from the other test pipelines.
For example, say I am running my unit tests on an AngularJS application that has a few different modules with functionality in them. I could cut down the testing and build time by setting up a pipeline for each of those modules. This would also encapsulate my tests so they are running in an more localized environment to cut down on them being impacted by something that could have happened or errored out during another test. Basically I see this as a great way to get more consistent results from the unit tests that I am running.
After all of the testing pipelines finish successfully the Deployment Pipeline will be created and run to do the deployment of the application.
I am working on setting up an example AngularJS project that takes advantage of this new functionality and I will post it out on my github and update this post or write a new one with the specific examples when it is ready.
Thanks for reading!