I have a kernel for an android phone ready for release. I always have the current source code already pushed to GitHub for release builds. However, I also have an experimental folder on my server where all builds I make are inside. The source code of these newer builds is not public. Am I allowed to do this? 
Do I have to publish kernel source if I release a custom kernel?
linux kernel;source;licenses
You must distribute the source code you have used to compile the [GPL V2 licensed] binary that you distribute, So anyone that fetch the binary can modify and recompile the source code.The source code and binary don't have to be exactly side-by side. The source code should be easy to fetch, uncompress..., otherwise you should document how to get it,  where to get it, how to uncompress and build it...This only applies to each and every version of the binary that you distribute (even experimental). If your experimental binary is published and overwritten, it's probably fine to publish the source repository (like git).See  http://www.gnu.org/licenses/gpl-faq.en.html#GPLRequireSourcePostedPublic