diff options
Diffstat (limited to 'app/models/ci/job_artifact.rb')
-rw-r--r-- | app/models/ci/job_artifact.rb | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/app/models/ci/job_artifact.rb b/app/models/ci/job_artifact.rb index ef0701b3874..c4ac10814a9 100644 --- a/app/models/ci/job_artifact.rb +++ b/app/models/ci/job_artifact.rb @@ -73,12 +73,14 @@ module Ci validates :file_format, presence: true, unless: :trace?, on: :create validate :valid_file_format?, unless: :trace?, on: :create - before_save :set_size, if: :file_changed? - update_project_statistics project_statistics_name: :build_artifacts_size + before_save :set_size, if: :file_changed? + before_save :set_file_store, if: ->(job_artifact) { job_artifact.file_store.nil? } after_save :update_file_store, if: :saved_change_to_file? + update_project_statistics project_statistics_name: :build_artifacts_size + scope :with_files_stored_locally, -> { where(file_store: [nil, ::JobArtifactUploader::Store::LOCAL]) } scope :with_files_stored_remotely, -> { where(file_store: ::JobArtifactUploader::Store::REMOTE) } scope :for_sha, ->(sha, project_id) { joins(job: :pipeline).where(ci_pipelines: { sha: sha, project_id: project_id }) } @@ -226,6 +228,15 @@ module Ci self.size = file.size end + def set_file_store + self.file_store = + if JobArtifactUploader.object_store_enabled? && JobArtifactUploader.direct_upload_enabled? + JobArtifactUploader::Store::REMOTE + else + file.object_store + end + end + def project_destroyed? # Use job.project to avoid extra DB query for project job.project.pending_delete? |