summaryrefslogtreecommitdiff
path: root/app/services/releases
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2023-02-20 13:49:51 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2023-02-20 13:49:51 +0000
commit71786ddc8e28fbd3cb3fcc4b3ff15e5962a1c82e (patch)
tree6a2d93ef3fb2d353bb7739e4b57e6541f51cdd71 /app/services/releases
parenta7253423e3403b8c08f8a161e5937e1488f5f407 (diff)
downloadgitlab-ce-71786ddc8e28fbd3cb3fcc4b3ff15e5962a1c82e.tar.gz
Add latest changes from gitlab-org/gitlab@15-9-stable-eev15.9.0-rc42
Diffstat (limited to 'app/services/releases')
-rw-r--r--app/services/releases/base_service.rb28
-rw-r--r--app/services/releases/create_service.rb3
-rw-r--r--app/services/releases/update_service.rb11
3 files changed, 33 insertions, 9 deletions
diff --git a/app/services/releases/base_service.rb b/app/services/releases/base_service.rb
index 7fb59dad508..5d6cb372653 100644
--- a/app/services/releases/base_service.rb
+++ b/app/services/releases/base_service.rb
@@ -58,7 +58,7 @@ module Releases
end
def milestones
- return [] unless param_for_milestone_titles_provided?
+ return [] unless param_for_milestones_exists?
strong_memoize(:milestones) do
MilestonesFinder.new(
@@ -67,22 +67,44 @@ module Releases
project_ids: Array(project.id),
group_ids: Array(project_group_id),
state: 'all',
- title: params[:milestones]
+ title: params[:milestones],
+ ids: params[:milestone_ids]
).execute
end
end
- def inexistent_milestones
+ def inexistent_milestone_titles
return [] unless param_for_milestone_titles_provided?
existing_milestone_titles = milestones.map(&:title)
+
Array(params[:milestones]) - existing_milestone_titles
end
+ def inexistent_milestone_ids
+ return [] unless param_for_milestone_ids_provided?
+
+ existing_milestone_ids = milestones.map(&:id)
+
+ Array(params[:milestone_ids]) - existing_milestone_ids
+ end
+
def param_for_milestone_titles_provided?
!!params[:milestones]
end
+ def param_for_milestone_ids_provided?
+ !!params[:milestone_ids]
+ end
+
+ def param_for_milestones_provided?
+ param_for_milestone_titles_provided? || param_for_milestone_ids_provided?
+ end
+
+ def param_for_milestones_exists?
+ params[:milestones].present? || params[:milestone_ids].present?
+ end
+
def execute_hooks(release, action = 'create')
release.execute_hooks(action)
end
diff --git a/app/services/releases/create_service.rb b/app/services/releases/create_service.rb
index 01dd6323d94..a3289f9e552 100644
--- a/app/services/releases/create_service.rb
+++ b/app/services/releases/create_service.rb
@@ -6,7 +6,8 @@ module Releases
return error(_('Access Denied'), 403) unless allowed?
return error(_('You are not allowed to create this tag as it is protected.'), 403) unless can_create_tag?
return error(_('Release already exists'), 409) if release
- return error(format(_("Milestone(s) not found: %{milestones}"), milestones: inexistent_milestones.join(', ')), 400) if inexistent_milestones.any? # rubocop:disable Layout/LineLength
+ return error(format(_("Milestone(s) not found: %{milestones}"), milestones: inexistent_milestone_titles.join(', ')), 400) if inexistent_milestone_titles.any? # rubocop:disable Layout/LineLength
+ return error(format(_("Milestone id(s) not found: %{milestones}"), milestones: inexistent_milestone_ids.join(', ')), 400) if inexistent_milestone_ids.any? # rubocop:disable Layout/LineLength
# should be found before the creation of new tag
# because tag creation can spawn new pipeline
diff --git a/app/services/releases/update_service.rb b/app/services/releases/update_service.rb
index b9b2aba9805..c11d9468814 100644
--- a/app/services/releases/update_service.rb
+++ b/app/services/releases/update_service.rb
@@ -7,8 +7,8 @@ module Releases
return error
end
- if param_for_milestone_titles_provided?
- previous_milestones = release.milestones.map(&:title)
+ if param_for_milestones_provided?
+ previous_milestones = release.milestones.map(&:id)
params[:milestones] = milestones
end
@@ -35,7 +35,8 @@ module Releases
return error(_('Release does not exist'), 404) unless release
return error(_('Access Denied'), 403) unless allowed?
return error(_('params is empty'), 400) if empty_params?
- return error(format(_("Milestone(s) not found: %{milestones}"), milestones: inexistent_milestones.join(', ')), 400) if inexistent_milestones.any? # rubocop:disable Layout/LineLength
+ return error(format(_("Milestone(s) not found: %{milestones}"), milestones: inexistent_milestone_titles.join(', ')), 400) if inexistent_milestone_titles.any? # rubocop:disable Layout/LineLength
+ return error(format(_("Milestone id(s) not found: %{milestones}"), milestones: inexistent_milestone_ids.join(', ')), 400) if inexistent_milestone_ids.any? # rubocop:disable Layout/LineLength
end
def allowed?
@@ -47,9 +48,9 @@ module Releases
end
def milestones_updated?(previous_milestones)
- return false unless param_for_milestone_titles_provided?
+ return false unless param_for_milestones_provided?
- previous_milestones.to_set != release.milestones.map(&:title)
+ previous_milestones.to_set != release.milestones.map(&:id)
end
end
end