Move keep to ArtifactsController
This commit is contained in:
parent
aea4041ce9
commit
ffe8dbde9b
7 changed files with 27 additions and 20 deletions
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
|
|
@ -44,15 +44,16 @@
|
||||||
%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?
|
||||||
The artifacts were removed #{time_ago_with_tooltip(@build.artifacts_expire_at)}
|
.artifacts-expired.alert.alert-warning
|
||||||
- elsif @build.artifacts_expire_at
|
The artifacts were removed #{time_ago_with_tooltip(@build.artifacts_expire_at)}
|
||||||
%p.build-detail-row.artifacts-expired.alert.alert-info
|
- elsif @build.artifacts_expire_at
|
||||||
The artifacts will be removed at #{time_ago_with_tooltip(@build.artifacts_expire_at)}
|
.artifacts-expired.alert.alert-warning
|
||||||
.pull-right
|
The artifacts will be removed in #{duration_in_words(@build.artifacts_expire_at, Time.now)}
|
||||||
= link_to keep_artifacts_namespace_project_build_artifacts_path(@project.namespace, @project, @build), class: 'btn btn-sm btn-primary' do
|
.pull-right
|
||||||
Keep
|
= link_to keep_namespace_project_build_artifacts_path(@project.namespace, @project, @build), class: 'btn btn-xs btn-primary', method: :post do
|
||||||
|
Keep
|
||||||
%p.build-detail-row
|
%p.build-detail-row
|
||||||
%span.build-light-text Runner:
|
%span.build-light-text Runner:
|
||||||
- if @build.runner && current_user && current_user.admin
|
- if @build.runner && current_user && current_user.admin
|
||||||
|
|
|
@ -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
|
|
@ -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.
|
||||||
|
|
|
@ -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'
|
||||||
|
|
|
@ -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
|
||||||
|
@ -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…
Reference in a new issue