Note from the publisher: You have managed to find some of our old content and it may be outdated and/or incorrect. Try searching in our docs or on the blog for current information.
PromptWorks develops customized web and mobile applications for remarkable companies – ranging from startups to Fortune 50 – looking to improve the quality and polish of the software they use to interact with their customers. We help clients understand what’s possible, and our flexibility and insight saves them money. They come to us because, for a variety of reasons, they need to find a partner with the expertise and resources to get them through the product development process. The software we develop makes it possible for companies do what they need to do.
Why CircleCI
We rely on CircleCI for continuous integration and continuous deployment on all our projects. Automated testing is very important to us, as is continuous delivery so that product owners (clients) can experience what we’re building hands-on as quickly as possible. Our workflow requires that we run tests on every branch and have a green build before merging to master, yet it’s surprising how many CI tools don’t treat feature branches as first-class citizens.
Life Before CircleCI
Prior to using CircleCI, we had a complex Jenkins setup to create jobs for branches, run tests in parallel as matrix builds, and notify the team through email and Slack. This patchwork of plugins and scripts didn’t inspire confidence and required lots of setup and maintenance! When Jenkins was down, we’d be committing in the dark for awhile, which never turned out well.
First-Class, Customizable Feature Support
With CircleCI, we found easy support for our primary languages: Ruby, Python, and Javascript. Parallelization has been a piece of cake. We’ve found language-specific solutions for rerunning flaky tests, which we’ve come to accept as a fact of life with browser-based acceptance tests, though we have made a lot of progress improving the reliability of our test suites. We virtualized many of the dependencies of our more complex apps and use the CircleCI API to trigger specific nightly builds with that virtualization turned off. This way, we have a sense of whether our app succeeds against real infrastructure and services without halting everyday development when they’re down.
We have our circle.yml file and test runners heavily customized to take screenshots on test failure, watch out for FIXMEs and other words that shouldn’t be committed, run linters, and more. We’ve found the user interface to be clean and easy to use and recent features like build timing and insights have been helpful.
Time is Money
There’s not one script or thing we did that resulted in a big cost savings. It was more that CircleCI got us a long way toward our ideal and let us customize the rest of the way. We can run builds faster and tighten our cycle times to iterate with our clients faster. Compared to their old Jenkins setup, it saves one of our clients about $1500/month in maintenance time. For our other clients, they pay for less of our time to set up CI on another provider and at $200 an hour, it can add up very quickly.
CircleCI is a big part of our dev process and we wouldn’t deploy without it.
Jason Garber is a Software Engineer and Co-Founder at PromptWorks. You can follow Promptworks on Twitter and LinkedIn.