summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorRémy Coutable <remy@rymai.me>2016-12-08 15:59:49 +0000
committerRémy Coutable <remy@rymai.me>2016-12-08 15:59:49 +0000
commit10d4b20ad18b735e45da492a1af30b3650df705e (patch)
treeb90d002a7aad8b0e1b49eb9c5b3f98d64236d984 /lib
parent30daf78daf838382fee3e31f9e10d008cda48ccd (diff)
parentaba894b94fd0f602781d2438c5419cfa2aa0cfaa (diff)
downloadgitlab-ce-10d4b20ad18b735e45da492a1af30b3650df705e.tar.gz
Merge branch 'pipeline-stage' into 'master'
Refine pipeline stages ## What does this MR do? Introduces a concept of `Ci::Stage` to make it easier to have detailed statuses. ## Why was this MR needed? This is needed to simplify the handling of `Ci::Statuses` and make the `Stage` actual concept in code: https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/7889 See merge request !7927
Diffstat (limited to 'lib')
-rw-r--r--lib/gitlab/ci/status/factory.rb43
-rw-r--r--lib/gitlab/ci/status/pipeline/factory.rb30
-rw-r--r--lib/gitlab/ci/status/stage/common.rb24
-rw-r--r--lib/gitlab/ci/status/stage/factory.rb15
-rw-r--r--lib/gitlab/data_builder/pipeline.rb2
5 files changed, 88 insertions, 26 deletions
diff --git a/lib/gitlab/ci/status/factory.rb b/lib/gitlab/ci/status/factory.rb
new file mode 100644
index 00000000000..b2f896f2211
--- /dev/null
+++ b/lib/gitlab/ci/status/factory.rb
@@ -0,0 +1,43 @@
+module Gitlab
+ module Ci
+ module Status
+ class Factory
+ attr_reader :subject
+
+ def initialize(subject)
+ @subject = subject
+ end
+
+ def fabricate!
+ if extended_status
+ extended_status.new(core_status)
+ else
+ core_status
+ end
+ end
+
+ private
+
+ def subject_status
+ @subject_status ||= subject.status
+ end
+
+ def core_status
+ Gitlab::Ci::Status
+ .const_get(subject_status.capitalize)
+ .new(subject)
+ end
+
+ def extended_status
+ @extended ||= extended_statuses.find do |status|
+ status.matches?(subject)
+ end
+ end
+
+ def extended_statuses
+ []
+ end
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/ci/status/pipeline/factory.rb b/lib/gitlab/ci/status/pipeline/factory.rb
index 71d27bf7cf5..4ac4ec671d0 100644
--- a/lib/gitlab/ci/status/pipeline/factory.rb
+++ b/lib/gitlab/ci/status/pipeline/factory.rb
@@ -2,35 +2,15 @@ module Gitlab
module Ci
module Status
module Pipeline
- class Factory
- EXTENDED_STATUSES = [Pipeline::SuccessWithWarnings]
-
- def initialize(pipeline)
- @pipeline = pipeline
- @status = pipeline.status || :created
- end
-
- def fabricate!
- if extended_status
- extended_status.new(core_status)
- else
- core_status
- end
- end
-
+ class Factory < Status::Factory
private
- def core_status
- Gitlab::Ci::Status
- .const_get(@status.capitalize)
- .new(@pipeline)
- .extend(Status::Pipeline::Common)
+ def extended_statuses
+ [Pipeline::SuccessWithWarnings]
end
- def extended_status
- @extended ||= EXTENDED_STATUSES.find do |status|
- status.matches?(@pipeline)
- end
+ def core_status
+ super.extend(Status::Pipeline::Common)
end
end
end
diff --git a/lib/gitlab/ci/status/stage/common.rb b/lib/gitlab/ci/status/stage/common.rb
new file mode 100644
index 00000000000..14c437d2b98
--- /dev/null
+++ b/lib/gitlab/ci/status/stage/common.rb
@@ -0,0 +1,24 @@
+module Gitlab
+ module Ci
+ module Status
+ module Stage
+ module Common
+ def has_details?
+ true
+ end
+
+ def details_path
+ namespace_project_pipeline_path(@subject.project.namespace,
+ @subject.project,
+ @subject.pipeline,
+ anchor: @subject.name)
+ end
+
+ def has_action?
+ false
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/ci/status/stage/factory.rb b/lib/gitlab/ci/status/stage/factory.rb
new file mode 100644
index 00000000000..c6522d5ada1
--- /dev/null
+++ b/lib/gitlab/ci/status/stage/factory.rb
@@ -0,0 +1,15 @@
+module Gitlab
+ module Ci
+ module Status
+ module Stage
+ class Factory < Status::Factory
+ private
+
+ def core_status
+ super.extend(Status::Stage::Common)
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/data_builder/pipeline.rb b/lib/gitlab/data_builder/pipeline.rb
index 06a783ebc1c..e50e54b6e99 100644
--- a/lib/gitlab/data_builder/pipeline.rb
+++ b/lib/gitlab/data_builder/pipeline.rb
@@ -22,7 +22,7 @@ module Gitlab
sha: pipeline.sha,
before_sha: pipeline.before_sha,
status: pipeline.status,
- stages: pipeline.stages,
+ stages: pipeline.stages_name,
created_at: pipeline.created_at,
finished_at: pipeline.finished_at,
duration: pipeline.duration