- QA: We have some unit tests, but mainly we use a huge test suite that does end to end testing of tools. It uses automake's test framework, so it works across all the languages in the project.
- Builds and releases: We use autotools and tarballs. It's automated using a thing called 'goaljobs' which is like a generalized make.
- The pain points for us all derive from autotools itself, which is both crap and better than all the other build systems[2]. It is at least well understood.
I'd also say the killer advantages of OCaml for me are: Easy calling into C, and compiles to a native binary.
[1] http://libguestfs.org https://github.com/libguestfs/libguestfs
[2] I use the term "build system" in a rather narrow sense of something that (a) runs on Linux (b) lets the end user download a tarball and (c) builds using ./configure && make