I have some android / google app engine projects on the go at home. I'm currently running a ubuntu VM that purely runs jenkins to build and test my projects. It's nice, but it'd be so much more conveniant if I could run it in the cloud somewhere.
What are my options for doing this? Preferably I'd rather not have to pay, so free options would be nicer.
What do I need, just somewhere that offers free J2EE containers like tomcat?
CloudBees -a commercial firm- does this, so it's possible. While there are one or two places that offer free JEE hosting, their offerings are so limited that it almost certainly wouldn't be sufficient for a build environment. Usable JEE hosting simply has its price, there's no way around that.
Having a single VM that runs Jenkins and is also a build slave should work without issue. Setting up additional VMs as build slaves might be an issue, however, depending on port configurations. Usually only HtTTP/HTTPS traffic is allowed, while communication with a build slave might use other mechanisms and hence other ports.
At my company, we run Jenkins in a VM in our private cloud and all of our build slaves are also VMs in the same private cloud. But then we don't have the port issues you would run into in a public cloud.