To me, the key features of CI are that a) it builds each branch
automatically, b) notifies affected parties when all is not well, and c)
manages the artefacts in a reasonable way. Additionally, we're a lot more
useful when we're writing neat software and not spending out time managing
CI, so it should be as automatic as reasonable. We're using github for PRs,
so if it's at all possible to get automatic PR tagging with build
information, that is greatly desirable. Knowing that the PR breaks the
build prior to merging it can save quite a bit of time. :)

I've not used BuildBot, but it feels... svney?

Jenkins can do all of the above, though basically all those features are
plugins. There's a "build per branch" plugin that uses branches to
automatically make builds. There's a variety of notifier plugins. There are
some artefact management plugins. There is a "build PRs" plugin that's
specifically designed for GitHub. Jenkins isn't much on its own, but
properly adorned with plugins, it can do most of what we'd want, I think.

I've also had extensive experience with Bamboo, Atlassian's closed-source
solution in the same suite as Jira. Bamboo is usable gratis for OSS in the
same way we currently use Apache Jira.

Bamboo also has plugins, but the majority of it's features are good to go
immediately. There's an automatic checkbox for "build per branch". The
artefacts are managed fairly automatically, especially if you fill in the
"build expiration" boxes. Notification is automatic and easy to configure.
It's got a (free) plugin for PR statuses.

In any case, we'll need to manually configure the valid lists of
contributors. For security reasons, we probably can't just run whatever PR
is created without any prior contact. :/ In Jenkins, this looks like
maintaining a "white list" of legal contributors for a PR inside the PR
plugin. In Bamboo, it looks like listing the committer forks as copied
projects. Either way is fairly manageable.

Jenkins and Bamboo both run on Java. So... no winner there. :)

I think the major question is one of hosting. No matter what solution we
use, we need a few cycles, a network interface, and a bit of disk space to
run it. The apache jenkins appears to have almost all the stuff we need. It
does not appear to have docker-compose, which we're leveraging fairly
significantly at the moment. docker-compose, however, is Apache licensed,
so we could theoretically ship it inside the repo. Not sure I like that
option, though. We could also switch off of compose and put the relevant
options into our build script directly. Not sure I like that option, either.

We'd have the most flexibility if we could get one or more companies to
donate a publicly accessible host (or even theoretically, a build slave),
assuming that doesn't break Apache's rules. The CI doesn't need a ton of
gas, but the more oomph it has, the more granularly it can build and more
aggressively we can test.

On Sun, Mar 12, 2017 at 6:54 PM Eric Friedrich (efriedri) <
efrie...@cisco.com> wrote:

Hey All-
  I’d played around before with Travis CI for Continuous Integration
builds, but never actually set it up for the public repo.

I know some others on the list have tried out comparable services. Does
anyone have experience or suggestions to share?

Also, we can now get access to Apache Buildbot (
https://ci.apache.org/buildbot.html) and an Apache hosted Jenkins (
https://cwiki.apache.org/confluence/display/INFRA/Jenkins)

I think Traffic Server has their own separate Jenkins server so they can
hit more platforms, but with the latest build changes, pretty much all we
require is access to a docker daemon

—Eric

Reply via email to