Managing Complexity with Module::Release

  • 2,598 views
Uploaded 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.

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.

More in: Technology , Business
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
2,598
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
0
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 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. Releasing code is hard...
  • 3. actually, it’s too easy...
  • 4. Releasing good code is hard...
  • 5. Did I ... ? test everything disttest everything check in the sources include new files in MANIFEST update Changes and README
  • 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. 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. Rinse, repeat...
  • 9. Annoy users
  • 10. Now do that for 50 distributions
  • 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. Automate!
  • 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. release(1) Part of Module::Release
  • 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. 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. 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. New problem, new step
  • 19. Did I update $VERSION? Anyone want to write Test::GreaterVersion?
  • 20. Future directions Pluggable modules Support for more checks Not just for Perl More canned scripts working title: Starburst