Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/lib/tasks
diff options
context:
space:
mode:
authorBen Bodenmiller <bbodenmiller@hotmail.com>2015-08-17 02:57:15 +0300
committerBen Bodenmiller <bbodenmiller@hotmail.com>2015-08-17 02:57:15 +0300
commitea9b8fe5f16b26b5793f7d27500b4ff2633b5656 (patch)
treee16ad4d4143d00193e579c1a43ba9bff601a105d /lib/tasks
parent957e849f41d96fa9778fcdd06792d2f0274b29ab (diff)
check uploads dir
Detect issues with uploads dir, e.g. permission and ownership issues with the users uploads dir. This helps troubleshoot and correct gitlab-org/omnibus-gitlab#311. Fixes gitlabhq#7500, gitlabhq#7052. Related to gitlabhq#6281.
Diffstat (limited to 'lib/tasks')
-rw-r--r--lib/tasks/gitlab/check.rake52
1 files changed, 52 insertions, 0 deletions
diff --git a/lib/tasks/gitlab/check.rake b/lib/tasks/gitlab/check.rake
index 8acb6a7fd19..2c4c5bf2534 100644
--- a/lib/tasks/gitlab/check.rake
+++ b/lib/tasks/gitlab/check.rake
@@ -22,6 +22,7 @@ namespace :gitlab do
check_gitlab_config_not_outdated
check_log_writable
check_tmp_writable
+ check_uploads
check_init_script_exists
check_init_script_up_to_date
check_projects_have_namespace
@@ -276,6 +277,57 @@ namespace :gitlab do
fix_and_rerun
end
end
+
+ def check_uploads
+ print "Uploads directory setup correctly? ... "
+
+ unless File.directory?(Rails.root.join('public/uploads'))
+ puts "no".red
+ try_fixing_it(
+ "sudo -u #{gitlab_user} mkdir -m 750 #{Rails.root}/public/uploads"
+ )
+ for_more_information(
+ see_installation_guide_section "GitLab"
+ )
+ fix_and_rerun
+ return
+ end
+
+ upload_path = File.realpath(Rails.root.join('public/uploads'))
+ upload_path_tmp = File.join(upload_path, 'tmp')
+
+ if File.stat(upload_path).mode == 040750
+ unless Dir.exists?(upload_path_tmp)
+ puts 'skipped (no tmp uploads folder yet)'.magenta
+ return
+ end
+
+ # if tmp upload dir has incorrect permissions, assume others do as well
+ if File.stat(upload_path_tmp).mode == 040755 && File.owned?(upload_path_tmp) # verify drwxr-xr-x permissions
+ puts "yes".green
+ else
+ puts "no".red
+ try_fixing_it(
+ "sudo chown -R #{gitlab_user} #{upload_path}",
+ "sudo find #{upload_path} -type f -exec chmod 0644 {} \\;",
+ "sudo find #{upload_path} -type d -not -path #{upload_path} -exec chmod 0755 {} \\;"
+ )
+ for_more_information(
+ see_installation_guide_section "GitLab"
+ )
+ fix_and_rerun
+ end
+ else
+ puts "no".red
+ try_fixing_it(
+ "sudo chmod 0750 #{upload_path}",
+ )
+ for_more_information(
+ see_installation_guide_section "GitLab"
+ )
+ fix_and_rerun
+ end
+ end
def check_redis_version
print "Redis version >= 2.0.0? ... "