From 06c0025f16480fce831362317ed6427d51ab3c64 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20Coutable?= Date: Mon, 1 Feb 2016 19:10:25 +0100 Subject: [PATCH 1/3] Improving the "Environment variables" administration doc --- config/database.yml.env | 12 ++++- doc/administration/environment_variables.md | 60 ++++++++++----------- 2 files changed, 40 insertions(+), 32 deletions(-) diff --git a/config/database.yml.env b/config/database.yml.env index b2ff23cb5ab..1e35651c9a6 100644 --- a/config/database.yml.env +++ b/config/database.yml.env @@ -1,9 +1,17 @@ <%= ENV['RAILS_ENV'] %>: + ## Connection information + # Please be aware that the DATABASE_URL environment variable will take + # precedence over the following 6 parameters. For more information, see + # doc/administration/environment_variables.md adapter: <%= ENV['GITLAB_DATABASE_ADAPTER'] || 'postgresql' %> - encoding: <%= ENV['GITLAB_DATABASE_ENCODING'] || 'unicode' %> database: <%= ENV['GITLAB_DATABASE_DATABASE'] || "gitlab_#{ENV['RAILS_ENV']}" %> - pool: <%= ENV['GITLAB_DATABASE_POOL'] || '10' %> username: <%= ENV['GITLAB_DATABASE_USERNAME'] || 'root' %> password: <%= ENV['GITLAB_DATABASE_PASSWORD'] || '' %> host: <%= ENV['GITLAB_DATABASE_HOST'] || 'localhost' %> port: <%= ENV['GITLAB_DATABASE_PORT'] || '5432' %> + + ## Behavior information + # The following parameters will be used even if you're using the DATABASE_URL + # environment variable. + encoding: <%= ENV['GITLAB_DATABASE_ENCODING'] || 'unicode' %> + pool: <%= ENV['GITLAB_DATABASE_POOL'] || '10' %> diff --git a/doc/administration/environment_variables.md b/doc/administration/environment_variables.md index 0faef526d43..b0aa420e055 100644 --- a/doc/administration/environment_variables.md +++ b/doc/administration/environment_variables.md @@ -2,7 +2,7 @@ ## Introduction -Commonly people configure GitLab via the gitlab.rb configuration file in the Omnibus package. +Commonly people configure GitLab via the `gitlab.rb` configuration file in the Omnibus package. But if you prefer to use environment variables we allow that too. @@ -10,45 +10,45 @@ But if you prefer to use environment variables we allow that too. Variable | Type | Explanation -------- | ---- | ----------- -GITLAB_ROOT_PASSWORD | string | sets the password for the `root` user on installation -GITLAB_HOST | url | hostname of the GitLab server includes http or https -RAILS_ENV | production / development / staging / test | Rails environment -DATABASE_URL | url | For example: postgresql://localhost/blog_development?pool=5 -GITLAB_EMAIL_FROM | email | Email address used in the "From" field in mails sent by GitLab -GITLAB_EMAIL_DISPLAY_NAME | string | Name used in the "From" field in mails sent by GitLab -GITLAB_EMAIL_REPLY_TO | email | Email address used in the "Reply-To" field in mails sent by GitLab -GITLAB_UNICORN_MEMORY_MIN | integer | The minimum memory threshold (in bytes) for the Unicorn worker killer -GITLAB_UNICORN_MEMORY_MAX | integer | The maximum memory threshold (in bytes) for the Unicorn worker killer +`GITLAB_ROOT_PASSWORD` | string | Sets the password for the `root` user on installation +`GITLAB_HOST` | url | Hostname of the GitLab server includes http or https +`RAILS_ENV` | production / development / staging / test | Rails environment +`DATABASE_URL` | url | For example: postgresql://localhost/blog_development +`GITLAB_EMAIL_FROM` | email | Email address used in the "From" field in mails sent by GitLab +`GITLAB_EMAIL_DISPLAY_NAME` | string | Name used in the "From" field in mails sent by GitLab +`GITLAB_EMAIL_REPLY_TO` | email | Email address used in the "Reply-To" field in mails sent by GitLab +`GITLAB_UNICORN_MEMORY_MIN` | integer | The minimum memory threshold (in bytes) for the Unicorn worker killer +`GITLAB_UNICORN_MEMORY_MAX` | integer | The maximum memory threshold (in bytes) for the Unicorn worker killer ## Complete database variables -As explained in the [Heroku documentation](https://devcenter.heroku.com/articles/rails-database-connection-behavior) the DATABASE_URL doesn't let you set: +The recommended way of specifying your database connection information is to set +the `DATABASE_URL` environment variable. This variable only holds connection +information (adapter, database, username, password, host and port), but not +behavior information (encoding, pool). If you don't want to use `DATABASE_URL` +and/or want to set database behavior information, you will have to: -- adapter -- database -- username -- password -- host -- port +- copy our template `config/database.yml` file: `cp config/database.yml.env config/database.yml` +- set a value for some `GITLAB_DATABASE_XXX` variables -To do so please `cp config/database.yml.env config/database.yml` and use the following variables: +The list of `GITLAB_DATABASE_XXX` variables that you can set is as follow: -Variable | Default ---- | --- -GITLAB_DATABASE_ADAPTER | postgresql -GITLAB_DATABASE_ENCODING | unicode -GITLAB_DATABASE_DATABASE | gitlab_#{ENV['RAILS_ENV'] -GITLAB_DATABASE_POOL | 10 -GITLAB_DATABASE_USERNAME | root -GITLAB_DATABASE_PASSWORD | -GITLAB_DATABASE_HOST | localhost -GITLAB_DATABASE_PORT | 5432 +Variable | Default value | Overridden by `DATABASE_URL`? +--- | --- | --- +`GITLAB_DATABASE_ADAPTER` | `postgresql` | Yes +`GITLAB_DATABASE_DATABASE` | `gitlab_#{ENV['RAILS_ENV']` | Yes +`GITLAB_DATABASE_USERNAME` | `root` | Yes +`GITLAB_DATABASE_PASSWORD` | None | Yes +`GITLAB_DATABASE_HOST` | `localhost` | Yes +`GITLAB_DATABASE_PORT` | `5432` | Yes +`GITLAB_DATABASE_ENCODING` | `unicode` | No +`GITLAB_DATABASE_POOL` | `10` | No ## Adding more variables We welcome merge requests to make more settings configurable via variables. -Please make changes in the file config/initializers/1_settings.rb -Please stick to the naming scheme "GITLAB_#{name 1_settings.rb in upper case}". +Please make changes in the `config/initializers/1_settings.rb` file. +Please stick to the naming scheme `GITLAB_#{name in 1_settings.rb in upper case}`. ## Omnibus configuration From ea14429b7e1de6d0a61bbdb8e8a198a6b0c28b23 Mon Sep 17 00:00:00 2001 From: Achilleas Pipinellis Date: Wed, 3 Feb 2016 13:56:23 +0200 Subject: [PATCH 2/3] Clean up environment variables doc [ci skip] --- doc/administration/environment_variables.md | 65 +++++++++++---------- 1 file changed, 35 insertions(+), 30 deletions(-) diff --git a/doc/administration/environment_variables.md b/doc/administration/environment_variables.md index b0aa420e055..e49b3dc139b 100644 --- a/doc/administration/environment_variables.md +++ b/doc/administration/environment_variables.md @@ -1,56 +1,61 @@ # Environment Variables -## Introduction +GitLab exposes certain environment variables which can be used to override +their defaults values. -Commonly people configure GitLab via the `gitlab.rb` configuration file in the Omnibus package. +People usually configure GitLab via `/etc/gitlab/gitlab.rb` for Omnibus +installations, or `gitlab.yml` for installations from source. -But if you prefer to use environment variables we allow that too. +Below you will find the supported environment variables which you can use to +override certain values. ## Supported environment variables -Variable | Type | Explanation +Variable | Type | Description -------- | ---- | ----------- -`GITLAB_ROOT_PASSWORD` | string | Sets the password for the `root` user on installation -`GITLAB_HOST` | url | Hostname of the GitLab server includes http or https -`RAILS_ENV` | production / development / staging / test | Rails environment -`DATABASE_URL` | url | For example: postgresql://localhost/blog_development -`GITLAB_EMAIL_FROM` | email | Email address used in the "From" field in mails sent by GitLab -`GITLAB_EMAIL_DISPLAY_NAME` | string | Name used in the "From" field in mails sent by GitLab -`GITLAB_EMAIL_REPLY_TO` | email | Email address used in the "Reply-To" field in mails sent by GitLab -`GITLAB_UNICORN_MEMORY_MIN` | integer | The minimum memory threshold (in bytes) for the Unicorn worker killer -`GITLAB_UNICORN_MEMORY_MAX` | integer | The maximum memory threshold (in bytes) for the Unicorn worker killer +`GITLAB_ROOT_PASSWORD` | string | Sets the password for the `root` user on installation +`GITLAB_HOST` | string | The full URL of the GitLab server (including `http://` or `https://`) +`RAILS_ENV` | string | The Rails environment; can be one of `production`, `development`, `staging` or `test` +`DATABASE_URL` | string | The database URL; is of the form: `postgresql://localhost/blog_development` +`GITLAB_EMAIL_FROM` | string | The e-mail address used in the "From" field in e-mails sent by GitLab +`GITLAB_EMAIL_DISPLAY_NAME` | string | The name used in the "From" field in e-mails sent by GitLab +`GITLAB_EMAIL_REPLY_TO` | string | The e-mail address used in the "Reply-To" field in e-mails sent by GitLab +`GITLAB_UNICORN_MEMORY_MIN` | integer | The minimum memory threshold (in bytes) for the Unicorn worker killer (supported only in Omnibus) +`GITLAB_UNICORN_MEMORY_MAX` | integer | The maximum memory threshold (in bytes) for the Unicorn worker killer (supported only in Omnibus) ## Complete database variables The recommended way of specifying your database connection information is to set the `DATABASE_URL` environment variable. This variable only holds connection -information (adapter, database, username, password, host and port), but not -behavior information (encoding, pool). If you don't want to use `DATABASE_URL` -and/or want to set database behavior information, you will have to: +information (`adapter`, `database`, `username`, `password`, `host` and `port`), +but not behavior information (`encoding`, `pool`). If you don't want to use +`DATABASE_URL` and/or want to set database behavior information, you will have +to either: -- copy our template `config/database.yml` file: `cp config/database.yml.env config/database.yml` +- copy our template file: `cp config/database.yml.env config/database.yml`, or - set a value for some `GITLAB_DATABASE_XXX` variables -The list of `GITLAB_DATABASE_XXX` variables that you can set is as follow: +The list of `GITLAB_DATABASE_XXX` variables that you can set is: Variable | Default value | Overridden by `DATABASE_URL`? ---- | --- | --- -`GITLAB_DATABASE_ADAPTER` | `postgresql` | Yes -`GITLAB_DATABASE_DATABASE` | `gitlab_#{ENV['RAILS_ENV']` | Yes -`GITLAB_DATABASE_USERNAME` | `root` | Yes -`GITLAB_DATABASE_PASSWORD` | None | Yes -`GITLAB_DATABASE_HOST` | `localhost` | Yes -`GITLAB_DATABASE_PORT` | `5432` | Yes -`GITLAB_DATABASE_ENCODING` | `unicode` | No -`GITLAB_DATABASE_POOL` | `10` | No +-------- | ------------- | ----------------------------- +`GITLAB_DATABASE_ADAPTER` | `postgresql` (for MySQL use `mysql2`) | Yes +`GITLAB_DATABASE_DATABASE` | `gitlab_#{ENV['RAILS_ENV']` | Yes +`GITLAB_DATABASE_USERNAME` | `root` | Yes +`GITLAB_DATABASE_PASSWORD` | None | Yes +`GITLAB_DATABASE_HOST` | `localhost` | Yes +`GITLAB_DATABASE_PORT` | `5432` | Yes +`GITLAB_DATABASE_ENCODING` | `unicode` | No +`GITLAB_DATABASE_POOL` | `10` | No ## Adding more variables We welcome merge requests to make more settings configurable via variables. -Please make changes in the `config/initializers/1_settings.rb` file. -Please stick to the naming scheme `GITLAB_#{name in 1_settings.rb in upper case}`. +Please make changes in the `config/initializers/1_settings.rb` file and stick +to the naming scheme `GITLAB_#{name in 1_settings.rb in upper case}`. ## Omnibus configuration -It's possible to preconfigure the GitLab image by adding the environment variable: `GITLAB_OMNIBUS_CONFIG` to docker run command. +It's possible to preconfigure the GitLab docker image by adding the environment +variable `GITLAB_OMNIBUS_CONFIG` to the `docker run` command. For more information see the ['preconfigure-docker-container' section in the Omnibus documentation](http://doc.gitlab.com/omnibus/docker/#preconfigure-docker-container). From 9fbe9d97ed29288d065232687023edd74649d553 Mon Sep 17 00:00:00 2001 From: Achilleas Pipinellis Date: Wed, 3 Feb 2016 14:18:51 +0200 Subject: [PATCH 3/3] Unicorn worker killer is not Omnibus specific [ci skip] --- doc/administration/environment_variables.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/administration/environment_variables.md b/doc/administration/environment_variables.md index e49b3dc139b..43ab153d76d 100644 --- a/doc/administration/environment_variables.md +++ b/doc/administration/environment_variables.md @@ -20,8 +20,8 @@ Variable | Type | Description `GITLAB_EMAIL_FROM` | string | The e-mail address used in the "From" field in e-mails sent by GitLab `GITLAB_EMAIL_DISPLAY_NAME` | string | The name used in the "From" field in e-mails sent by GitLab `GITLAB_EMAIL_REPLY_TO` | string | The e-mail address used in the "Reply-To" field in e-mails sent by GitLab -`GITLAB_UNICORN_MEMORY_MIN` | integer | The minimum memory threshold (in bytes) for the Unicorn worker killer (supported only in Omnibus) -`GITLAB_UNICORN_MEMORY_MAX` | integer | The maximum memory threshold (in bytes) for the Unicorn worker killer (supported only in Omnibus) +`GITLAB_UNICORN_MEMORY_MIN` | integer | The minimum memory threshold (in bytes) for the Unicorn worker killer +`GITLAB_UNICORN_MEMORY_MAX` | integer | The maximum memory threshold (in bytes) for the Unicorn worker killer ## Complete database variables