diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index 9a6d4be2fc8190ad7dc8dd3d283c938cf7a37d32..affc298e0ca8768a998dfd1ce1f6c4bdeae16d72 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -266,8 +266,6 @@ class ProjectsController < Projects::ApplicationController end def export_project_path - # TODO: move this, probably to ImportExport and refactor - folder = File.join(Settings.shared['path'], 'tmp/project_exports', @project.path_with_namespace) - Dir.glob("#{folder}/*export.tar.gz").max_by {|f| File.ctime(f)} + Dir.glob("#{@project.export_path}/*export.tar.gz").max_by {|f| File.ctime(f)} end end diff --git a/app/models/project.rb b/app/models/project.rb index 9d7b988bf2157b8360879d35ed25a9ed6491e899..617dbf9a925127dea5756c7be3ad9efc5a6b1d2d 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -348,6 +348,11 @@ class Project < ActiveRecord::Base joins(join_body).reorder('join_note_counts.amount DESC') end + + # Deletes gitlab project export files older than 24 hours + def archive_gitlab_exports! + Gitlab::Popen.popen(%W(find #{export_path} -not -path #{export_path} -mmin +1440 -delete)) + end end def team @@ -1104,4 +1109,8 @@ class Project < ActiveRecord::Base Rails.logger.error "Export job failed to start for project ID #{self.id}" end end + + def export_path + File.join(ImportExport.storage_path, path_with_namespace) + end end diff --git a/app/workers/gitlab_project_archive_worker.rb b/app/workers/gitlab_project_archive_worker.rb new file mode 100644 index 0000000000000000000000000000000000000000..63e7086d41a99dabb0b9ea2b20beebebca996c5b --- /dev/null +++ b/app/workers/gitlab_project_archive_worker.rb @@ -0,0 +1,9 @@ +class GitlabProjectArchiveWorker + include Sidekiq::Worker + + sidekiq_options queue: :default + + def perform + Project.archive_gitlab_exports! + end +end diff --git a/config/initializers/1_settings.rb b/config/initializers/1_settings.rb index 436751b9d168f86b7b4ae3feb84efb189e5c964c..64cfc0f5357dec62f9d938804ccb137bfb631e7e 100644 --- a/config/initializers/1_settings.rb +++ b/config/initializers/1_settings.rb @@ -288,6 +288,9 @@ Settings.cron_jobs['admin_email_worker']['job_class'] = 'AdminEmailWorker' Settings.cron_jobs['repository_archive_cache_worker'] ||= Settingslogic.new({}) Settings.cron_jobs['repository_archive_cache_worker']['cron'] ||= '0 * * * *' Settings.cron_jobs['repository_archive_cache_worker']['job_class'] = 'RepositoryArchiveCacheWorker' +Settings.cron_jobs['gitlab_project_archive_worker'] ||= Settingslogic.new({}) +Settings.cron_jobs['gitlab_project_archive_worker']['cron'] ||= '0 * * * *' +Settings.cron_jobs['gitlab_project_archive_worker']['job_class'] = 'GitlabProjectArchiveWorker' # # GitLab Shell