diff options
Diffstat (limited to 'app/models/ci/job_artifact.rb')
-rw-r--r-- | app/models/ci/job_artifact.rb | 29 |
1 files changed, 24 insertions, 5 deletions
diff --git a/app/models/ci/job_artifact.rb b/app/models/ci/job_artifact.rb index d931428dccd..8aba9356949 100644 --- a/app/models/ci/job_artifact.rb +++ b/app/models/ci/job_artifact.rb @@ -5,6 +5,7 @@ module Ci include AfterCommitQueue include ObjectStorage::BackgroundMove include UpdateProjectStatistics + include UsageStatistics include Sortable extend Gitlab::Ci::Model @@ -26,6 +27,7 @@ module Ci accessibility: 'gl-accessibility.json', codequality: 'gl-code-quality-report.json', sast: 'gl-sast-report.json', + secret_detection: 'gl-secret-detection-report.json', dependency_scanning: 'gl-dependency-scanning-report.json', container_scanning: 'gl-container-scanning-report.json', dast: 'gl-dast-report.json', @@ -37,7 +39,8 @@ module Ci dotenv: '.env', cobertura: 'cobertura-coverage.xml', terraform: 'tfplan.json', - cluster_applications: 'gl-cluster-applications.json' + cluster_applications: 'gl-cluster-applications.json', + requirements: 'requirements.json' }.freeze INTERNAL_TYPES = { @@ -62,13 +65,15 @@ module Ci accessibility: :raw, codequality: :raw, sast: :raw, + secret_detection: :raw, dependency_scanning: :raw, container_scanning: :raw, dast: :raw, license_management: :raw, license_scanning: :raw, performance: :raw, - terraform: :raw + terraform: :raw, + requirements: :raw }.freeze DOWNLOADABLE_TYPES = %w[ @@ -87,6 +92,8 @@ module Ci metrics performance sast + secret_detection + requirements ].freeze TYPE_AND_FORMAT_PAIRS = INTERNAL_TYPES.merge(REPORT_TYPES).freeze @@ -109,6 +116,7 @@ module Ci after_save :update_file_store, if: :saved_change_to_file? + scope :not_expired, -> { where('expire_at IS NULL OR expire_at > ?', Time.current) } 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 }) } @@ -147,7 +155,8 @@ module Ci where(file_type: types) end - scope :expired, -> (limit) { where('expire_at < ?', Time.now).limit(limit) } + scope :expired, -> (limit) { where('expire_at < ?', Time.current).limit(limit) } + scope :downloadable, -> { where(file_type: DOWNLOADABLE_TYPES) } scope :locked, -> { where(locked: true) } scope :unlocked, -> { where(locked: [false, nil]) } @@ -176,7 +185,9 @@ module Ci cobertura: 17, terraform: 18, # Transformed json accessibility: 19, - cluster_applications: 20 + cluster_applications: 20, + secret_detection: 21, ## EE-specific + requirements: 22 ## EE-specific } enum file_format: { @@ -242,8 +253,16 @@ module Ci super || self.file_location.nil? end + def expired? + expire_at.present? && expire_at < Time.current + end + + def expiring? + expire_at.present? && expire_at > Time.current + end + def expire_in - expire_at - Time.now if expire_at + expire_at - Time.current if expire_at end def expire_in=(value) |