class Reagan::TestVersion

tests to make sure the version has been updated on the cookbook

Public Class Methods

new(cookbook) click to toggle source
   # File lib/reagan/test_version.rb
29 def initialize(cookbook)
30   @cookbook = cookbook
31 end

Public Instance Methods

check_commit_version() click to toggle source

grab the version of the cookbook in the local metadata

   # File lib/reagan/test_version.rb
34 def check_commit_version
35   metadata = Chef::Cookbook::Metadata.new
36   metadata.from_file(File.join(Config.settings['jenkins']['workspace_dir'], 'cookbooks', @cookbook, 'metadata.rb'))
37   metadata.version
38 end
check_server_version() click to toggle source

grab the most recent version of the cookbook on the chef server

   # File lib/reagan/test_version.rb
41 def check_server_version
42   Ridley::Logging.logger.level = Logger.const_get 'ERROR'
43   begin
44     server_con = Ridley.new(
45       server_url: Config.settings['chef']['server_url'],
46       client_name: Config.settings['chef']['client_name'],
47       client_key: Config.settings['chef']['pem_path'],
48       ssl: { verify: false }
49     )
50     # return the version if the cookbook exists or return 0.0.0 if it's a new coobook not yet on the server
51     if server_con.cookbook.all[@cookbook]
52       server_con.cookbook.all[@cookbook][0]
53     else
54       '0.0.0'
55     end
56   rescue Ridley::Errors::ConnectionFailed
57     puts 'ERROR: Failed to connect to the Chef server. Cannot continue'.indent.to_red
58     exit 1
59   end
60 end
test() click to toggle source

performs version update test returns true if version has been rev'd and false if not

   # File lib/reagan/test_version.rb
64 def test
65   commit_v = check_commit_version
66   serv_v = check_server_version
67   updated = Gem::Version.new(serv_v) < Gem::Version.new(commit_v) ? true : false
68 
69   puts "Running cookbook version rev'd test:"
70   puts "Server version: #{serv_v}".indent
71   puts "Commit version: #{commit_v}".indent
72   puts updated ? "PASS: Metadata version has been rev'd".indent : "FAIL: Metadata version has NOT been rev'd".indent.to_red
73   updated
74 end