Commit 0f502fa6b6ce209eaea043e4dd4a57dee11ddce3

Authored by Sytse Sijbrandij
2 parents da68aeb3 a2f049cf

Merge branch 'specify_url' into 'master'

Specify Url
README.md
... ... @@ -8,7 +8,7 @@ GitLab!
8 8 After the steps below your GitLab instance should reachable over HTTP,
9 9 and have an admin user with username `root` and password `5iveL!fe`.
10 10  
11   -### Ubuntu
  11 +### Ubuntu 12.04
12 12  
13 13 ```
14 14 sudo apt-get install openssh-server
... ... @@ -30,28 +30,59 @@ sudo lokkit -s http -s ssh
30 30  
31 31 ## How to manage an Omnibus-installed GitLab
32 32  
33   -### Administrative commands
  33 +### Start/stop GitLab
34 34  
35   -You can make configuration changes by editing `/etc/gitlab/gitlab.rb` and
36   -`/etc/gitlab/gitlab-secrets.json`, followed by running
  35 +You can start, stop or restart GitLab and all of its components with the
  36 +following commands.
37 37  
  38 +```shell
  39 +# Start all GitLab components
  40 +sudo gitlab-ctl start
  41 +
  42 +# Stop all GitLab components
  43 +sudo gitlab-ctl stop
  44 +
  45 +# Restart all GitLab components
  46 +sudo gitlab-ctl restart
38 47 ```
39   -sudo gitlab-ctl reconfigure
  48 +
  49 +It is also possible to start, stop or restart individual components.
  50 +
  51 +```shell
  52 +sudo gitlab-ctl restart unicorn
  53 +```
  54 +
  55 +### Creating the gitlab.rb configuration file
  56 +
  57 +```shell
  58 +sudo mkdir -p /etc/gitlab
  59 +sudo touch /etc/gitlab/gitlab.rb
  60 +sudo chmod 600 /etc/gitlab/gitlab.rb
40 61 ```
41 62  
42   -To start/stop a component of GitLab run e.g.
43   -`sudo gitlab-ctl stop sidekiq`. To permanently disable e.g. Sidekiq, add
44   -`sidekiq['enable'] = false` to `/etc/gitlab/gitlab.rb`, and run
45   -`sudo gitlab-ctl reconfigure` for the change to take effect.
  63 +### Configuring the external URL for GitLab
46 64  
47   -To invoke a GitLab rake task, use `gitlab-rake`. For example:
  65 +In order for GitLab to display correct repository clone links to your users
  66 +it needs to know the URL under which it is reached by your users, e.g.
  67 +`http://gitlab.example.com`. Add the following line to `/etc/gitlab/gitlab.rb`:
48 68  
  69 +```ruby
  70 +external_url "http://gitlab.example.com"
49 71 ```
  72 +
  73 +Run `sudo gitlab-ctl reconfigure` for the change to take effect.
  74 +
  75 +### Invoking Rake tasks
  76 +
  77 +To invoke a GitLab Rake task, use `gitlab-rake`. For example:
  78 +
  79 +```shell
50 80 sudo gitlab-rake gitlab:backup:create
51 81 ```
52 82  
53   -There is no need to change the user or the `RAILS_ENV` environment variable;
54   -this is taken care of by the `gitlab-rake` wrapper script.
  83 +Contrary to with a traditional GitLab installation, there is no need to change
  84 +the user or the `RAILS_ENV` environment variable; this is taken care of by the
  85 +`gitlab-rake` wrapper script.
55 86  
56 87 ### Directory structure
57 88  
... ... @@ -67,4 +98,4 @@ Omnibus-gitlab uses four different directories.
67 98  
68 99 ## Building your own package
69 100  
70   -See (doc/build.md).
  101 +See [the separate build documentation](doc/build.md).
... ...
files/gitlab-cookbooks/gitlab/libraries/gitlab.rb
... ... @@ -21,11 +21,13 @@ require 'chef/mash'
21 21 require 'chef/json_compat'
22 22 require 'chef/mixin/deep_merge'
23 23 require 'securerandom'
  24 +require 'uri'
24 25  
25 26 module Gitlab
26 27 extend(Mixlib::Config)
27 28  
28 29 bootstrap Mash.new
  30 + user Mash.new
29 31 postgresql Mash.new
30 32 redis Mash.new
31 33 gitlab_rails Mash.new
... ... @@ -33,6 +35,7 @@ module Gitlab
33 35 sidekiq Mash.new
34 36 nginx Mash.new
35 37 node nil
  38 + external_url nil
36 39  
37 40 class << self
38 41  
... ... @@ -72,10 +75,39 @@ module Gitlab
72 75 end
73 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 106 def generate_hash
76 107 results = { "gitlab" => {} }
77 108 [
78 109 "bootstrap",
  110 + "user",
79 111 "redis",
80 112 "gitlab_rails",
81 113 "unicorn",
... ... @@ -92,6 +124,7 @@ module Gitlab
92 124  
93 125 def generate_config(node_name)
94 126 generate_secrets(node_name)
  127 + parse_external_url
95 128 generate_hash
96 129 end
97 130 end
... ...