summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Fargher <proglottis@gmail.com>2019-07-18 14:50:00 +1200
committerJames Fargher <proglottis@gmail.com>2019-07-18 15:41:19 +1200
commit2a4645525ef8eab45053b6e32761c5071c450e56 (patch)
tree0acb6f0f5127c35ddfe6c4ba9d209ddcc41ac969
parent34f5eb1b93b5c1e7d8ed8d578d8b94cd33d2dca3 (diff)
downloadgitlab-ce-refactor_auto_devops_enabled.tar.gz
Extract auto-devops configuration calculationsrefactor_auto_devops_enabled
-rw-r--r--app/models/project.rb24
-rw-r--r--app/services/projects/auto_devops/config_service.rb39
2 files changed, 44 insertions, 19 deletions
diff --git a/app/models/project.rb b/app/models/project.rb
index 2906aca75fc..68b2d5cfbf2 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -662,29 +662,15 @@ class Project < ApplicationRecord
alias_method :lfs_enabled, :lfs_enabled?
def auto_devops_enabled?
- if auto_devops&.enabled.nil?
- has_auto_devops_implicitly_enabled?
- else
- auto_devops.enabled?
- end
+ Projects::AutoDevops::ConfigService.new(self).auto_devops_enabled?
end
def has_auto_devops_implicitly_enabled?
- auto_devops_config = first_auto_devops_config
-
- auto_devops_config[:scope] != :project && auto_devops_config[:status]
+ Projects::AutoDevops::ConfigService.new(self).has_auto_devops_implicitly_enabled?
end
def has_auto_devops_implicitly_disabled?
- auto_devops_config = first_auto_devops_config
-
- auto_devops_config[:scope] != :project && !auto_devops_config[:status]
- end
-
- def first_auto_devops_config
- return namespace.first_auto_devops_config if auto_devops&.enabled.nil?
-
- { scope: :project, status: auto_devops&.enabled || Feature.enabled?(:force_autodevops_on_by_default, self) }
+ Projects::AutoDevops::ConfigService.new(self).has_auto_devops_implicitly_disabled?
end
def daily_statistics_enabled?
@@ -1776,7 +1762,7 @@ class Project < ApplicationRecord
end
def has_ci?
- repository.gitlab_ci_yml || auto_devops_enabled?
+ repository.gitlab_ci_yml || Projects::AutoDevops::ConfigService.new(self).auto_devops_enabled? # TODO
end
def predefined_variables
@@ -1863,7 +1849,7 @@ class Project < ApplicationRecord
end
def auto_devops_variables
- return [] unless auto_devops_enabled?
+ return [] unless Projects::AutoDevops::ConfigService.new(self).auto_devops_enabled? # TODO
(auto_devops || build_auto_devops)&.predefined_variables
end
diff --git a/app/services/projects/auto_devops/config_service.rb b/app/services/projects/auto_devops/config_service.rb
new file mode 100644
index 00000000000..638038d908e
--- /dev/null
+++ b/app/services/projects/auto_devops/config_service.rb
@@ -0,0 +1,39 @@
+# frozen_string_literal: true
+
+module Projects
+ module AutoDevops
+ class ConfigService < BaseService
+ def auto_devops_enabled?
+ if project.auto_devops&.enabled.nil?
+ project.has_auto_devops_implicitly_enabled?
+ else
+ project.auto_devops.enabled?
+ end
+ end
+
+ def has_auto_devops_implicitly_enabled?
+ auto_devops_config = first_auto_devops_config
+
+ auto_devops_config[:scope] != :project && auto_devops_config[:status]
+ end
+
+ def has_auto_devops_implicitly_disabled?
+ auto_devops_config = first_auto_devops_config
+
+ auto_devops_config[:scope] != :project && !auto_devops_config[:status]
+ end
+
+ private
+
+ def first_auto_devops_config
+ return project.namespace.first_auto_devops_config if project.auto_devops&.enabled.nil?
+
+ { scope: :project, status: project.auto_devops&.enabled || force_autodevops_on_by_default? }
+ end
+
+ def force_autodevops_on_by_default?
+ Feature.enabled?(:force_autodevops_on_by_default, project)
+ end
+ end
+ end
+end