Managing Complexity
with Module::Release
  brian d foy, Stonehenge Consulting Ser vices
             brian@stonehenge.com
...
Releasing code is
     hard...
actually, it’s
 too easy...
Releasing good code
     is hard...
Did I ... ?
test everything
disttest everything
check in the sources
include new files in MANIFEST
update Changes and README
Then I have to...
upload to PAUSE
claim in PAUSE
upload to Sourceforge
overly-complicated Sourceforge file release
tag the ...
When I find out...

what the PAUSE indexer thinks
what CPAN Testers think
if I’m missing something in PREREQ_PM
if I’ve inc...
Rinse, repeat...
Annoy users
Now do that
   for

   50
distributions
I make mistakes
      because...
Repetitive tasks are boring
Focused on bug squashing
Want to release code
Need to fix a di...
Automate!
Computers love...

doing the same thing over and over(?: and
over)+
doing it the same way every time
doing it again if I m...
release(1)
      Part of Module::Release
Automate steps
sub test
   {
    my $self = shift;
    print quot;Checking make test... quot;;

   unless( -e 'Makefile.PL...
Create process
my $release = Module::Release->new( %params );

$release->clean;
$release->build_makefile;
$release->test;
...
Fearless releases

Problems are fatal
Errors tell me what to fix
Nothing updates until everything is good
Too bad there isn...
New problem,
  new step
Did I update
$VERSION?
       Anyone want to write
       Test::GreaterVersion?
Future directions

Pluggable modules
Support for more checks
Not just for Perl
More canned scripts
working title: Starburst
Upcoming SlideShare
Loading in...5
×

Managing Complexity with Module::Release

2,805

Published on

Automating Perl module release with Module::Release, including distribution verification, automating testing, and anything else you need to check before you release your module on the world.

Published in: Technology, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
2,805
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Managing Complexity with Module::Release

  1. 1. Managing Complexity with Module::Release brian d foy, Stonehenge Consulting Ser vices brian@stonehenge.com Nordic Perl Workshop June 16, 2006 www.stonehenge.com
  2. 2. Releasing code is hard...
  3. 3. actually, it’s too easy...
  4. 4. Releasing good code is hard...
  5. 5. Did I ... ? test everything disttest everything check in the sources include new files in MANIFEST update Changes and README
  6. 6. Then I have to... upload to PAUSE claim in PAUSE upload to Sourceforge overly-complicated Sourceforge file release tag the release in source control announce the release
  7. 7. When I find out... what the PAUSE indexer thinks what CPAN Testers think if I’m missing something in PREREQ_PM if I’ve included too little or too much how poor my kwalitee is
  8. 8. Rinse, repeat...
  9. 9. Annoy users
  10. 10. Now do that for 50 distributions
  11. 11. I make mistakes because... Repetitive tasks are boring Focused on bug squashing Want to release code Need to fix a different module Want to do something else Want to do anything else
  12. 12. Automate!
  13. 13. Computers love... doing the same thing over and over(?: and over)+ doing it the same way every time doing it again if I mess up
  14. 14. release(1) Part of Module::Release
  15. 15. Automate steps sub test { my $self = shift; print quot;Checking make test... quot;; unless( -e 'Makefile.PL' ) { print quot; no Makefile.PL---skippingnquot;; return; } my $tests = $self->run( quot;$self->{make} test 2>&1quot; ); die quot;nERROR: Tests failed!n$testsnnquot; unless $tests =~ /All tests successful/; print quot;all tests passnquot;; }
  16. 16. Create process my $release = Module::Release->new( %params ); $release->clean; $release->build_makefile; $release->test; $release->dist; $release->dist_test; $release->check_cvs; $release->clean; $release->build_makefile; $release->dist; $release->check_for_passwords; $release->ftp_upload; $release->pause_claim;
  17. 17. Fearless releases Problems are fatal Errors tell me what to fix Nothing updates until everything is good Too bad there isn’t unrelease(1)
  18. 18. New problem, new step
  19. 19. Did I update $VERSION? Anyone want to write Test::GreaterVersion?
  20. 20. Future directions Pluggable modules Support for more checks Not just for Perl More canned scripts working title: Starburst

×