How to push CPAN modules from Github to CPAN
As I’ve mentioned in my YAPC talk in Pittsburgh last week (slides are here, video parts 1-3 are here, here, and here), there’s an easy way to release the next version of your Github-hosted CPAN module via Pause on CPAN:
Let’s say that you’ve tagged the release with “rel_125″ in git and pushed the tag to github (git push –tags). Now github will create a tarball with the content of the repository if you go to the project’s download page at
http://github.com/mschilli/proc-simple-perl/tarball/rel_125
Now, this URL isn’t quite ready to be used on Pause, because Pause expects the name and the version of the module. But this can be fixed by using a URL like
http://github.com/mschilli/proc-simple-perl/tarball/rel_125/Proc-Simple-1.25.tgz
which a) adds the name/version Pause expects and b) doesn’t bother github, which just interprets “/Proc-Simple-1.25.tgz” as PATHINFO and ignores it. So all you need to do is fill out this form on Pause:
Then press the “Upload this URL” button, and Pause will go to github, fetch the tarball and release it on CPAN.
Caveats: Make sure everything you want in the tarball is checked into git. The repo needs to be structured just like the CPAN module should look like later. Use Makefile.PL in the top dir, and don’t forget META.yml and MANIFEST. Also make sure that everything in your repo is safe to be published on CPAN. Enjoy!



