gitlab.yml.in 17.7 KB
Newer Older
1 2 3 4
{{ autogenerated }}
# see:
# https://gitlab.com/gitlab-org/gitlab-ce/blob/master/config/gitlab.yml.example
# https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/files/gitlab-cookbooks/gitlab/templates/default/gitlab.yml.erb
5
# (last updated for omnibus-gitlab 8.6.5+ce.0-0-g342f8be)
6

7
{% from 'macrolib.cfg.in' import cfg, cfg_https, external_url  with context %}
8

9 10 11 12 13 14 15 16
production: &base
  #
  # 1. GitLab app settings
  # ==========================

  ## GitLab settings
  gitlab:
    ## Web server settings (note: host is the FQDN, do not include http://)
17 18 19 20
    {% set default_port = {'http': 80, 'https': 443} %}
    host: {{ external_url.hostname }}
    port: {{ external_url.port or default_port[external_url.scheme] }}
    https: {{ cfg_https }}
21

22
    {# ssh is disabled completely in slapos version
23 24 25 26
    # Uncommment this line below if your ssh host is different from HTTP/HTTPS one
    # (you'd obviously need to replace ssh.host_example.com with your own host).
    # Otherwise, ssh host will be set to the `host:` value above
    ssh_host: <%= @gitlab_ssh_host %>
27
    #}
28 29 30

    # WARNING: See config/application.rb under "Relative url support" for the list of
    # other files that need to be changed for relative url support
31
    {# we do not support relative URL
32
    relative_url_root: <%= @gitlab_relative_url %>
33
    #}
34 35

    # Uncomment and customize if you can't use the default user to run GitLab (default: 'git')
36
    user: {{ backend_info.user }}
37 38

    ## Date & Time settings
39
    time_zone: '{{ cfg("time_zone") }}'
40 41 42

    ## Email settings
    # Uncomment and set to false if you need to disable email sending from GitLab (default: true)
43
    email_enabled:      {{ cfg('email_enabled') }}
44
    # Email address used in the "From" field in mails sent by GitLab
45 46 47
    email_from:         {{ cfg('email_from') }}
    email_display_name: {{ cfg('email_display_name') }}
    email_reply_to:     {{ cfg('email_reply_to') }}
48 49 50 51

    # Email server smtp settings are in [a separate file](initializers/smtp_settings.rb.sample).

    ## User settings
52 53
    default_can_create_group: {{ cfg('default_can_create_group') }}  # default: true
    username_changing_enabled: {{ cfg('username_changing_enabled') }} # default: true - User can change her username/namespace
54
    ## Default theme
55 56 57 58 59 60
    ##   1 - Graphite
    ##   2 - Charcoal
    ##   3 - Green
    ##   4 - Gray
    ##   5 - Violet
    ##   6 - Blue
61
    default_theme: {{ cfg('default_theme') }} # default: 2
62

63
    {# for now we are ok with default issue-closing pattern
64 65 66 67 68 69
    ## Automatic issue closing
    # If a commit message matches this regular expression, all issues referenced from the matched text will be closed.
    # This happens when the commit is pushed or merged into the default branch of a project.
    # When not specified the default issue_closing_pattern as specified below will be used.
    # Tip: you can test your closing pattern at http://rubular.com
    issue_closing_pattern: <%= single_quote(@gitlab_issue_closing_pattern) %>
70
    #}
71 72 73

    ## Default project features settings
    default_projects_features:
74 75 76 77 78
      issues:           {{ cfg('default_projects_features.issues') }}
      merge_requests:   {{ cfg('default_projects_features.merge_requests') }}
      wiki:             {{ cfg('default_projects_features.wiki') }}
      snippets:         {{ cfg('default_projects_features.snippets') }}
      builds: false {# builds not supported yet <%= @gitlab_default_projects_features_builds %> #}
79 80 81

    ## Webhook settings
    # Number of seconds to wait for HTTP response after sending webhook HTTP POST request (default: 10)
82
    webhook_timeout: {{ cfg('webhook_timeout') }}
83

84
    {# default is just ok
85 86 87 88
    ## Repository downloads directory
    # When a user clicks e.g. 'Download zip' on a project, a temporary zip file is created in the following directory.
    # The default is 'tmp/repositories' relative to the root of the Rails app.
    repository_downloads_path: <%= @gitlab_repository_downloads_path %>
89
    #}
90

91
  {# we do not support reply by email
92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119
  ## Reply by email
  # Allow users to comment on issues and merge requests by replying to notification emails.
  # For documentation on how to set this up, see http://doc.gitlab.com/ce/incoming_email/README.html
  incoming_email:
    enabled: <%= @incoming_email_enabled %>

    # The email address including the `%{key}` placeholder that will be replaced to reference the item being replied to.
    # The `%{key}` placeholder is added after the user part, after a `+` character, before the `@`.
    address: <%= single_quote(@incoming_email_address) %>

    # Email account username
    # With third party providers, this is usually the full email address.
    # With self-hosted email servers, this is usually the user part of the email address.
    user: <%= single_quote(@incoming_email_email) %>
    # Email account password
    password: <%= single_quote(@incoming_email_password) %>

    # IMAP server host
    host: <%= single_quote(@incoming_email_host) %>
    # IMAP server port
    port: <%= @incoming_email_port %>
    # Whether the IMAP server uses SSL
    ssl: <%= @incoming_email_ssl %>
    # Whether the IMAP server uses StartTLS
    start_tls: <%= @incoming_email_start_tls %>

    # The mailbox where incoming mail will end up. Usually "inbox".
    mailbox: <%= single_quote(@incoming_email_mailbox_name) %>
120
  #}
121

122
  {# we do not support build artifacts
123 124 125 126
  ## Build Artifacts
  artifacts:
    enabled: <%= @artifacts_enabled %>
    # The location where Build Artifacts are stored (default: shared/artifacts).
127
    path: <%= @artifacts_path %>
128
  #}
129

130
  {# we do not support LFS
131 132 133 134 135
  ## Git LFS
  lfs:
    enabled: <%= @lfs_enabled %>
    # The location where LFS objects are stored (default: shared/lfs-objects).
    storage_path: <%= @lfs_storage_path %>
136
  #}
137

138
  {# we do not support Pages
139 140 141 142 143 144 145
  ## GitLab Pages (EE only)
  pages:
    enabled: <%= @pages_enabled %>
    path: <%= @pages_path %>
    host: <%= @pages_host %>
    port: <%= @pages_port %>
    https: <%= @pages_https %>
146 147
    external_http: <%= @pages_external_http %>
    external_https: <%= @pages_external_https %>
148
  #}
149

150
  {# we do not support Elasticsearch
151 152 153 154 155 156 157
  ## Elasticsearch (EE only)
  # Enable it if you are going to use elasticsearch instead of
  # regular database search
  elasticsearch:
    enabled: <%= @elasticsearch_enabled %>
    host: <%= @elasticsearch_host %>
    port: <%= @elasticsearch_port %>
158
  #}
159

160 161 162
  ## Gravatar
  ## For Libravatar see: http://doc.gitlab.com/ce/customization/libravatar.html
  gravatar:
163
    {# default is just ok
164 165 166
    # gravatar urls: possible placeholders: %{hash} %{size} %{email}
    plain_url: <%= single_quote(@gravatar_plain_url) %>     # default: http://www.gravatar.com/avatar/%{hash}?s=%{size}&d=identicon
    ssl_url:   <%= single_quote(@gravatar_ssl_url) %>    # default: https://secure.gravatar.com/avatar/%{hash}?s=%{size}&d=identicon
167 168
    #}

169

170
  {# XXX cron jobs are disabled for now - we do not support CI and EE features
171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194
  ## Auxiliary jobs
  # Periodically executed jobs, to self-heal GitLab, do external synchronizations, etc.
  # Please read here for more information: https://github.com/ondrejbartas/sidekiq-cron#adding-cron-job
  cron_jobs:
    # Flag stuck CI builds as failed
    stuck_ci_builds_worker:
      cron: <%= @stuck_ci_builds_worker_cron %>

    ##
    # GitLab EE only jobs:

    # Snapshot active users statistics
    historical_data_worker:
      cron: <%= @historical_data_worker_cron %>

    # Update mirrored repositories
    update_all_mirrors_worker:
      cron: <%= @update_all_mirrors_worker_cron %>

    # In addition to refreshing users when they log in,
    # periodically refresh LDAP users membership.
    # NOTE: This will only take effect if LDAP is enabled
    ldap_sync_worker:
      cron: <%= @ldap_sync_worker_cron %>
195
  #}
196

197 198 199 200
  #
  # 2. GitLab CI settings
  # ==========================

201
  {# we do not support CI
202 203 204 205 206 207 208 209 210 211 212
  gitlab_ci:
    # Default project notifications settings:
    #
    # Send emails only on broken builds (default: true)
    all_broken_builds: <%= @gitlab_ci_all_broken_builds %>
    #
    # Add pusher to recipients list (default: false)
    add_pusher: <%= @gitlab_ci_add_pusher || @gitlab_ci_add_committer %>

    # The location where build traces are stored (default: builds/). Relative paths are relative to Rails.root
    builds_path: <%= @builds_directory %>
213
  #}
214 215 216 217 218 219 220 221 222

  #
  # 3. Auth settings
  # ==========================

  ## LDAP settings
  # You can inspect a sample of the LDAP users with login access by running:
  #   bundle exec rake gitlab:ldap:check RAILS_ENV=production
  ldap:
223 224
    enabled: false
    {# just disabled
225
    enabled: <%= @ldap_enabled %>
226
    sync_time: <%= @ldap_sync_time %>
227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249
  <% if @ldap_servers.any? %>
    servers:
    <% @ldap_servers.each do |provider_id, settings| %>
      <%= provider_id %>: <%= settings.to_json %>
    <% end %>
  <% else %>
    host: <%= single_quote(@ldap_host) %>
    port: <%= @ldap_port %>
    uid: <%= single_quote(@ldap_uid) %>
    method: <%= single_quote(@ldap_method) %> # "tls" or "ssl" or "plain"
    bind_dn: <%= single_quote(@ldap_bind_dn) %>
    password: <%= single_quote(@ldap_password) %>
    active_directory: <%= @ldap_active_directory %>
    allow_username_or_email_login: <%= @ldap_allow_username_or_email_login %>
    base: <%= single_quote(@ldap_base) %>
    user_filter: <%= single_quote(@ldap_user_filter) %>

    ## EE only
    group_base: <%= single_quote(@ldap_group_base) %>
    admin_group: <%= single_quote(@ldap_admin_group) %>
    sync_ssh_keys: <%= single_quote(@ldap_sync_ssh_keys) %>
    sync_time: <%= @ldap_sync_time %>
  <% end %>
250
  #}
251 252 253

  ## Kerberos settings
  kerberos:
254 255
    enabled: false
    {# just disabled
256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274
    # Allow the HTTP Negotiate authentication method for Git clients
    enabled: <%= @kerberos_enabled %>

    # Kerberos 5 keytab file. The keytab file must be readable by the GitLab user,
    # and should be different from other keytabs in the system.
    # (default: use default keytab from Krb5 config)
    keytab: <%= @kerberos_keytab %>

    # The Kerberos service name to be used by GitLab.
    # (default: accept any service name in keytab file)
    service_principal_name: <%= @kerberos_service_principal_name %>

    # Dedicated port: Git before 2.4 does not fall back to Basic authentication if Negotiate fails.
    # To support both Basic and Negotiate methods with older versions of Git, configure
    # nginx to proxy GitLab on an extra port (e.g. 8443) and uncomment the following lines
    # to dedicate this port to Kerberos authentication. (default: false)
    use_dedicated_port: <%= @kerberos_use_dedicated_port %>
    port: <%= @kerberos_port %>
    https: <%= @kerberos_https %>
275
    #}
276 277 278 279


  ## OmniAuth settings
  omniauth:
280 281
    enabled: false
    {# just disabled
282 283 284 285 286 287 288 289
    # Allow login via Twitter, Google, etc. using OmniAuth providers
    enabled: <%= @omniauth_enabled %>

    # Uncomment this to automatically sign in with a specific omniauth provider's without
    # showing GitLab's sign-in page (default: show the GitLab sign-in page)
    auto_sign_in_with_provider: <%= @omniauth_auto_sign_in_with_provider %>

    # CAUTION!
290 291
    # This allows users to login without having a user account first. Define the allowed
    # providers using an array, e.g. ["saml", "twitter"]
292
    # User accounts will be created automatically when authentication was successful.
293 294
    allow_single_sign_on: <%= @omniauth_allow_single_sign_on.to_json %>

295 296 297 298 299 300
    # Locks down those users until they have been cleared by the admin (default: true).
    block_auto_created_users: <%= @omniauth_block_auto_created_users %>
    # Look up new users in LDAP servers. If a match is found (same uid), automatically
    # link the omniauth identity with the LDAP account. (default: false)
    auto_link_ldap_user: <%= @omniauth_auto_link_ldap_user %>

301 302 303 304 305
    # Allow users with existing accounts to login and auto link their account via SAML
    # login, without having to do a manual login first and manually add SAML
    # (default: false)
    auto_link_saml_user: <%= @omniauth_auto_link_saml_user.to_json %>

306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325

    ## Auth providers
    # Uncomment the following lines and fill in the data of the auth provider you want to use
    # If your favorite auth provider is not listed you can use others:
    # see https://github.com/gitlabhq/gitlab-public-wiki/wiki/Custom-omniauth-provider-configurations
    # The 'app_id' and 'app_secret' parameters are always passed as the first two
    # arguments, followed by optional 'args' which can be either a hash or an array.
    # Documentation for this is available at http://doc.gitlab.com/ce/integration/omniauth.html
    providers:
      # - { name: 'google_oauth2', app_id: 'YOUR APP ID',
      #     app_secret: 'YOUR APP SECRET',
      #     args: { access_type: 'offline', approval_prompt: '' } }
      # - { name: 'twitter', app_id: 'YOUR APP ID',
      #     app_secret: 'YOUR APP SECRET'}
      # - { name: 'github', app_id: 'YOUR APP ID',
      #     app_secret: 'YOUR APP SECRET',
      #     args: { scope: 'user:email' } }
<% @omniauth_providers.each do |provider| %>
      - <%= provider.to_json %>
<% end %>
326
    #}
327

328
  {# default ($RAILS_ROOT/shared/) is ok - we symlinked it to proper place
329 330 331
  # Shared file storage settings
  shared:
    path: <%= @shared_path %>
332
  #}
333 334 335 336 337 338 339 340 341 342 343

  #
  # 4. Advanced settings
  # ==========================

  # GitLab Satellites
  # Important: keep the satellites.path setting until GitLab 9.0 at
  # least. This setting is fed to 'rm -rf' in
  # db/migrate/20151023144219_remove_satellites.rb
  satellites:
    # Relative paths are relative to Rails.root (default: tmp/repo_satellites/)
344 345
    path: /dev/null
    timeout: 0
346 347 348

  ## Backup settings
  backup:
349 350
    path: "{{ gitlab.backup }}"   # Relative paths are relative to Rails.root (default: tmp/backups/)
    {# default permission is ok
351
    archive_permissions: <%= @backup_archive_permissions %> # Permissions for the resulting backup.tar file (default: 0600)
352 353 354
    #}
    keep_time: {{ cfg('backup_keep_time') }}   # default: 0 (forever) (in seconds)
    {# default to backup all schemas is just ok
355
    pg_schema: <%= @backup_pg_schema %>   # default: nil, it means that all schemas will be backed up
356
    #}
357
    upload:
358
      {# we don't want to upload backup anywhere by gitlab builtin mechanisms
359 360 361 362 363 364
      # Fog storage connection settings, see http://fog.io/storage/ .
      connection: <%= @backup_upload_connection.to_json if @backup_upload_connection %>
      # The remote 'directory' to store your backups. For S3, this would be the bucket name.
      remote_directory: <%= single_quote(@backup_upload_remote_directory) %>
      multipart_chunk_size: <%= @backup_multipart_chunk_size %>
      encryption: <%= @backup_encryption %>
365 366
      #}

367 368 369

  ## GitLab Shell settings
  gitlab_shell:
370
    path: {{ gitlab_shell_work.location }}
371 372

    # REPOS_PATH MUST NOT BE A SYMLINK!!!
373 374 375
    repos_path: {{ gitlab.repositories }}
    hooks_path: {{ gitlab_shell_work.location }}/hooks/
    secret_file: {{ gitlab_shell.secret }}
376 377

    # Git over HTTP
378 379
    upload_pack: true
    receive_pack: true
380

381
    {# Git over SSH is disabled elsewhere (so we don't care about ssh_port)
382 383
    # If you use non-standard ssh port you need to specify it
    ssh_port: <%= @gitlab_shell_ssh_port %>
384 385
    #}

386 387 388 389
    # git-annex support (EE only)
    # If this setting is set to true, the same setting in config.yml of
    # gitlab-shell needs to be set to true
    git_annex_enabled: <%= @git_annex_enabled %>
390 391 392 393 394

  ## Git settings
  # CAUTION!
  # Use the default values unless you really know what you are doing
  git:
395
    bin_path: {{ git }}
396 397 398
    # The next value is the maximum memory size grit can use
    # Given in number of bytes per git object (e.g. a commit)
    # This value can be increased if you have very large commits
399
    max_size: {{ cfg('git_max_size') }}
400
    # Git timeout to read a commit, in seconds
401 402
    timeout: {{ cfg('git_timeout') }}

403 404 405 406 407 408

  #
  # 5. Extra customization
  # ==========================

  extra:
409
    {# we do not use google analytics
410 411 412 413
    <% if @extra_google_analytics_id %>
    ## Google analytics. Uncomment if you want it
    google_analytics_id: <%= single_quote(@extra_google_analytics_id) %>
    <% end %>
414
    #}
415

416
    {# we do not use piwik
417 418 419 420 421
    <% if @extra_piwik_url %>
    ## Piwik analytics.
    piwik_url: <%= single_quote(@extra_piwik_url) %>
    piwik_site_id: <%= single_quote(@extra_piwik_site_id) %>
    <% end %>
422
    #}
423

424
    {# we are ok (for now) with default rack-attack git settings
425 426
    rack_attack:
      git_basic_auth: <%= @rack_attack_git_basic_auth.to_json if @rack_attack_git_basic_auth %>
427
    #}
428 429


430 431 432 433 434 435 436 437 438 439
    ## Site ICP License
    # XXX unquote needed only for slapos.core earlier than
    #   https://lab.nexedi.com/nexedi/slapos.core/commit/347d33d6
    # for now we have a lot of old slapos.core deployed...
    {% if cfg('icp_license') != '' -%}
    ICP: {{ urllib.unquote_plus( str(cfg('icp_license')) ).decode('utf-8') }}
    {# ICP: '{{ cfg("icp_license") }}' #}
    {% endif %}


440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483
development:
  <<: *base

test:
  <<: *base
  gravatar:
    enabled: true
  gitlab:
    host: localhost
    port: 80

    # When you run tests we clone and setup gitlab-shell
    # In order to setup it correctly you need to specify
    # your system username you use to run GitLab
    # user: YOUR_USERNAME
  satellites:
    path: tmp/tests/gitlab-satellites/
  gitlab_shell:
    path: tmp/tests/gitlab-shell/
    repos_path: tmp/tests/repositories/
    hooks_path: tmp/tests/gitlab-shell/hooks/
  issues_tracker:
    redmine:
      title: "Redmine"
      project_url: "http://redmine/projects/:issues_tracker_id"
      issues_url: "http://redmine/:project_id/:issues_tracker_id/:id"
      new_issue_url: "http://redmine/projects/:issues_tracker_id/issues/new"
  ldap:
    enabled: false
    servers:
      main:
        label: ldap
        host: 127.0.0.1
        port: 3890
        uid: 'uid'
        method: 'plain' # "tls" or "ssl" or "plain"
        base: 'dc=example,dc=com'
        user_filter: ''
        group_base: 'ou=groups,dc=example,dc=com'
        admin_group: ''
        sync_ssh_keys: false

staging:
  <<: *base