summaryrefslogtreecommitdiff
path: root/app/services
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2023-05-03 06:19:54 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2023-05-03 06:19:54 +0000
commit74081733481d7d3d480a5e887ac768fe30f84055 (patch)
tree816e1fbfd090eaf05a2d16a711ff891cb0acbf08 /app/services
parent8d94a37915dfc305c8217fe7e8e4d00928aa88cf (diff)
downloadgitlab-ce-74081733481d7d3d480a5e887ac768fe30f84055.tar.gz
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/services')
-rw-r--r--app/services/ml/experiment_tracking/candidate_repository.rb12
-rw-r--r--app/services/ml/experiment_tracking/handle_candidate_gitlab_metadata_service.rb30
2 files changed, 42 insertions, 0 deletions
diff --git a/app/services/ml/experiment_tracking/candidate_repository.rb b/app/services/ml/experiment_tracking/candidate_repository.rb
index e2978c16b2f..b6814c3df6b 100644
--- a/app/services/ml/experiment_tracking/candidate_repository.rb
+++ b/app/services/ml/experiment_tracking/candidate_repository.rb
@@ -48,6 +48,8 @@ module Ml
end
def add_tag!(candidate, name, value)
+ handle_gitlab_tags(candidate, [{ key: name, value: value }])
+
candidate.metadata.create!(name: name, value: value)
end
@@ -61,11 +63,21 @@ module Ml
end
def add_tags(candidate, tag_definitions)
+ handle_gitlab_tags(candidate, tag_definitions)
+
insert_many(candidate, tag_definitions, ::Ml::CandidateMetadata)
end
private
+ def handle_gitlab_tags(candidate, tag_definitions)
+ return unless tag_definitions.any? { |t| t[:key]&.starts_with?('gitlab.') }
+
+ Ml::ExperimentTracking::HandleCandidateGitlabMetadataService
+ .new(candidate, tag_definitions)
+ .execute
+ end
+
def timestamps
current_time = Time.zone.now
diff --git a/app/services/ml/experiment_tracking/handle_candidate_gitlab_metadata_service.rb b/app/services/ml/experiment_tracking/handle_candidate_gitlab_metadata_service.rb
new file mode 100644
index 00000000000..918e4d10ac3
--- /dev/null
+++ b/app/services/ml/experiment_tracking/handle_candidate_gitlab_metadata_service.rb
@@ -0,0 +1,30 @@
+# frozen_string_literal: true
+
+module Ml
+ module ExperimentTracking
+ class HandleCandidateGitlabMetadataService
+ def initialize(candidate, metadata)
+ @candidate = candidate
+ @metadata = metadata.index_by { |m| m[:key] }
+ end
+
+ def execute
+ handle_build_metadata(@metadata['gitlab.CI_JOB_ID'])
+
+ @candidate.save
+ end
+
+ private
+
+ def handle_build_metadata(build_metadata)
+ return unless build_metadata
+
+ build = Ci::Build.find_by_id(build_metadata[:value])
+
+ raise ArgumentError, 'gitlab.CI_JOB_ID must refer to an existing build' unless build
+
+ @candidate.ci_build = build
+ end
+ end
+ end
+end