This post started out at a comment on a blog post, but it was simply not possible for me to comment on the relevant post, so I have edited my comment into a blog post even though most of the contents are not mine :-/
So all the Kudos, credits, beers and stuff for the contents of this post should really go to: Alex Balhatchet, read his post:
http://blogs.perl.org/users/alex_balhatchet/2013/04/travis-ci-perl.html
Okay – I have migrated all of my CPAN distributions to Github and all new projects start up here. Over the years I have used Jenkins for continuous integration, so I was very happy when I found out that Github offered continues integration using Travis.
I had everything going with Module::Build, which have been my preferred build system and one I have been using for a long time, with Travis CI on Github, but recently I have started porting all my distributions from Module::Build to Dist::Zilla, which meant that I had to revisit my whole toolchain.
Finding Alex’s article was just what I was looking for.
The after reading Dave Cross blog post and presentation I got coverage with coveralls integrated (see my blog post on those spiffy badges)
In order to get coverage integrated with Alex’s example, I have made the following changes to his suggested setup.
install is extended with:
- cpanm –quiet –notest Devel::Cover::Report::Coveralls
- cpanm –quiet –notest Dist::Zilla::App::Command::cover
and this additional after_success section has to be added:
after_success:
– dzil cover -outputdir cover_db -report coveralls
I did run into some issues with Alex version, so I have to explicitly install Test::Kwalitee since the version on the Travis CI platform is apparently too old, so also under install I do:
- cpanm –quiet –notest Test::Kwalitee
The Test::Kwalitee issue should go away Karen Etheridge patched her Dist::Zilla plugin
An in addition I also had to install the dependencies of the plugins explicitly under install:
- dzil listdeps –author | cpanm –quiet –notest –skip-satisfied
This was due to an issue with Pod::Coverage tests, where Pod::Coverage::TrustPod.pm is missing.
You can have a look at one of my setups from my code Github:
language: perl
perl:
– “5.18″
– “5.16″
– “5.14″
– “5.12″
– “5.10″
before_install:
# Prevent “Please tell me who you are” errors for certain DZIL configs
– git config –global user.name “TravisCI”
install:
# Deal with all of the DZIL dependencies, quickly and quietly
– cpanm –quiet –notest –skip-satisfied Dist::Zilla
# Hack to getting the latest Test::Kwalitee
– cpanm –quiet –notest Test::Kwalitee
# Getting coveralls report
– cpanm –quiet –notest Devel::Cover::Report::Coveralls
# Getting cover command for Dist::Zilla
– cpanm –quiet –notest Dist::Zilla::App::Command::cover
# Getting all the plugins used by Dist::Zilla in this particular setup
– dzil authordeps | grep -vP ‘[^\w:]‘ | xargs -n 5 -P 10 cpanm –quiet –notest –skip-satisfied
# Getting all the dependencies requested by author
– dzil listdeps –author | cpanm –quiet –notest –skip-satisfied
– export RELEASE_TESTING=1 AUTOMATED_TESTING=1 AUTHOR_TESTING=1 HARNESS_OPTIONS=j10:c HARNESS_TIMER=1
# Getting all the dependencies requested by distribution
– dzil listdeps | grep -vP ‘[^\w:]‘ | cpanm –quiet –notest –skip-satisfied
script:
– dzil smoke –release –author
after_success:
– dzil cover -outputdir cover_db -report coveralls
Thanks to Alex Balhatchet for the post – and thanks to Dave for his awesome post and Karen for most impressive responsiveness, when reporting an issue.
Continued good day,
jonasbn, Copenhagen