From 2cfd0b59aeb410c1541530ca3eb5f5c472b978e0 Mon Sep 17 00:00:00 2001 From: Douwe Maan Date: Tue, 24 Mar 2015 13:15:59 +0100 Subject: Archive repositories in background worker. --- app/workers/repository_archive_worker.rb | 46 ++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 app/workers/repository_archive_worker.rb (limited to 'app/workers') diff --git a/app/workers/repository_archive_worker.rb b/app/workers/repository_archive_worker.rb new file mode 100644 index 00000000000..3f4681a80f4 --- /dev/null +++ b/app/workers/repository_archive_worker.rb @@ -0,0 +1,46 @@ +class RepositoryArchiveWorker + include Sidekiq::Worker + + sidekiq_options queue: :archive_repo + + attr_accessor :project, :ref, :format + + def perform(project_id, ref, format) + @project = Project.find(project_id) + @ref, @format = ref, format + + repository = project.repository + + repository.clean_old_archives + + return if archived? || archiving? + + repository.archive_repo(*archive_args) + end + + private + + def storage_path + Gitlab.config.gitlab.repository_downloads_path + end + + def archive_args + @archive_args ||= [ref, storage_path, format.downcase] + end + + def file_path + @file_path ||= project.repository.archive_file_path(*archive_args) + end + + def pid_file_path + @pid_file_path ||= project.repository.archive_pid_file_path(*archive_args) + end + + def archived? + File.exist?(file_path) + end + + def archiving? + File.exist?(pid_file_path) + end +end -- cgit v1.2.3