Commit e1c7d63e823f84d507ecc26b3fb062fc9a840c23

Authored by Jacob Vosmaer
1 parent d4a71c0d

Specify the external_url in /etc/gitlab/gitlab.rb

files/gitlab-cookbooks/gitlab/libraries/gitlab.rb
@@ -21,11 +21,13 @@ require 'chef/mash' @@ -21,11 +21,13 @@ require 'chef/mash'
21 require 'chef/json_compat' 21 require 'chef/json_compat'
22 require 'chef/mixin/deep_merge' 22 require 'chef/mixin/deep_merge'
23 require 'securerandom' 23 require 'securerandom'
  24 +require 'uri'
24 25
25 module Gitlab 26 module Gitlab
26 extend(Mixlib::Config) 27 extend(Mixlib::Config)
27 28
28 bootstrap Mash.new 29 bootstrap Mash.new
  30 + user Mash.new
29 postgresql Mash.new 31 postgresql Mash.new
30 redis Mash.new 32 redis Mash.new
31 gitlab_rails Mash.new 33 gitlab_rails Mash.new
@@ -33,6 +35,7 @@ module Gitlab @@ -33,6 +35,7 @@ module Gitlab
33 sidekiq Mash.new 35 sidekiq Mash.new
34 nginx Mash.new 36 nginx Mash.new
35 node nil 37 node nil
  38 + external_url nil
36 39
37 class << self 40 class << self
38 41
@@ -72,10 +75,39 @@ module Gitlab @@ -72,10 +75,39 @@ module Gitlab
72 end 75 end
73 end 76 end
74 77
  78 + def parse_external_url
  79 + return unless external_url
  80 +
  81 + uri = URI(external_url.to_s)
  82 +
  83 + unless uri.host
  84 + raise "External URL must include a FQDN"
  85 + end
  86 + Gitlab['user']['git_user_email'] ||= "gitlab@#{uri.host}"
  87 + Gitlab['gitlab_rails']['external_fqdn'] = uri.host
  88 + Gitlab['gitlab_rails']['notification_email'] ||= "gitlab@#{uri.host}"
  89 +
  90 + case uri.scheme
  91 + when "http"
  92 + Gitlab['gitlab_rails']['external_https'] = false
  93 + when "https"
  94 + Gitlab['gitlab_rails']['external_https'] = true
  95 + else
  96 + raise "Unsupported external URL scheme: #{uri.scheme}"
  97 + end
  98 +
  99 + unless ["", "/"].include?(uri.path)
  100 + raise "Unsupported external URL path: #{uri.path}"
  101 + end
  102 +
  103 + Gitlab['gitlab_rails']['external_port'] = uri.port
  104 + end
  105 +
75 def generate_hash 106 def generate_hash
76 results = { "gitlab" => {} } 107 results = { "gitlab" => {} }
77 [ 108 [
78 "bootstrap", 109 "bootstrap",
  110 + "user",
79 "redis", 111 "redis",
80 "gitlab_rails", 112 "gitlab_rails",
81 "unicorn", 113 "unicorn",
@@ -92,6 +124,7 @@ module Gitlab @@ -92,6 +124,7 @@ module Gitlab
92 124
93 def generate_config(node_name) 125 def generate_config(node_name)
94 generate_secrets(node_name) 126 generate_secrets(node_name)
  127 + parse_external_url
95 generate_hash 128 generate_hash
96 end 129 end
97 end 130 end