Module: Satorix::CI::Deploy::Flynn::EnvironmentVariables
- Included in:
- Satorix::CI::Deploy::Flynn
- Defined in:
- lib/satorix/CI/deploy/flynn/environment_variables.rb
Instance Method Summary collapse
- #adjust_env_vars ⇒ Object
- #aeev_key_exists? ⇒ Boolean
- #aeev_prefix ⇒ Object
- #ci_provided_env_vars ⇒ Object
- #current_flynn_keys ⇒ Object
- #desired_env_vars ⇒ Object
- #ensure_required_env_vars_are_defined(configuration_file: 'config/secrets.yml') ⇒ Object
- #env_set ⇒ Object
- #env_unset ⇒ Object
- #env_vars ⇒ Object
- #env_vars_to_set ⇒ Object
- #env_vars_to_unset ⇒ Object
- #exported_aeevs_key ⇒ Object
Instance Method Details
#adjust_env_vars ⇒ Object
10 11 12 13 14 |
# File 'lib/satorix/CI/deploy/flynn/environment_variables.rb', line 10 def adjust_env_vars ensure_required_env_vars_are_defined unless ENV["SATORIX_#{ current_branch }_ENFORCE_ENV_VAR_DEFINITION"] == 'false' env_unset env_set end |
#aeev_key_exists? ⇒ Boolean
17 18 19 |
# File 'lib/satorix/CI/deploy/flynn/environment_variables.rb', line 17 def aeev_key_exists? !(run_command('flynn env', quiet: true) =~ /#{ exported_aeevs_key }=/mi).nil? end |
#aeev_prefix ⇒ Object
22 23 24 25 |
# File 'lib/satorix/CI/deploy/flynn/environment_variables.rb', line 22 def aeev_prefix # AEEV - Application Exportable Environment Variable "AEEV_#{ current_branch }_" end |
#ci_provided_env_vars ⇒ Object
28 29 30 31 32 33 34 |
# File 'lib/satorix/CI/deploy/flynn/environment_variables.rb', line 28 def ci_provided_env_vars {}.tap do |vars| ENV.each do |key, value| vars[key.sub(aeev_prefix, '')] = value.sub('***EMPTY_STRING***', '') if key.start_with?(aeev_prefix) end end end |
#current_flynn_keys ⇒ Object
37 38 39 |
# File 'lib/satorix/CI/deploy/flynn/environment_variables.rb', line 37 def current_flynn_keys aeev_key_exists? ? run_command("flynn env get #{ exported_aeevs_key }", quiet: true).split : [] end |
#desired_env_vars ⇒ Object
42 43 44 45 46 |
# File 'lib/satorix/CI/deploy/flynn/environment_variables.rb', line 42 def desired_env_vars ci_provided_env_vars.tap do |vars| vars[exported_aeevs_key] = (vars.keys << exported_aeevs_key).sort.join("\n") end end |
#ensure_required_env_vars_are_defined(configuration_file: 'config/secrets.yml') ⇒ Object
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/satorix/CI/deploy/flynn/environment_variables.rb', line 49 def ensure_required_env_vars_are_defined(configuration_file: 'config/secrets.yml') # TODO : handle new Rails secrets methods, like encrypted secrets if File.file?(configuration_file) secrets = YAML.load_file(configuration_file) all_secrets = {} all_secrets.merge!(secrets['shared']) if secrets['shared'] all_secrets.merge!(secrets['production']) if secrets['production'] required = all_secrets.to_yaml.scan(/ENV\[['"](?<var>[A-Z0-9_.]+)['"]\]/).flatten.uniq set = ci_provided_env_vars.keys missing = required - set if missing.empty? log "All required environment variables from #{ configuration_file } have been defined." else log_error "Environment variables specified in #{ configuration_file } were not defined for the #{ current_branch.downcase } branch." log_error "\nPlease define the following variables in your dashboard:\n#{ missing.join("\n") }\n" log_error_and_abort 'Missing required environment variables.' end else log "No #{ configuration_file } exists, skipping environment variable enforcement." end end |
#env_set ⇒ Object
76 77 78 79 80 81 82 83 |
# File 'lib/satorix/CI/deploy/flynn/environment_variables.rb', line 76 def env_set if env_vars_to_set.empty? log 'No new environment variables to set.' else keys_and_values = env_vars_to_set.map { |k, v| "#{ k }=#{ v }" } run_command(['flynn', 'env', 'set', keys_and_values].flatten, filtered_text: env_vars_to_set.values) end end |
#env_unset ⇒ Object
86 87 88 89 90 91 92 |
# File 'lib/satorix/CI/deploy/flynn/environment_variables.rb', line 86 def env_unset if env_vars_to_unset.empty? log 'No existing environment variables to unset.' else run_command "flynn env unset #{ env_vars_to_unset.join(' ') }" end end |
#env_vars ⇒ Object
95 96 97 98 99 100 101 |
# File 'lib/satorix/CI/deploy/flynn/environment_variables.rb', line 95 def env_vars @_env_vars ||= begin {}.tap do |vars| current_flynn_keys.each { |key| vars[key] = run_command("flynn env get #{ key }", quiet: true).chomp } end end end |
#env_vars_to_set ⇒ Object
104 105 106 |
# File 'lib/satorix/CI/deploy/flynn/environment_variables.rb', line 104 def env_vars_to_set @_env_vars_to_set ||= desired_env_vars.reject { |k, v| env_vars.key?(k) && env_vars[k] == v } end |
#env_vars_to_unset ⇒ Object
109 110 111 |
# File 'lib/satorix/CI/deploy/flynn/environment_variables.rb', line 109 def env_vars_to_unset @_env_vars_to_unset ||= env_vars.keys - desired_env_vars.keys end |
#exported_aeevs_key ⇒ Object
114 115 116 |
# File 'lib/satorix/CI/deploy/flynn/environment_variables.rb', line 114 def exported_aeevs_key 'AEEV_KEYS' end |