How we created the Vexor cloud continuous integration service
It’s a classic problem of scale. When a company works on several projects simultaneously, it faces a number of difficulties when it comes to continuous integration services. Running your own CI setup on the cloud is expensive, and the way you are charged can often seem unreasonable — the server is used only during a few hours, but you pay for it as if you were using it all day long. Building your own data-center is even more expensive than that. It’s not just the computing and storage, hosting your own CI chain: projects have to be configured, test servers need to be created and monitored, packages need to be upgraded. It takes a lot of time and effort to keep it all running. And whatever you do, you’ll inevitably have your developers asking you to increase the number of instances dedicated to continuous integration.
Vexor isn’t just CI in the cloud, it’s CI for the cloud. With Vexor, you only pay for each minute that your tests are actually running. No standing charge. No minimums. Push no commits? You don’t pay anything. You get the best of both worlds, too. Vexor scales resources intelligently to meet demand: no more waiting in line for your job to start.
Branding and user experience
We developed a unique brand identity for Vexor, centered upon a twisted weld in perpetual motion, and brought it to life using CSS3, WebGL, SVG, and Three.js. We developed this into a distinctive brochure site for the service, complete with a cost calculator.
Behind the scenes
We began development using AWS, but Vexor needed more fine-grained control over physical computing resources than EC2 is designed to provide cost-effectively. After some investigation, we identified that Rackspace was able to offer the right combination of scalability, control, and pricing.
Vexor uses Docker containers to perform CI jobs in a consistent environment, pulling from source repositories hosted at Github, Bitbucket, or Gitlab. Test containers are based on the popular Ubuntu Linux distribution, and we provide a number of pre-installed packages such as Xvfb, Postgresql, Mysql, MongoDB, Redis, Elasticsearch, PhantomJS, and SphinxSearch, making Vexor incredibly convenient to use.
Vexor supports a number of environments out of the box, including Ruby, Clojure, Scala, Python, Haskell, React, Elixir, Solidity, Node.js, Go, Rust, and will in many cases auto-detect the appropriate commands to invoke for standard test passes in your chosen language. For more esoteric cases, the defaults and detection can be overridden by placing a Yaml file in the repository.
Our clients are impressed by its simplicity of use, super-fast integration of builds, and pay-what-you-use pricing strategy, particularly compared to some similar services. And because Vexor can perform any number of tests simultaneously, you won’t be able to use “waiting for the CI to finish” as an excuse anymore!