diff options
author | Rémy Coutable <remy@rymai.me> | 2016-12-08 15:59:49 +0000 |
---|---|---|
committer | Rémy Coutable <remy@rymai.me> | 2016-12-08 15:59:49 +0000 |
commit | 10d4b20ad18b735e45da492a1af30b3650df705e (patch) | |
tree | b90d002a7aad8b0e1b49eb9c5b3f98d64236d984 /lib | |
parent | 30daf78daf838382fee3e31f9e10d008cda48ccd (diff) | |
parent | aba894b94fd0f602781d2438c5419cfa2aa0cfaa (diff) | |
download | gitlab-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.rb | 43 | ||||
-rw-r--r-- | lib/gitlab/ci/status/pipeline/factory.rb | 30 | ||||
-rw-r--r-- | lib/gitlab/ci/status/stage/common.rb | 24 | ||||
-rw-r--r-- | lib/gitlab/ci/status/stage/factory.rb | 15 | ||||
-rw-r--r-- | lib/gitlab/data_builder/pipeline.rb | 2 |
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 |