Great stuff Jan. I’ve forwarded to some of our internal CI team who might not be watching this list on a daily basis.
Your comments about non-x86 architectures also resonate, as we get relatively frequent requests to support Cloudant on the POWER architecture, and I’ve convinced IBM to donate hardware to the ASF CI system as a stepping stone there :) Cheers, — Adam Kocoloski IBM Distinguished Engineer CTO, Cloud Data Services > On Jun 29, 2015, at 5:21 PM, Jan Lehnardt <[email protected]> wrote: > > Hey all, > > last week I did a bit of outreach on Twitter, trying to grow our CI team. > “What CI team?” you ask. — Exactly. > > CouchDB needs world-class continuous integration in order to guarantee that > we deliver quality software across many platforms and configuration without > wasting too much time. > > In the past, I’ve handled the CI setup (http://ci.couchdb.org:8888 / rough > docs at: http://wiki.apache.org/couchdb/CI where you see that we are a little > out of date ;) on a Mac Mini in my home. It was meant as a temporary measure > until a larger team could take over. This never happened and we are trying to > revive the effort now for the upcoming 2.0 release. > > Before you ask: we are already using Travis CI, and it is really nice to do > baseline checks for ongoing development and Pull Requests, but it is > inadequate to satisfy all our testing needs. In particular testing on > multiple operating systems, different operating system versions, dependency > versions and configurations (and Windows!) — I’m very good personal friends > with the Travis team, and they want to work towards supporting these things, > but it’s nowhere near on their roadmap, and we need better CI now. > > > ## There are a bunch of things to do > > Before I go into details, I’d like to point out that the most important thing > we need here is someone, or better a group of people that are *interested in > assuming ownership of the CouchDB Continuous Integration operations*. > > You’ll be part of a uniquely friendly community and would work on something, > while sometimes thankless, that would be of incredible benefit to the > project. And we are here to hold your hands getting started. :) > > Also, nothing here requires any specific Erlang knowledge. Any test suites > are up to the Erlang devs in the community and other than that, Erlang is > just another Unix/Windows binary, nothing special required, *and* you have a > bunch of experts eager to help you at your disposal :) > > And one final prelude item: While these things might seem overly specific, it > doesn’t really matter how you arrive at what we need. One of the appeals of > Open Source is to do your own thing and see that it helps, so if you have a > completely different vision for CI that would give us the same or even better > benefits, by all means, it’s your show :) > > With all that out of the way, there are multiple areas that need tackling: > > - Coordination with the ASF Infra/CI team for the existing Jenkins setup and > build-machine configuration (we can continue to use ci.couchdb.org:8888 for a > while but eventually, this should live on ci.apache.org) > - Automation of build-machine configuration with Ansible or whatever else > floats your boat / is required by ASF Infra. > - Invent system to maintain and extend this going forward, with new operating > system releases and Erlang versions being released. > - Set up newly minted build-machines with either ci.apache.org or > ci.couchdb.org:8888 Jenkins installs (ci.apache.org preferred) > > This is already a bit of work. I’d recommend to start small: > > 1. Get one OS in a single configuration going (maybe even just current Ubuntu > and latest-ish Erlang). > 2. Go through the whole process and see it running on master and our test > branches, set up all the integrations (Github/IRC/Email) etc. just to see > that we have a full system running, from build-machine config to succeeding > builds. > 3. Only then, start extending to multiple OSs and configurations (of course, > if you can roll some work for this into step 1., don’t hold off on it, but > this is only crucial at a later state). > > > * * * > > ## Configurations > > A small sidebar on configurations: the most interesting build variation is > different Erlang versions. CouchDB supports quite a wide range of Erlang > versions (R14B01|R14B03|R14B04|R16B02|R16B03-1|17), and eventually it’d be > nice to test against the whole range, or at least the last in a major release > line. Erlang also releases preview versions of upcoming major versions > frequently and being up to speed what is going to happen would be nice. > > Most other CouchDB dependencies are rather stable. At this point we mostly > run on SpiderMonkey 1.8.5 and whatever is the latest ICU (icu4c) release, but > some variation there would be nice as well. Other devs, what am I missing? > > As for operating systems, like mentioned in the wiki link above, it’d be nice > to arrive at a policy where we support all current and LTS releases of Linux > distros/FreeBSD/*BSD/{Solaris,Illumos}/Windows/etc. If we get to it, even > latest-1 versions. Also interesting are non-x86/ia64 architectures, > especially embedded ARM things like RasPI. All this is nice to have for *way* > later, just so you have an idea where this is going. > > * * * > > One last thing that we also want to get going eventually is release channels > for the various package management systems where the Apache CouchDB Project > maintains releases in that channel. Ideally, they are built and tested on our > CI infrastructure on each platform/version configuration and ideally of of > this is automated, with testing and stable channels, so people can test > in-development versions for CouchDB really easily. All this should make > CouchDB a lot easier to install on various platforms. But again, this is a > little off, and not a primary goal just yet. > > * * * > > Okay, that’s it for now. I hope you are still with me! :) > > Thank you Francis and Bastian (in CC) for responding to the call to action > last week and Dominik, who voiced interest in this at the CouchDB Day in > Hamburg earlier this year. I’ll be pointing more folks to this mailing list > post, so I hope we’ll get some more to join. > > If you know anyone partial to these topics, please point them here as well! > > If you have any questions, feel free to ask here or on Freenode IRC #couchdb > or #couchdb-dev, but for now, the mailing list is probably best, with IRC > being reserved for hashing out details that need higher bandwidth. > > Thanks for reading and I hope we can get this off the ground! :) > > Best > Jan > -- > Professional Support for Apache CouchDB: > http://www.neighbourhood.ie/couchdb-support/ >
