Introducing Houston CI

Continuous validation testing for AppCenter apps

Daniel Foré
Apr 20, 2018 · 4 min read
Dogfooding Houston CI on elementary core apps

In our previous post about Juno platform goals, we talked a little bit about continuous integration testing (CI) and a project we’ve been working on to bring the suite of automated tests we run for AppCenter Dashboard to a continuous format that anyone can use. Today, I’m proud to announce that Houston CI is ready for wider testing!

What exactly is “Houston CI”?

As part of our work on the Juno release, AppCenter Dashboard had to be updated with a major new trick: the ability to build packages for both Loki and Juno. This has a few implications that we’ll get into in a moment, but for now you should know that the basis of Houston CI is AppCenter Dashboard 2.0. In other words, the same code powers Houston CI and the AppCenter Dashboard publishing process.

Why do I want it?

You: Excitedly release version 1.0 of your app on GitHub and hit the big publish button on AppCenter Dashboard
AppCenter Dashboard: files some issues in your tracker, including some packaging errors
You: Fix all the errors! Release 1.0.1!
AppCenter Dashboard: More issue reports about packaging
You, frustrated: 1.0.2!
AppCenter Dashboard, mockingly: issue reports

Packaging and build failures can be annoying and having to go through the whole publishing process to try to reproduce them is tedious. Using Houston CI means you can find out if master passes automated testing before you release. You can even find out if branches or contributor-submitted PRs pass before they’re allowed to be merged. And since Houston CI also tests your package builds, you can know if a particular feature branch breaks your packaging and act accordingly ahead of time. Pretty handy stuff.

How do I use it?

Houston CI’s Travis YML configuration file

Note: Specifying the DISTs is no longer necessary; Houston will automatically build and test against the latest beta release (5.0 Juno right now) if your packaging in in your master branch or in a generic deb-packaging branch. Building for Loki will now require a deb-packaging-loki branch. More details here.

Houston CI letting you know some things are missing

Anything else I should know?

If you push a branch called deb-packaging-loki, AppCenter Dashboard will use that packaging branch for Loki builds. This means you can set build flags or adjust dependencies as needed to ensure your app builds and is releasable on multiple supported versions of elementary OS, if you choose to do so.

Similarly, you can push packaging branches that match the naming of other branches for Houston CI. So if you have a feature branch called big-new-thing, you can create a matching packaging branch called deb-packaging-big-new-thing and Houston CI will test these branches together. This is especially handy if a feature branch introduces a new dependency. You can test a new, matching packaging branch and never introduce breaks in a CI-based workflow.

We’ve had a lot of success with the Houston V2 worker and Houston CI so far, but some of these features are brand new, so we’re expecting to find some issues with your help testing! If you think you’ve done everything right, but Houston CI just won’t build your app, make sure to open an issue report in GitHub.

For more details, check the Houston wiki.


If you need help or get stuck, don’t panic! You can always join our Gitter for questions about AppCenter Dashboard or jump in to the community Slack. Houston CI is still rather new, so we’re hoping to get your feedback and learn how we can make it better. If you’re familiar with Javascript and want to help us make AppCenter Dashboard or Houston CI better, it’s Open Source on GitHub. We’d love to see your pull requests!


Thanks again to all the developers making apps for AppCenter, everyone who has bought an app on AppCenter, our supporters on Bountysource and Patreon, and those who’ve purchased a copy of elementary OS or merch from our store. Every contribution helps make all of this possible, and we wouldn’t be here without you! If you’d like to help improve elementary OS, don’t hesitate to Get Involved!

elementary

We design and develop the fast, open, and privacy-respecting replacement for Windows and macOS

Thanks to Blake Kostner and Cassidy James Blaede

Daniel Foré

Written by

Founder at elementary

elementary

We design and develop the fast, open, and privacy-respecting replacement for Windows and macOS

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade