2017-09-21 08:34:12 +00:00
|
|
|
module Ci
|
|
|
|
class JobArtifact < ActiveRecord::Base
|
2017-12-08 09:09:06 +00:00
|
|
|
include AfterCommitQueue
|
2017-09-21 08:34:12 +00:00
|
|
|
extend Gitlab::Ci::Model
|
|
|
|
|
|
|
|
belongs_to :project
|
2017-11-02 18:38:25 +00:00
|
|
|
belongs_to :job, class_name: "Ci::Build", foreign_key: :job_id
|
2017-09-21 08:34:12 +00:00
|
|
|
|
|
|
|
before_save :set_size, if: :file_changed?
|
|
|
|
|
|
|
|
mount_uploader :file, JobArtifactUploader
|
|
|
|
|
2017-12-08 09:09:06 +00:00
|
|
|
after_save if: :file_changed?, on: [:create, :update] do
|
|
|
|
run_after_commit do
|
|
|
|
file.schedule_migration_to_object_storage
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2017-09-21 08:34:12 +00:00
|
|
|
enum file_type: {
|
|
|
|
archive: 1,
|
|
|
|
metadata: 2
|
|
|
|
}
|
|
|
|
|
|
|
|
def self.artifacts_size_for(project)
|
|
|
|
self.where(project: project).sum(:size)
|
|
|
|
end
|
|
|
|
|
|
|
|
def set_size
|
|
|
|
self.size = file.size
|
|
|
|
end
|
2017-12-03 11:02:11 +00:00
|
|
|
|
|
|
|
def expire_in
|
|
|
|
expire_at - Time.now if expire_at
|
|
|
|
end
|
|
|
|
|
|
|
|
def expire_in=(value)
|
|
|
|
self.expire_at =
|
|
|
|
if value
|
|
|
|
ChronicDuration.parse(value)&.seconds&.from_now
|
|
|
|
end
|
|
|
|
end
|
2017-09-21 08:34:12 +00:00
|
|
|
end
|
|
|
|
end
|