summaryrefslogtreecommitdiff
path: root/app/models
diff options
context:
space:
mode:
authorDouwe Maan <douwe@gitlab.com>2016-08-15 15:29:26 +0000
committerDouwe Maan <douwe@gitlab.com>2016-08-15 15:29:26 +0000
commit06e3bb9f232329674bdc162dc8f973a19b03f3c4 (patch)
tree171ca3475ea988547c9510b72646fe0edb351eb1 /app/models
parent9aa68b877fe2feda7110703f591dc60622422010 (diff)
parent07fc2f852a0b4136b6d97c1d9773819c47e7e8e7 (diff)
downloadgitlab-ce-06e3bb9f232329674bdc162dc8f973a19b03f3c4.tar.gz
Merge branch 'zj-deployment-status-on-mr' into 'master'
Show deployment status on a MR view ## What are the relevant issue numbers? Resolves #19571, one in the list of #19992 ## Screenshots (if relevant) external_url = nil ![Screen_Shot_2016-08-02_at_13.57.03](/uploads/20ea1587eea556c7a1acd0ff726a5bfb/Screen_Shot_2016-08-02_at_13.57.03.png) external_url != nil ![Screen_Shot_2016-08-02_at_13.59.59](/uploads/0094b9ddece3f4bf76c83988840c096d/Screen_Shot_2016-08-02_at_13.59.59.png) Note, the timings are weird between merging and deploying, that is because I did it in the wrong order. ## Does this MR meet the acceptance criteria? - [X] [CHANGELOG](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CHANGELOG) entry added - Tests - [x] Added for this feature/bug - [x] All builds are passing See merge request !5622
Diffstat (limited to 'app/models')
-rw-r--r--app/models/deployment.rb6
-rw-r--r--app/models/environment.rb6
-rw-r--r--app/models/merge_request.rb8
3 files changed, 20 insertions, 0 deletions
diff --git a/app/models/deployment.rb b/app/models/deployment.rb
index 1a7cd60817e..1e338889714 100644
--- a/app/models/deployment.rb
+++ b/app/models/deployment.rb
@@ -36,4 +36,10 @@ class Deployment < ActiveRecord::Base
def manual_actions
deployable.try(:other_actions)
end
+
+ def includes_commit?(commit)
+ return false unless commit
+
+ project.repository.is_ancestor?(commit.id, sha)
+ end
end
diff --git a/app/models/environment.rb b/app/models/environment.rb
index baed106e8c8..75e6f869786 100644
--- a/app/models/environment.rb
+++ b/app/models/environment.rb
@@ -25,4 +25,10 @@ class Environment < ActiveRecord::Base
def nullify_external_url
self.external_url = nil if self.external_url.blank?
end
+
+ def includes_commit?(commit)
+ return false unless last_deployment
+
+ last_deployment.includes_commit?(commit)
+ end
end
diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb
index f6d0d0c98f5..fe799382fd0 100644
--- a/app/models/merge_request.rb
+++ b/app/models/merge_request.rb
@@ -591,6 +591,14 @@ class MergeRequest < ActiveRecord::Base
!pipeline || pipeline.success?
end
+ def environments
+ return unless diff_head_commit
+
+ target_project.environments.select do |environment|
+ environment.includes_commit?(diff_head_commit)
+ end
+ end
+
def state_human_name
if merged?
"Merged"