Skip to content
代码片段 群组 项目
未验证 提交 bb9b6db3 编辑于 作者: Avielle Wolfe's avatar Avielle Wolfe 提交者: GitLab
浏览文件

Merge branch '440474-release-service-execution-time' into 'master'

Track catalog release service execution time

See merge request https://gitlab.com/gitlab-org/gitlab/-/merge_requests/144708



Merged-by: default avatarAvielle Wolfe <awolfe@gitlab.com>
Approved-by: default avatarFabio Pitino <fpitino@gitlab.com>
Reviewed-by: default avatarRajendra Kadam <rkadam@gitlab.com>
Co-authored-by: default avatarRajendra Kadam <rkadam@gitlab.com>
No related branches found
No related tags found
无相关合并请求
......@@ -11,8 +11,10 @@ def initialize(release)
end
def execute
validate_catalog_resource
create_version
track_release_duration do
validate_catalog_resource
create_version
end
if errors.empty?
ServiceResponse.success
......@@ -25,6 +27,20 @@ def execute
attr_reader :project, :errors, :release
def track_release_duration
name = :gitlab_ci_catalog_release_duration_seconds
comment = 'CI Catalog Release duration'
buckets = [0.01, 0.05, 0.1, 0.5, 1.0, 2.0, 5.0, 10.0, 20.0, 50.0, 240.0]
histogram = ::Gitlab::Metrics.histogram(name, comment, {}, buckets)
start_time = ::Gitlab::Metrics::System.monotonic_time
yield
duration = ::Gitlab::Metrics::System.monotonic_time - start_time
histogram.observe({}, duration.seconds)
end
def validate_catalog_resource
response = Ci::Catalog::Resources::ValidateService.new(project, release.sha).execute
return if response.success?
......
......@@ -4,6 +4,31 @@
RSpec.describe Ci::Catalog::Resources::ReleaseService, feature_category: :pipeline_composition do
describe '#execute' do
context 'when executing release service' do
let(:histogram) { instance_double(Prometheus::Client::Histogram) }
before do
allow(Gitlab::Metrics).to receive(:histogram).and_call_original
allow(::Gitlab::Metrics).to receive(:histogram).with(
:gitlab_ci_catalog_release_duration_seconds,
'CI Catalog Release duration',
{},
[0.01, 0.05, 0.1, 0.5, 1.0, 2.0, 5.0, 10.0, 20.0, 50.0, 240.0]
).and_return(histogram)
allow(::Gitlab::Metrics::System).to receive(:monotonic_time).and_call_original
end
it 'tracks release duration' do
project = create(:project, :catalog_resource_with_components)
release = create(:release, project: project, sha: project.repository.root_ref_sha)
expect(histogram).to receive(:observe).with({}, an_instance_of(Float))
described_class.new(release).execute
end
end
context 'with a valid catalog resource and release' do
it 'validates the catalog resource and creates a version' do
project = create(:project, :catalog_resource_with_components)
......
0% 加载中 .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册