blob: b98a02075670c10242a5123138ad183d00b3a80f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
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
|
# frozen_string_literal: true
require 'pathname'
require 'forwardable'
require_relative 'gitlab_edition'
module Gitlab
class << self
extend Forwardable
def_delegators :GitlabEdition, :root, :extensions, :ee?, :ee, :jh?, :jh
end
def self.version_info
Gitlab::VersionInfo.parse(Gitlab::VERSION)
end
def self.current_milestone
v = version_info
"#{v.major}.#{v.minor}"
end
def self.pre_release?
VERSION.include?('pre')
end
def self.config
Settings
end
def self.host_with_port
"#{self.config.gitlab.host}:#{self.config.gitlab.port}"
end
def self.revision
@_revision ||= if File.exist?(root.join("REVISION"))
File.read(root.join("REVISION")).strip.freeze
else
result = Gitlab::Popen.popen_with_detail(
%W[#{config.git.bin_path} log --pretty=format:%h --abbrev=11 -n 1]
)
if result.status.success?
result.stdout.chomp.freeze
else
"Unknown"
end
end
end
APP_DIRS_PATTERN = %r{^/?(app|config|ee|lib|spec|\(\w*\))}
VERSION = File.read(root.join("VERSION")).strip.freeze
INSTALLATION_TYPE = File.read(root.join("INSTALLATION_TYPE")).strip.freeze
HTTP_PROXY_ENV_VARS = %w[http_proxy https_proxy HTTP_PROXY HTTPS_PROXY].freeze
def self.simulate_com?
return false unless Rails.env.development?
Gitlab::Utils.to_boolean(ENV['GITLAB_SIMULATE_SAAS'])
end
def self.com?
# Check `gl_subdomain?` as well to keep parity with gitlab.com
simulate_com? || Gitlab.config.gitlab.url == Gitlab::Saas.com_url || gl_subdomain?
end
def self.com_except_jh?
com? && !jh?
end
def self.com
yield if com?
end
def self.staging?
Gitlab.config.gitlab.url == Gitlab::Saas.staging_com_url
end
def self.canary?
Gitlab::Utils.to_boolean(ENV['CANARY'])
end
def self.com_and_canary?
com? && canary?
end
def self.com_but_not_canary?
com? && !canary?
end
def self.org?
Gitlab.config.gitlab.url == Gitlab::Saas.dev_url
end
def self.gl_subdomain?
Gitlab::Saas.subdomain_regex === Gitlab.config.gitlab.url
end
def self.org_or_com?
org? || com?
end
def self.dev_or_test_env?
Rails.env.development? || Rails.env.test?
end
def self.http_proxy_env?
HTTP_PROXY_ENV_VARS.any? { |name| ENV[name] }
end
def self.process_name
return 'sidekiq' if Gitlab::Runtime.sidekiq?
return 'console' if Gitlab::Runtime.console?
return 'test' if Rails.env.test?
'web'
end
def self.maintenance_mode?
return false unless ::Gitlab::CurrentSettings.current_application_settings?
# `maintenance_mode` column was added to the `current_settings` table in 13.2
# When upgrading from < 13.2 to >=13.8 `maintenance_mode` will not be
# found in settings.
# `Gitlab::CurrentSettings#uncached_application_settings` in
# lib/gitlab/current_settings.rb is expected to handle such cases, and use
# the default value for the setting instead, but in this case, it doesn't,
# see https://gitlab.com/gitlab-org/gitlab/-/issues/321836
# As a work around, we check if the setting method is available
return false unless ::Gitlab::CurrentSettings.respond_to?(:maintenance_mode)
::Gitlab::CurrentSettings.maintenance_mode
end
end
|