Module: Gitlab::SetupHelper::Gitaly
- Extended by:
- Gitlab::SetupHelper
- Defined in:
- lib/gitlab/setup_helper.rb
Class Method Summary collapse
-
.configuration_toml(gitaly_dir, storage_paths, options) ⇒ Object
We cannot create config.toml files for all possible Gitaly configuations.
Methods included from Gitlab::SetupHelper
create_configuration, generate_configuration
Class Method Details
.configuration_toml(gitaly_dir, storage_paths, options) ⇒ Object
We cannot create config.toml files for all possible Gitaly configuations. For instance, if Gitaly is running on another machine then it makes no sense to write a config.toml file on the current machine. This method will only generate a configuration for the most common and simplest case: when we have exactly one Gitaly process and we are sure it is running locally because it uses a Unix socket. For development and testing purposes, an extra storage is added to gitaly, which is not known to Rails, but must be explicitly stubbed.
83 84 85 86 87 88 89 90 91 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 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 |
# File 'lib/gitlab/setup_helper.rb', line 83 def configuration_toml(gitaly_dir, storage_paths, ) storages = [] address = nil Gitlab.config.repositories.storages.each do |key, val| if address if address != val['gitaly_address'] raise ArgumentError, "Your gitlab.yml contains more than one gitaly_address." end elsif URI(val['gitaly_address']).scheme != 'unix' raise ArgumentError, "Automatic config.toml generation only supports 'unix:' addresses." else address = val['gitaly_address'] end storages << { name: key, path: storage_paths[key] } end config = { socket_path: address.delete_prefix('unix:') } if Rails.env.test? socket_filename = [:gitaly_socket] || "gitaly.socket" prometheus_listen_addr = [:prometheus_listen_addr] config = { # Override the set gitaly_address since Praefect is in the loop socket_path: File.join(gitaly_dir, socket_filename), auth: { token: 'secret' }, # Compared to production, tests run in constrained environments. This # number is meant to grow with the number of concurrent rails requests / # sidekiq jobs, and concurrency will be low anyway in test. git: { catfile_cache_size: 5, use_bundled_binaries: true }, prometheus_listen_addr: prometheus_listen_addr }.compact storage_path = Rails.root.join('tmp', 'tests', 'second_storage').to_s storages << { name: 'test_second_storage', path: storage_path } end config[:storage] = storages runtime_dir = [:runtime_dir] || File.join(gitaly_dir, 'run') FileUtils.mkdir(runtime_dir) unless File.exist?(runtime_dir) config[:runtime_dir] = runtime_dir config[:'gitlab-shell'] = { dir: Gitlab.config.gitlab_shell.path } config[:bin_dir] = File.(File.join(gitaly_dir, '_build', 'bin')) # binaries by default are in `_build/bin` config[:gitlab] = { url: Gitlab.config.gitlab.url } config[:logging] = { dir: Rails.root.join('log').to_s } TomlRB.dump(config) end |