Add a Build class

This commit adds a Build class to the packaging repo. The Build class is the
beginning of a shift to using more encapsulated, easier to follow logic in
packaaging. It offers us the opportunity to track state much more easily than
before. The new Build class contains instance variables for all of the
packaging repo's many tracked data, as well as functionality to load these
variables from yaml files, return them as a hash, and most importantly, write
them back out to yaml. This will allow us to cease using a mess of environment
variables when issuing remote commands. Instead of having to constantly update
which params are sent as environment variables to remote tasks, this allows us
to send the entire state of the build object along with our desired build task,
preventing much of the trial and error of the current approach.

Signed-off-by: Moses Mendoza <moses@puppetlabs.com>
assign variables to build object in 10_setupvars.rake

This commit updates 10_setupvars.rake to create a BuildInstance object and
assign our various settings to it, rather than global instance variables. We
defeated encapsulation at the origin of the packaging repo, but here it makes a
defiant return. This commit also modifies variable loading to load everything
from a yaml file we pass in the path to with the PARAMS_FILE environment
variable. This takes advantage of the BuildInstance ability to read in
attributes from a yaml file and write them back out again. We also don't need
explicit parameter setting any more for the most part, since the build object
will read in for us, but we keep the ability to override some parameters with
environment variables.

Signed-off-by: Moses Mendoza <moses@puppetlabs.com>
1 to 1 mapping