diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2023-05-03 06:19:54 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2023-05-03 06:19:54 +0000 |
commit | 74081733481d7d3d480a5e887ac768fe30f84055 (patch) | |
tree | 816e1fbfd090eaf05a2d16a711ff891cb0acbf08 /app/services | |
parent | 8d94a37915dfc305c8217fe7e8e4d00928aa88cf (diff) | |
download | gitlab-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.rb | 12 | ||||
-rw-r--r-- | app/services/ml/experiment_tracking/handle_candidate_gitlab_metadata_service.rb | 30 |
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 |