Skip to content
Snippets Groups Projects
Commit ffe8dbde authored by Kamil Trzcinski's avatar Kamil Trzcinski Committed by Phil Hughes
Browse files

Move keep to ArtifactsController

parent aea4041c
No related branches found
No related tags found
1 merge request!4200Artifacts expire date
Loading
@@ -34,6 +34,11 @@ class Projects::ArtifactsController < Projects::ApplicationController
Loading
@@ -34,6 +34,11 @@ class Projects::ArtifactsController < Projects::ApplicationController
end end
end end
   
def keep
build.keep_artifacts!
redirect_to namespace_project_build_path(project.namespace, project, build)
end
private private
   
def build def build
Loading
Loading
Loading
@@ -12,7 +12,7 @@ module Ci
Loading
@@ -12,7 +12,7 @@ module Ci
scope :unstarted, ->() { where(runner_id: nil) } scope :unstarted, ->() { where(runner_id: nil) }
scope :ignore_failures, ->() { where(allow_failure: false) } scope :ignore_failures, ->() { where(allow_failure: false) }
scope :with_artifacts, ->() { where.not(artifacts_file: nil) } scope :with_artifacts, ->() { where.not(artifacts_file: nil) }
scope :with_artifacts_expired, ->() { with_artifacts.where('artifacts_expire_at < ?', Time.now) } scope :with_expired_artifacts, ->() { with_artifacts.where('artifacts_expire_at < ?', Time.now) }
   
mount_uploader :artifacts_file, ArtifactUploader mount_uploader :artifacts_file, ArtifactUploader
mount_uploader :artifacts_metadata, ArtifactUploader mount_uploader :artifacts_metadata, ArtifactUploader
Loading
@@ -352,10 +352,10 @@ module Ci
Loading
@@ -352,10 +352,10 @@ module Ci
end end
   
def artifacts_expired? def artifacts_expired?
self.artifacts_expire_at < Time.now && !artifacts? !artifacts? && artifacts_expire_at && artifacts_expire_at < Time.now
end end
   
def keep_artifacts def keep_artifacts!
self.update(artifacts_expire_at: nil) self.update(artifacts_expire_at: nil)
end end
   
Loading
@@ -366,7 +366,7 @@ module Ci
Loading
@@ -366,7 +366,7 @@ module Ci
end end
   
def update_erased!(user = nil) def update_erased!(user = nil)
self.update(erased_by: user, erased_at: Time.now) self.update(erased_by: user, erased_at: Time.now, artifacts_expire_at: nil)
end end
   
def yaml_variables def yaml_variables
Loading
Loading
Loading
@@ -44,14 +44,15 @@
Loading
@@ -44,14 +44,15 @@
%p.build-detail-row %p.build-detail-row
%span.build-light-text Erased: %span.build-light-text Erased:
#{time_ago_with_tooltip(@build.erased_at)} #{time_ago_with_tooltip(@build.erased_at)}
- elsif @build.artifacts_expired? - else
%p.build-detail-row.artifacts-expired.alert.alert-warning - if @build.artifacts_expired?
.artifacts-expired.alert.alert-warning
The artifacts were removed #{time_ago_with_tooltip(@build.artifacts_expire_at)} The artifacts were removed #{time_ago_with_tooltip(@build.artifacts_expire_at)}
- elsif @build.artifacts_expire_at - elsif @build.artifacts_expire_at
%p.build-detail-row.artifacts-expired.alert.alert-info .artifacts-expired.alert.alert-warning
The artifacts will be removed at #{time_ago_with_tooltip(@build.artifacts_expire_at)} The artifacts will be removed in #{duration_in_words(@build.artifacts_expire_at, Time.now)}
.pull-right .pull-right
= link_to keep_artifacts_namespace_project_build_artifacts_path(@project.namespace, @project, @build), class: 'btn btn-sm btn-primary' do = link_to keep_namespace_project_build_artifacts_path(@project.namespace, @project, @build), class: 'btn btn-xs btn-primary', method: :post do
Keep Keep
%p.build-detail-row %p.build-detail-row
%span.build-light-text Runner: %span.build-light-text Runner:
Loading
Loading
Loading
@@ -4,8 +4,9 @@ class ExpireBuildArtifacts
Loading
@@ -4,8 +4,9 @@ class ExpireBuildArtifacts
def perform def perform
Rails.logger.info 'Cleaning old build artifacts' Rails.logger.info 'Cleaning old build artifacts'
   
builds = Ci::Build.with_artifacts_expired builds = Ci::Build.with_expired_artifacts
builds.find_each(batch_size: 50).each do |build| builds.find_each(batch_size: 50).each do |build|
Rails.logger.debug "Removing artifacts build #{build.id}..."
build.erase_artifacts! build.erase_artifacts!
end end
end end
Loading
Loading
Loading
@@ -164,8 +164,8 @@ production: &base
Loading
@@ -164,8 +164,8 @@ production: &base
# Flag stuck CI builds as failed # Flag stuck CI builds as failed
stuck_ci_builds_worker: stuck_ci_builds_worker:
cron: "0 0 * * *" cron: "0 0 * * *"
# Remove old artifacts # Remove expired build artifacts
expire_build_artifacts: expire_build_artifacts_worker:
cron: "50 * * * *" cron: "50 * * * *"
# Periodically run 'git fsck' on all repositories. If started more than # Periodically run 'git fsck' on all repositories. If started more than
# once per hour you will have concurrent 'git fsck' jobs. # once per hour you will have concurrent 'git fsck' jobs.
Loading
Loading
Loading
@@ -279,9 +279,9 @@ Settings['cron_jobs'] ||= Settingslogic.new({})
Loading
@@ -279,9 +279,9 @@ Settings['cron_jobs'] ||= Settingslogic.new({})
Settings.cron_jobs['stuck_ci_builds_worker'] ||= Settingslogic.new({}) Settings.cron_jobs['stuck_ci_builds_worker'] ||= Settingslogic.new({})
Settings.cron_jobs['stuck_ci_builds_worker']['cron'] ||= '0 0 * * *' Settings.cron_jobs['stuck_ci_builds_worker']['cron'] ||= '0 0 * * *'
Settings.cron_jobs['stuck_ci_builds_worker']['job_class'] = 'StuckCiBuildsWorker' Settings.cron_jobs['stuck_ci_builds_worker']['job_class'] = 'StuckCiBuildsWorker'
Settings.cron_jobs['expire_build_artifacts'] ||= Settingslogic.new({}) Settings.cron_jobs['expire_build_artifacts_worker'] ||= Settingslogic.new({})
Settings.cron_jobs['expire_build_artifacts']['cron'] ||= '0 0 * * *' Settings.cron_jobs['expire_build_artifacts_worker']['cron'] ||= '0 0 * * *'
Settings.cron_jobs['expire_build_artifacts']['job_class'] = 'ExpireBuildArtifacts' Settings.cron_jobs['expire_build_artifacts_worker']['job_class'] = 'ExpireBuildArtifactsWorker'
Settings.cron_jobs['repository_check_worker'] ||= Settingslogic.new({}) Settings.cron_jobs['repository_check_worker'] ||= Settingslogic.new({})
Settings.cron_jobs['repository_check_worker']['cron'] ||= '20 * * * *' Settings.cron_jobs['repository_check_worker']['cron'] ||= '20 * * * *'
Settings.cron_jobs['repository_check_worker']['job_class'] = 'RepositoryCheck::BatchWorker' Settings.cron_jobs['repository_check_worker']['job_class'] = 'RepositoryCheck::BatchWorker'
Loading
Loading
Loading
@@ -714,7 +714,6 @@ Rails.application.routes.draw do
Loading
@@ -714,7 +714,6 @@ Rails.application.routes.draw do
post :cancel post :cancel
post :retry post :retry
post :erase post :erase
post :keep_artifacts
get :trace get :trace
get :raw get :raw
end end
Loading
@@ -723,6 +722,7 @@ Rails.application.routes.draw do
Loading
@@ -723,6 +722,7 @@ Rails.application.routes.draw do
get :download get :download
get :browse, path: 'browse(/*path)', format: false get :browse, path: 'browse(/*path)', format: false
get :file, path: 'file/*path', format: false get :file, path: 'file/*path', format: false
post :keep
end end
end end
   
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment