The SCM system you use can be essential in making your CI choice.
Using a private/intranet solution, for example, pretty much excludes CircleCI and TravisCI as these only support cloud-based GitHub and/or Bitbucket.
Jenkins has plugins supporting many SCM systems out there, see Which SCM tools does Jenkins support?Which SCM tools does Jenkins support?. But using a less popular or a wrapped/customized SCM system may require development of a new plugin.
Also particularities of your building/testing framework/infrastructure may matter, for similar reasons (configuration, location/access method and compatibility/support).