Add Pipeline metrics worker
This commit is contained in:
parent
cb8654e856
commit
9c6c5c79f8
|
|
@ -21,6 +21,7 @@ Please view this file on the master branch, on stable branches it's out of date.
|
|||
- Change user & group landing page routing from /u/:username to /:username
|
||||
- Prevent running GfmAutocomplete setup for each diff note !6569
|
||||
- Added documentation for .gitattributes files
|
||||
- Move Pipeline Metrics to separate worker
|
||||
- AbstractReferenceFilter caches project_refs on RequestStore when active
|
||||
- Replaced the check sign to arrow in the show build view. !6501
|
||||
- Add a /wip slash command to toggle the Work In Progress status of a merge request. !6259 (tbalthazar)
|
||||
|
|
|
|||
|
|
@ -49,6 +49,10 @@ module Ci
|
|||
transition any => :canceled
|
||||
end
|
||||
|
||||
# IMPORTANT
|
||||
# Do not add any operations to this state_machine
|
||||
# Create a separate worker for each new operation
|
||||
|
||||
before_transition [:created, :pending] => :running do |pipeline|
|
||||
pipeline.started_at = Time.now
|
||||
end
|
||||
|
|
@ -62,13 +66,11 @@ module Ci
|
|||
end
|
||||
|
||||
after_transition [:created, :pending] => :running do |pipeline|
|
||||
MergeRequest::Metrics.where(merge_request_id: pipeline.merge_requests.map(&:id)).
|
||||
update_all(latest_build_started_at: pipeline.started_at, latest_build_finished_at: nil)
|
||||
pipeline.run_after_commit { PipelineMetricsWorker.perform_async(id) }
|
||||
end
|
||||
|
||||
after_transition any => [:success] do |pipeline|
|
||||
MergeRequest::Metrics.where(merge_request_id: pipeline.merge_requests.map(&:id)).
|
||||
update_all(latest_build_finished_at: pipeline.finished_at)
|
||||
pipeline.run_after_commit { PipelineMetricsWorker.perform_async(id) }
|
||||
end
|
||||
|
||||
after_transition [:created, :pending, :running] => :success do |pipeline|
|
||||
|
|
|
|||
|
|
@ -0,0 +1,15 @@
|
|||
class PipelineMetricsWorker
|
||||
include Sidekiq::Worker
|
||||
|
||||
sidekiq_options queue: :default
|
||||
|
||||
def perform(pipeline_id)
|
||||
Ci::Pipeline.find_by(id: pipeline_id).try do |pipeline|
|
||||
merge_requests = pipeline.merge_requests.map(&:id)
|
||||
|
||||
metrics = MergeRequest::Metrics.where(merge_request_id: merge_requests)
|
||||
metrics.update_all(latest_build_started_at: pipeline.started_at) if pipeline.active?
|
||||
metrics.update_all(latest_build_finished_at: pipeline.finished_at) if pipeline.success?
|
||||
end
|
||||
end
|
||||
end
|
||||
Loading…
Reference in New Issue