module Deployment module Methods def set(name, value) Helper.validates_presence_of name Helper.validates_presence_of value $recipe_config[name] = value end end def self.deliver(&block) worker = Worker.new worker.instance_eval(&block) return worker end class Worker attr_accessor :cdb def initialize # initialize logging if not $recipe_config[:log_level].nil? case $recipe_config[:log_level] when "DEBUG" $log.level('stdout_logger', Log4r::DEBUG) when "INFO" $log.level('stdout_logger', Log4r::INFO) when "WARN" $log.level('stdout_logger', Log4r::WARN) when "ERROR" $log.level('stdout_logger', Log4r::ERROR) when "FATAL" $log.level('stdout_logger', Log4r::FATAL) end end if $recipe_config[:log_trace] $log.enable_trace end load_modules! # generate hash from environemnt variables and merge $recipe_config.merge! Helper.get_environemnt_variables($recipe_config['env_exceptions'] || "LS_COLORS TERMCAP") @version = Helper.parse_version($recipe_config[:version]) # validate needed environment variables Helper.validates_not_empty $recipe_config[:env], "env is not set" Helper.validates_not_empty $recipe_config[:version], "version is not set" Helper.validates_not_empty $recipe_config[:deploy_home], "deploy_home is not set" if $recipe_config[:skip_cdb_setup] @cdb = {} else $recipe_config['cdb_host'] ||= "filesystem" $recipe_config['cdb_context'] ||= "" @cdb = get_cdb_parameters(@version['cdb']) end setup_workspace! # the logfile needs a correct WORKSPACE and the initial dirs # so we have to set it here if $recipe_config[:log_file] level = Log4r::INFO $log.writer.info "Logfile level set to #{$recipe_config[:log_file_level]}" case $recipe_config[:log_file_level] when "DEBUG" level = Log4r::DEBUG when "INFO" level = Log4r::INFO when "WARN" level = Log4r::WARN when "ERROR" level = Log4r::ERROR when "FATAL" level = Log4r::FATAL end $log.add_outputter(Log4r::FileOutputter.new('log_file', \ :filename => File.join($recipe_config[:deploy_home], 'log', \ $recipe_config[:log_file])), \ level) end end def load_modules! require_relative 'fileops' require_relative 'zip' require_relative 'template' require_relative 'cdb' require_relative 'repository' require_relative 'dweb' require_relative 'remote' require_relative 'publisher' require_relative 'patch' require_relative 'iis' require_relative 'helper' [Methods::Zip, Methods::Fileops, Methods::Template, Methods::CDB, Methods::Repository, Methods::DWEB, Methods::Remote, Methods::Publisher, Methods::Patch, Methods::IIS, Methods::Helper].each do |mod| self.class.class_eval do include mod end end end def setup_workspace! if $recipe_config[:cleanup_workspace_before] $log.writer.info "Remove all files from Workspace" Helper.cleanup_workspace!($recipe_config[:deploy_home], $recipe_config[:cleanup_workspace_before]) end Helper.init_workspace($recipe_config[:deploy_home]) if $recipe_config[:copy_to_workspace] $recipe_config[:copy_to_workspace] = ["config"] unless $recipe_config[:copy_to_workspace].respond_to?(:each) $recipe_config[:copy_to_workspace].each do |dir| copy_to_workspace!(dir) end end end def copy_to_workspace!(dir) Processor::copy(File.join($recipe_config[:recipe_base_dir], dir), $recipe_config[:deploy_home]) end # access configdata like this... # @hudson['USER'] # $recipe_config[:application_name] end end