I am fairly happy with Jenkins but mostly because I am familiar with it. Only real downside is the resource usage when idle. And some plugins are not really maintained anymore.
Try to wrap things in Makefiles or some other abstraction so your CI-side scripts are basically `make lint; make build; make test; make dist_packages` or similar, and you're not locked into any specific CI system and can easily jump ship if required.