On the job we use a large mixture of technologies, from open source javascript libraries found on github to expensive professional development IDEs like Microsoft Visual Studio. In the past (little over a year ago), all our builds were done through custom build scripts, we used ant here and there but most of the plumbing was done through a set of well-maintained shell scripts. Last year we decided to standardize on more fancy build chains, for the build process itself use maven wherever possible, use jenkins on the buildserver and store all artifacts in nexus. So far so good, we managed to get pretty much all of our projects ported to this new build-chain (we still have some oddball projects on the todo list). Things that are supported out of the box (java stuff) works like a charm, create some simple poms, add a few jenkins jobs and you’re done. Integrating other projects (c++ projects that have to be built with Visual Studio on Windows and gcc on Linux) are a bit more problematic. For some reason there doesn’t seem to be a simple way to do this, but we managed to get things to work by building larger, more elaborate poms. (More poms is better right?).
In our own development cycle we take the slow&stable approach, which has worked well for our company over the years, but now that we start using more and more things that depend on fancy open source things, we keep hitting small speed-bumps that seem to be the result of the ‘move fast and break stuff’ mentality evangelized by various communities. Over the past month we had release builds fail because some library that was stuffed deep into the dependency hierarchy made some breaking changes, all jenkins jobs started failing today with uninformative errors because it was deemed necessary to support >8GB files (breaking other sizes) and we have to manually restart various bits and pieces of the build environment on a regular basis because automatic updates break stuff all the time.
So up till now the experience has been mixed, being able to build your entire project by clicking a little ‘build’ button is awesome, spending hoursĀ on wild goose chases because somebody pushed untested software to all users is a little less awesome.