Closed sepulworld closed 6 years ago
@sepulworld - thanks for your PR; I'm going to have to look at this more closely when I find some spare time - but I want to do it justice. Luckily, I'm back doing Puppet stuff at a new gig and I do want to give Magnum a big upgrade at some point to make my life and everyone else's easier :)
Sounds good to me! I have other pull requests for Magnum too, that I believe would be useful for all.
If you want me to write some unit tests, I can do this too.
Have you considered adding gem builds to the Travis job? Looks like puppet-magnum is an available name for a Gem on Rubygems.org
Purpose of this option
To remove the need to manage .fixtures.yml files in every puppet module manually. This manual management of .fixtures.yml will lead to a broken puppet environment. Allows modules to test against the 'master' branch of dependent modules before they merge into the environments r10k manages. Allowing us to catch broken dependencies sooner.
Problem Scenario it helps solve
Let A be a module with a dependency B. A has recently been updated, and it is working. The rspec tests are passing when using module B version 2.1.0, which is the version defined in .fixtures.yml; this is also the version in the current Puppetfile. We tag A with version 1.1.0. Everything works great for 2 months. Module B is updated to perform new tasks, and a release 3.0.0 is tagged, which introduces new variables and removed old ones. All tests are working well. Puppetfile is updated to use Module B version 3.0.0. All spec tests pass in the module build environment. Module B version 3.0.0 is added to the production Puppetfile All subsequent puppet runs fail.
Example fixtures.yml using Puppetfile for reference
Example cli command w/ puppetfile_git_source provided