class OdaniaStaticPages::Deploy::DockerCompose
Public Class Methods
new()
click to toggle source
# File lib/odania_static_pages/deploy/docker_compose.rb, line 6 def initialize @config = OdaniaStaticPages.config @environment = @config.current_environment @deploy_config = @environment.deploy_module @generator_config = @config.generator @nginx_dir = File.join(@config.output_path, 'nginx') @nginx_conf_dir = File.join(@nginx_dir, 'conf.d') end
Public Instance Methods
prepare()
click to toggle source
# File lib/odania_static_pages/deploy/docker_compose.rb, line 15 def prepare puts 'Preparing docker-compose state' load_state state_path = File.dirname(@deploy_config.state_file) FileUtils.mkdir_p state_path unless File.exist? state_path save_state end
publish(color, do_rebuild)
click to toggle source
# File lib/odania_static_pages/deploy/docker_compose.rb, line 23 def publish(color, do_rebuild) puts 'docker-compose' load_state color = color.nil? ? @state[:color] : color new_color = 'green'.eql?(color) ? 'blue' : 'green' puts " -> Current color: #{color}" @site_path = @config.output_site_path puts " -> Deploying to color: #{new_color} [Path: #{@site_path}]" generate_compose_config generate_nginx_config(do_rebuild) prepare_varnish @config.current_environment.do_notify new_color, color puts puts "Finished deploying color #{new_color}" end
Private Instance Methods
generate_compose_config()
click to toggle source
# File lib/odania_static_pages/deploy/docker_compose.rb, line 54 def generate_compose_config puts 'Generating docker-compose.yml' environment = @config.current_environment compose_file = File.join(@config.project_dir, environment.output_path, 'docker-compose.yml') puts "Writing docker compose to #{compose_file}" docker_compose_generator = DockerComposeGenerator.new @config, environment, @nginx_conf_dir docker_compose_generator.write compose_file end
load_state()
click to toggle source
# File lib/odania_static_pages/deploy/docker_compose.rb, line 43 def load_state @state = {color: 'blue'} @state = YAML.load_file(@deploy_config.state_file).symbolize_keys! if File.exist? @deploy_config.state_file @state end
prepare_varnish()
click to toggle source
# File lib/odania_static_pages/deploy/docker_compose.rb, line 64 def prepare_varnish docker_folder = File.join(@config.project_dir, 'docker') FileUtils.mkdir_p docker_folder puts "Checkout repositories in #{docker_folder}" if File.exist? "#{docker_folder}/varnish" cmd = "cd #{docker_folder}/varnish && git pull" else cmd = "git clone -q -b develop https://github.com/Odania-IT/odania-varnish.git #{docker_folder}/varnish" end puts " -> Executing #{cmd}" puts `#{cmd}` exit 1 unless $?.success? if File.exist? "#{docker_folder}/varnish-generator" cmd = "cd #{docker_folder}/varnish-generator && git pull" else cmd = "git clone -q https://github.com/Odania-IT/odania-varnish-generator.git #{docker_folder}/varnish-generator" end puts " -> Executing #{cmd}" puts `#{cmd}` exit 1 unless $?.success? puts 'Prepare varnish secret' File.write File.join(docker_folder, 'varnish', 'varnish-secret'), @deploy_config.varnish_secret File.write File.join(docker_folder, 'varnish-generator', 'varnish-secret'), @deploy_config.varnish_secret end
save_state()
click to toggle source
# File lib/odania_static_pages/deploy/docker_compose.rb, line 50 def save_state File.write @deploy_config.state_file, YAML.dump(@state) end