Skip to content
Snippets Groups Projects

Track shared runners duration when job completes

Merged Fabio Pitino requested to merge ci-track-shared-runners-usage-duration into master
1 unresolved thread
Files
7
@@ -6,6 +6,22 @@ class UpdateBuildMinutesService < BaseService
# Calculates consumption and updates the project and namespace statistics(legacy)
# or ProjectMonthlyUsage and NamespaceMonthlyUsage(not legacy) based on the passed build.
def execute(build)
if Feature.enabled?(:ci_always_track_shared_runners_usage, build.project, default_enabled: :yaml)
return unless build.complete?
return unless build.duration&.positive?
return unless build.shared_runner_build?
ci_minutes_consumed = ::Gitlab::Ci::Minutes::BuildConsumption.new(build, build.duration).amount
update_usage(build, ci_minutes_consumed)
else
legacy_update_minutes(build)
end
end
private
def legacy_update_minutes(build)
return unless build.cost_factor_enabled?
return unless build.complete?
return unless build.duration&.positive?
@@ -14,13 +30,12 @@ def execute(build)
return unless consumption > 0
update_minutes(consumption, build)
::Ci::Minutes::UpdateProjectAndNamespaceUsageWorker.perform_async(consumption, project.id, namespace.id, build.id)
end
private
def update_minutes(consumption, build)
::Ci::Minutes::UpdateProjectAndNamespaceUsageWorker.perform_async(consumption, project.id, namespace.id, build.id)
def update_usage(build, ci_minutes_consumed)
::Ci::Minutes::UpdateProjectAndNamespaceUsageWorker
.perform_async(ci_minutes_consumed, project.id, namespace.id, build.id, { duration: build.duration })
end
def namespace
Loading