This plugin creates a .travis.yml file in your distro for CI smoke testing (or what we like to call "chain smoking"). It will also (optionally) create a separate .travis.yml file for your build directory after a release.

Why two files? Because chain smoking via DZIL will work a lot differently than a traditional Makefile.PL; make. This tests both your distribution repo environment as well as what a CPAN user would see.

Of course, you still need to turn on TravisCI and the remote still needs to be a GitHub repo for any of this to work.

This is a regular expression indicating which (build) branches are okay for running through Travis CI, per the configuration's branch whitelist option. The value will be inserted directly as an only clause. The default is /^build\/.*/.

This more or less requires Git::CommitBuild to work. (Ordering is important, too. TravisYML comes before Git::CommitBuild.) You should change this to match up with the release_branch option, if your build branch is not going to reside in a build/* structure.

Also, if you want to disable build branch testing, you can set this to 0.

Turning this on enables Minimum Version Dependency Testing. This will make your YML file less of a static file, as it will now include commands to forcefully downgrade your dependencies to the lowest version that your prereqs said they would be able to use.

While going through the MVDT process is recommended, it can be a royal PITA sometimes, so this option isn't on by default. It's HIGHLY recommended that you read the above doc first to get an idea of what you're diving into.

For the most part, the default command sets for TravisYML serves its purpose. However, you may have some unusual situation from within your distro that demands a custom command or two. For that purpose, there is a set of "dynamic" options available to add or replace any part of the command list for Travis.

The positions determine if the commands are to be added at the beginning (pre_), the end (post_), or replacing (no prefix) the existing code. Replace entire blocks at your own risk; TravisYML may change the blocks for bug fixes or new features.

The file type determines if these command changes are for the DZIL YML file (_dzil), the build YML file (_build), or both (no suffix).

For example, this would give you the following combinations for the 'before_install' phase:

A common question I get with this plugin is: "If .travis.yml is a static file, why bother with a plugin?"

Three reasons:

1. DZIL and Travis-CI interactions - If you look at the YML file itself, you'll notice that it's not a 5-line file. It's not as simple as telling Travis that this is a Perl distro and GO. Both Travis-CI and DZIL are ever changing platforms, and this plugin will keep things in sync with those two platforms. (For example, Travis VMs recently stopped using a valid name/email for git's user.* config items, which impacted DZIL smoking with certain Git plugins. So, TravisYML had to compensate.) I personally use this plugin myself, so if there are new issues that come up, I should be one of the first to notice.

2. Build branches - Build branches are great for having a perfect copy of your current release, giving non-DZIL folks a chance to submit patches, and for running a Travis-CI test on something that is close to the CPAN release as possible. However, setting that up can be tricky, and it requires a second YML file just for the build branch. TravisYML manages that by hiding the DZIL .travis.yml file prior to building, and then creating a new one after release (but before the build branch is commited).