diff options
Diffstat (limited to 'app/models/ci/job_artifact.rb')
-rw-r--r-- | app/models/ci/job_artifact.rb | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/app/models/ci/job_artifact.rb b/app/models/ci/job_artifact.rb index ad3e867f9d5..ec1137920ef 100644 --- a/app/models/ci/job_artifact.rb +++ b/app/models/ci/job_artifact.rb @@ -10,9 +10,7 @@ module Ci include Artifactable include FileStoreMounter include EachBatch - include IgnorableColumns - - ignore_columns %i[id_convert_to_bigint job_id_convert_to_bigint], remove_with: '14.5', remove_after: '2021-11-22' + include Gitlab::Utils::StrongMemoize TEST_REPORT_FILE_TYPES = %w[junit].freeze COVERAGE_REPORT_FILE_TYPES = %w[cobertura].freeze @@ -124,6 +122,9 @@ module Ci mount_file_store_uploader JobArtifactUploader + skip_callback :save, :after, :store_file!, if: :store_after_commit? + after_commit :store_file_after_commit!, on: [:create, :update], if: :store_after_commit? + validates :file_format, presence: true, unless: :trace?, on: :create validate :validate_file_format!, unless: :trace?, on: :create before_save :set_size, if: :file_changed? @@ -338,8 +339,23 @@ module Ci } end + def store_after_commit? + strong_memoize(:store_after_commit) do + trace? && + JobArtifactUploader.direct_upload_enabled? && + Feature.enabled?(:ci_store_trace_outside_transaction, project, default_enabled: :yaml) + end + end + private + def store_file_after_commit! + return unless previous_changes.key?(:file) + + store_file! + update_file_store + end + def set_size self.size = file.size end |