Tomster and Travis, sitting in a tree: Ember at Travis CI

Did you know that Travis CI’s web UI, travis-web, is one of the oldest open source Ember projects out there? It’s true. The first commit to that repository was in June 2012, but Ember-y things go back even further, with a wholesale replacement of Backbone with SproutCore in September 2011! A lot of things have changed since then:

  • we survived the enormous trek from Ember 0.9.8.1 to Ember 2.9.1
  • we’ve migrated from the globals-centric ember-rails 0.6.0 to the module-loving Ember CLI 2.9.1
  • we weathered the transition from Ember Data revision 4 to the fresh 2.9.0, and are mid-way through moving everything to the third version of our API

The web team currently comprises Lisa, Curtis, and me, with Piotr soon to return.

So, how do we use Ember at Travis CI?

Pull request deployments with ember-cli-deploy

Since April, in-team pull requests to travis-web have produced lightweight experimental deployments via Ember CLI Deploy’s lightning strategy. When we have changes that don’t require API support, we can try them out with production data via these links. This is powerful for demonstrating proposed changes internally, as well as for letting users test out fixes for bugs they’ve reported before they are merged and deployed.

A cropped screenshot of pull request deployment links

For more information on this, see the README and the assorted deployment scripts. Copy it for your own Ember projects if it suits your workflow, it’s been useful for us!

Ember beta and canary deployments

Thanks to suggestions and bug fixes from Ember Core Team members, we now have automatic deployments of travis-web running on the latest Ember beta and canary builds:

You can experience the new Glimmer 2 hotness before it’s officially released! These deployments are updated nightly and upon commits to master using a similar strategy to the PR deployments, with help from ember-try. They should usually be no different than the typical deployment, but may occasionally reveal bugs and could eventually be used for Ember performance metrics.

Continuous visual integration with Percy

The creator of continuous integration service Percy used travis-web acceptance tests in a demonstration at EmberSF, kindly describing them as “really awesome”. We’ve started using Percy to track changes in appearance in our acceptance and component tests to help us catch regressions before shipping. Check out this example below where an incorrect class name within an ember-inline-svg migration could have led to an unsightly icon crisis!

A visual diff showing an icon sizing problem

What’s to come?

We’re addressing technical debt, updating to our new API, and adding feature flags for trying out new features. We’d love to get into FastBoot land after we modernise and normalise our data layer. We hope to extract engines for some less-used routes and get the initial payload size down.

travis-web is one of the biggest open source Ember projects out there and we’re working to bring it closer to current modern Ember conventions. We’d love for people to be able to use it as a model for a well-architected Ember application, and we love contributions!

We really appreciate the Ember community’s support in helping us move forward. We’ve been able to replace custom implementations with community-produced solutions, like ember-concurrency and ember-inline-svg. It’s sometimes a challenge to keep up with the latest versions, but Ember people are always around in the Ember community Slack and in GitHub issues to help us out. We are grateful to benefit from this community and try to contribute back when we can.

Thanks for reading, we hope to hear from you soon!