Puppet supports a lot of platforms, including some that aren't well represented in the cloud world, like AIX or Solaris. To cover all these platforms, much of our module testing happened on an internal Jenkins server and our in-house vmpooler infrastructure. This worked pretty well, but had the unfortunate side effect that PRs from community contributors would often get rejected by an opaque process that didn't even tell them what tests failed!