Check for hooks directory symlink in gitlab:check
This commit is contained in:
parent
71e0554449
commit
45a6b62407
1 changed files with 17 additions and 62 deletions
|
@ -356,8 +356,7 @@ namespace :gitlab do
|
||||||
check_repo_base_user_and_group
|
check_repo_base_user_and_group
|
||||||
check_repo_base_permissions
|
check_repo_base_permissions
|
||||||
check_satellites_permissions
|
check_satellites_permissions
|
||||||
check_update_hook_is_up_to_date
|
check_repos_hooks_directory_is_link
|
||||||
check_repos_update_hooks_is_link
|
|
||||||
check_gitlab_shell_self_test
|
check_gitlab_shell_self_test
|
||||||
|
|
||||||
finished_checking "GitLab Shell"
|
finished_checking "GitLab Shell"
|
||||||
|
@ -367,29 +366,6 @@ namespace :gitlab do
|
||||||
# Checks
|
# Checks
|
||||||
########################
|
########################
|
||||||
|
|
||||||
|
|
||||||
def check_update_hook_is_up_to_date
|
|
||||||
print "update hook up-to-date? ... "
|
|
||||||
|
|
||||||
hook_file = "update"
|
|
||||||
gitlab_shell_hooks_path = Gitlab.config.gitlab_shell.hooks_path
|
|
||||||
gitlab_shell_hook_file = File.join(gitlab_shell_hooks_path, hook_file)
|
|
||||||
|
|
||||||
if File.exists?(gitlab_shell_hook_file)
|
|
||||||
puts "yes".green
|
|
||||||
else
|
|
||||||
puts "no".red
|
|
||||||
puts "Could not find #{gitlab_shell_hook_file}"
|
|
||||||
try_fixing_it(
|
|
||||||
'Check the hooks_path in config/gitlab.yml',
|
|
||||||
'Check your gitlab-shell installation'
|
|
||||||
)
|
|
||||||
for_more_information(
|
|
||||||
see_installation_guide_section "GitLab Shell"
|
|
||||||
)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def check_repo_base_exists
|
def check_repo_base_exists
|
||||||
print "Repo base directory exists? ... "
|
print "Repo base directory exists? ... "
|
||||||
|
|
||||||
|
@ -508,18 +484,10 @@ namespace :gitlab do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def check_repos_update_hooks_is_link
|
def check_repos_hooks_directory_is_link
|
||||||
print "update hooks in repos are links: ... "
|
print "hooks directories in repos are links: ... "
|
||||||
|
|
||||||
hook_file = "update"
|
|
||||||
gitlab_shell_hooks_path = Gitlab.config.gitlab_shell.hooks_path
|
gitlab_shell_hooks_path = Gitlab.config.gitlab_shell.hooks_path
|
||||||
gitlab_shell_hook_file = File.join(gitlab_shell_hooks_path, hook_file)
|
|
||||||
gitlab_shell_ssh_user = Gitlab.config.gitlab_shell.ssh_user
|
|
||||||
|
|
||||||
unless File.exists?(gitlab_shell_hook_file)
|
|
||||||
puts "can't check because of previous errors".magenta
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
unless Project.count > 0
|
unless Project.count > 0
|
||||||
puts "can't check, you have no projects".magenta
|
puts "can't check, you have no projects".magenta
|
||||||
|
@ -529,38 +497,25 @@ namespace :gitlab do
|
||||||
|
|
||||||
Project.find_each(batch_size: 100) do |project|
|
Project.find_each(batch_size: 100) do |project|
|
||||||
print sanitized_message(project)
|
print sanitized_message(project)
|
||||||
|
project_hook_directory = File.join(project.repository.path_to_repo, "hooks")
|
||||||
|
|
||||||
if project.empty_repo?
|
if project.empty_repo?
|
||||||
puts "repository is empty".magenta
|
puts "repository is empty".magenta
|
||||||
|
elsif File.realpath(project_hook_directory) == File.realpath(gitlab_shell_hooks_path)
|
||||||
|
puts 'ok'.green
|
||||||
else
|
else
|
||||||
project_hook_file = File.join(project.repository.path_to_repo, "hooks", hook_file)
|
puts "wrong or missing hooks".red
|
||||||
|
try_fixing_it(
|
||||||
unless File.exists?(project_hook_file)
|
sudo_gitlab("#{gitlab_shell_path}/bin/create-hooks"),
|
||||||
puts "missing".red
|
'Check the hooks_path in config/gitlab.yml',
|
||||||
try_fixing_it(
|
'Check your gitlab-shell installation'
|
||||||
"sudo -u #{gitlab_shell_ssh_user} ln -sf #{gitlab_shell_hook_file} #{project_hook_file}"
|
)
|
||||||
)
|
for_more_information(
|
||||||
for_more_information(
|
see_installation_guide_section "GitLab Shell"
|
||||||
"#{gitlab_shell_path}/bin/create-hooks"
|
)
|
||||||
)
|
fix_and_rerun
|
||||||
fix_and_rerun
|
|
||||||
next
|
|
||||||
end
|
|
||||||
|
|
||||||
if File.lstat(project_hook_file).symlink? &&
|
|
||||||
File.realpath(project_hook_file) == File.realpath(gitlab_shell_hook_file)
|
|
||||||
puts "ok".green
|
|
||||||
else
|
|
||||||
puts "not a link to GitLab Shell's hook".red
|
|
||||||
try_fixing_it(
|
|
||||||
"sudo -u #{gitlab_shell_ssh_user} ln -sf #{gitlab_shell_hook_file} #{project_hook_file}"
|
|
||||||
)
|
|
||||||
for_more_information(
|
|
||||||
"#{gitlab_shell_path}/bin/create-hooks"
|
|
||||||
)
|
|
||||||
fix_and_rerun
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue