diff options
author | Kamil Trzcinski <ayufan@ayufan.eu> | 2017-02-15 17:23:39 +0100 |
---|---|---|
committer | Kamil Trzcinski <ayufan@ayufan.eu> | 2017-02-15 17:39:35 +0100 |
commit | 03345b3613d7667bd0ef05ec2258049e58d355ec (patch) | |
tree | 44288c6cdb9ab47bc5f2e40d4640a05874c6c8b0 /app | |
parent | e7f99753dae4de7422836ebf5f72e0dba3a867bb (diff) | |
download | gitlab-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.rb | 7 | ||||
-rw-r--r-- | app/models/ci/pipeline.rb | 16 | ||||
-rw-r--r-- | app/models/ci/trigger.rb | 8 | ||||
-rw-r--r-- | app/models/ci/trigger_request.rb | 19 | ||||
-rw-r--r-- | app/services/ci/create_pipeline_builds_service.rb | 9 | ||||
-rw-r--r-- | app/services/ci/create_pipeline_service.rb | 7 | ||||
-rw-r--r-- | app/services/ci/create_trigger_request_service.rb | 13 | ||||
-rw-r--r-- | app/views/projects/ci/builds/_build.html.haml | 2 |
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 |