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