summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorKamil Trzcinski <ayufan@ayufan.eu>2017-02-15 17:23:39 +0100
committerKamil Trzcinski <ayufan@ayufan.eu>2017-02-15 17:39:35 +0100
commit03345b3613d7667bd0ef05ec2258049e58d355ec (patch)
tree44288c6cdb9ab47bc5f2e40d4640a05874c6c8b0 /app
parente7f99753dae4de7422836ebf5f72e0dba3a867bb (diff)
downloadgitlab-ce-remove-trigger-requests.tar.gz
Remove trigger request and migrate all data to pipeline, by adding trigger_id and trigger_variables.remove-trigger-requests
Diffstat (limited to 'app')
-rw-r--r--app/models/ci/build.rb7
-rw-r--r--app/models/ci/pipeline.rb16
-rw-r--r--app/models/ci/trigger.rb8
-rw-r--r--app/models/ci/trigger_request.rb19
-rw-r--r--app/services/ci/create_pipeline_builds_service.rb9
-rw-r--r--app/services/ci/create_pipeline_service.rb7
-rw-r--r--app/services/ci/create_trigger_request_service.rb13
-rw-r--r--app/views/projects/ci/builds/_build.html.haml2
8 files changed, 25 insertions, 56 deletions
diff --git a/app/models/ci/build.rb b/app/models/ci/build.rb
index 8c1b076c2d7..3df867b05e9 100644
--- a/app/models/ci/build.rb
+++ b/app/models/ci/build.rb
@@ -5,7 +5,6 @@ module Ci
include Presentable
belongs_to :runner
- belongs_to :trigger_request
belongs_to :erased_by, class_name: 'User'
has_many :deployments, as: :deployable
@@ -57,7 +56,6 @@ module Ci
new_build = build.dup
new_build.status = 'pending'
new_build.runner_id = nil
- new_build.trigger_request_id = nil
new_build.token = nil
new_build.save
end
@@ -75,7 +73,6 @@ module Ci
allow_failure: build.allow_failure,
stage: build.stage,
stage_idx: build.stage_idx,
- trigger_request: build.trigger_request,
yaml_variables: build.yaml_variables,
when: build.when,
user: user,
@@ -231,7 +228,7 @@ module Ci
variables += yaml_variables
variables += user_variables
variables += project.secret_variables
- variables += trigger_request.user_variables if trigger_request
+ variables += pipeline.trigger_variables
variables
end
@@ -585,7 +582,7 @@ module Ci
{ key: 'CI_SERVER_REVISION', value: Gitlab::REVISION, public: true }
]
variables << { key: 'CI_BUILD_TAG', value: ref, public: true } if tag?
- variables << { key: 'CI_BUILD_TRIGGERED', value: 'true', public: true } if trigger_request
+ variables << { key: 'CI_BUILD_TRIGGERED', value: 'true', public: true } if pipeline.trigger
variables << { key: 'CI_BUILD_MANUAL', value: 'true', public: true } if manual?
variables
end
diff --git a/app/models/ci/pipeline.rb b/app/models/ci/pipeline.rb
index bbc358adb83..7ee6987e0e2 100644
--- a/app/models/ci/pipeline.rb
+++ b/app/models/ci/pipeline.rb
@@ -9,10 +9,10 @@ module Ci
belongs_to :project, foreign_key: :gl_project_id
belongs_to :user
+ belongs_to :trigger, foreign_key: :trigger_id
has_many :statuses, class_name: 'CommitStatus', foreign_key: :commit_id
has_many :builds, foreign_key: :commit_id
- has_many :trigger_requests, dependent: :destroy, foreign_key: :commit_id
validates_presence_of :sha, unless: :importing?
validates_presence_of :ref, unless: :importing?
@@ -21,6 +21,8 @@ module Ci
after_create :keep_around_commits, unless: :importing?
+ serialize :trigger_variables
+
state_machine :status, initial: :created do
event :enqueue do
transition created: :pending
@@ -239,7 +241,7 @@ module Ci
end
def triggered?
- trigger_requests.any?
+ trigger.any?
end
def retried
@@ -257,7 +259,7 @@ module Ci
return [] unless config_processor
config_processor.
- builds_for_ref(ref, tag?, trigger_requests.first).
+ builds_for_ref(ref, tag?, trigger).
sort_by { |build| build[:stage_idx] }
end
@@ -367,6 +369,14 @@ module Ci
.fabricate!
end
+ def trigger_variables
+ return [] unless super
+
+ super.map do |key, value|
+ { key: key, value: value, public: false }
+ end
+ end
+
private
def pipeline_data
diff --git a/app/models/ci/trigger.rb b/app/models/ci/trigger.rb
index 62889fe80d8..d6dba3ef7c8 100644
--- a/app/models/ci/trigger.rb
+++ b/app/models/ci/trigger.rb
@@ -5,7 +5,7 @@ module Ci
acts_as_paranoid
belongs_to :project, foreign_key: :gl_project_id
- has_many :trigger_requests, dependent: :destroy
+ has_many :pipelines, dependent: :destroy
validates_presence_of :token
validates_uniqueness_of :token
@@ -16,12 +16,12 @@ module Ci
self.token = SecureRandom.hex(15) if self.token.blank?
end
- def last_trigger_request
- trigger_requests.last
+ def last_pipeline
+ pipelines.last
end
def last_used
- last_trigger_request.try(:created_at)
+ pipelines.try(:created_at)
end
def short_token
diff --git a/app/models/ci/trigger_request.rb b/app/models/ci/trigger_request.rb
deleted file mode 100644
index 2b807731d0d..00000000000
--- a/app/models/ci/trigger_request.rb
+++ /dev/null
@@ -1,19 +0,0 @@
-module Ci
- class TriggerRequest < ActiveRecord::Base
- extend Ci::Model
-
- belongs_to :trigger
- belongs_to :pipeline, foreign_key: :commit_id
- has_many :builds
-
- serialize :variables
-
- def user_variables
- return [] unless variables
-
- variables.map do |key, value|
- { key: key, value: value, public: false }
- end
- end
- end
-end
diff --git a/app/services/ci/create_pipeline_builds_service.rb b/app/services/ci/create_pipeline_builds_service.rb
index b7da3f8e7eb..cc8c9149dd9 100644
--- a/app/services/ci/create_pipeline_builds_service.rb
+++ b/app/services/ci/create_pipeline_builds_service.rb
@@ -22,8 +22,7 @@ module Ci
project: project,
ref: pipeline.ref,
tag: pipeline.tag,
- user: current_user,
- trigger_request: trigger_request
+ user: current_user
)
build = pipeline.builds.create(build_attributes)
@@ -43,11 +42,5 @@ module Ci
def existing_build_names
@existing_build_names ||= pipeline.builds.pluck(:name)
end
-
- def trigger_request
- return @trigger_request if defined?(@trigger_request)
-
- @trigger_request ||= pipeline.trigger_requests.first
- end
end
end
diff --git a/app/services/ci/create_pipeline_service.rb b/app/services/ci/create_pipeline_service.rb
index e3bc9847200..4223b8423b1 100644
--- a/app/services/ci/create_pipeline_service.rb
+++ b/app/services/ci/create_pipeline_service.rb
@@ -2,14 +2,15 @@ module Ci
class CreatePipelineService < BaseService
attr_reader :pipeline
- def execute(ignore_skip_ci: false, save_on_errors: true, trigger_request: nil)
+ def execute(ignore_skip_ci: false, save_on_errors: true, trigger: nil, trigger_variables: nil)
@pipeline = Ci::Pipeline.new(
project: project,
ref: ref,
sha: sha,
before_sha: before_sha,
tag: tag?,
- trigger_requests: Array(trigger_request),
+ trigger: trigger,
+ trigger_variables: trigger_variables,
user: current_user
)
@@ -17,7 +18,7 @@ module Ci
return error('Pipeline is disabled')
end
- unless trigger_request || can?(current_user, :create_pipeline, project)
+ unless trigger || can?(current_user, :create_pipeline, project)
return error('Insufficient permissions to create a new pipeline')
end
diff --git a/app/services/ci/create_trigger_request_service.rb b/app/services/ci/create_trigger_request_service.rb
deleted file mode 100644
index 6af3c1ca5b1..00000000000
--- a/app/services/ci/create_trigger_request_service.rb
+++ /dev/null
@@ -1,13 +0,0 @@
-module Ci
- class CreateTriggerRequestService
- def execute(project, trigger, ref, variables = nil)
- trigger_request = trigger.trigger_requests.create(variables: variables)
-
- pipeline = Ci::CreatePipelineService.new(project, nil, ref: ref).
- execute(ignore_skip_ci: true, trigger_request: trigger_request)
- if pipeline.persisted?
- trigger_request
- end
- end
- end
-end
diff --git a/app/views/projects/ci/builds/_build.html.haml b/app/views/projects/ci/builds/_build.html.haml
index 5ea85f9fd4c..9302d675ffc 100644
--- a/app/views/projects/ci/builds/_build.html.haml
+++ b/app/views/projects/ci/builds/_build.html.haml
@@ -42,7 +42,7 @@
- build.tags.each do |tag|
%span.label.label-primary
= tag
- - if build.try(:trigger_request)
+ - if build.pipeline.trigger?
%span.label.label-info triggered
- if build.try(:allow_failure)
%span.label.label-danger allowed to fail