There is Buildkite, which a hybrid server side / client side solution. This has worked extraordinarily because one of the most frustrating parts of setting up a CI service is setting up a long-lived, reliable server.
Note: I'm not affiliated with Buildkite.