It seems that with Gitlab CI you can configure 'runners' on your own
hardware for the project(s) that use it, right? So you can install dependencies and don't need to start with a clean slate for every build? That has several pro's and cons as compared with Travis. More DIY, but still with a standardized API.
One other feature-- you can have multiple runners for the same target. So I could have rpi drones in each timezone running gitlab-runner, and if you shoot one of them down gitlab ci will pick one of the other 23 for the next build. It's completely and utter world domination, really. -Jonathan