Merge branch 'fix-gitaly-install' into 'master'
Ensure we run installation Rake tasks in a clean env in TestEnv Closes #35859 See merge request !13249
This commit is contained in:
commit
23c502b434
3 changed files with 17 additions and 12 deletions
|
@ -21,7 +21,7 @@ namespace :gitlab do
|
||||||
create_gitaly_configuration
|
create_gitaly_configuration
|
||||||
# In CI we run scripts/gitaly-test-build instead of this command
|
# In CI we run scripts/gitaly-test-build instead of this command
|
||||||
unless ENV['CI'].present?
|
unless ENV['CI'].present?
|
||||||
Bundler.with_original_env { run_command!(%w[/usr/bin/env -u BUNDLE_GEMFILE] + [command]) }
|
Bundler.with_original_env { run_command!([command]) }
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -63,6 +63,8 @@ module TestEnv
|
||||||
# See gitlab.yml.example test section for paths
|
# See gitlab.yml.example test section for paths
|
||||||
#
|
#
|
||||||
def init(opts = {})
|
def init(opts = {})
|
||||||
|
Rake.application.rake_require 'tasks/gitlab/helpers'
|
||||||
|
Rake::Task.define_task :environment
|
||||||
# Disable mailer for spinach tests
|
# Disable mailer for spinach tests
|
||||||
disable_mailer if opts[:mailer] == false
|
disable_mailer if opts[:mailer] == false
|
||||||
|
|
||||||
|
@ -122,11 +124,14 @@ module TestEnv
|
||||||
end
|
end
|
||||||
|
|
||||||
def setup_gitlab_shell
|
def setup_gitlab_shell
|
||||||
shell_needs_update = component_needs_update?(Gitlab.config.gitlab_shell.path,
|
gitlab_shell_dir = File.dirname(Gitlab.config.gitlab_shell.path)
|
||||||
|
gitlab_shell_needs_update = component_needs_update?(gitlab_shell_dir,
|
||||||
Gitlab::Shell.version_required)
|
Gitlab::Shell.version_required)
|
||||||
|
|
||||||
unless !shell_needs_update || system('rake', 'gitlab:shell:install')
|
Rake.application.rake_require 'tasks/gitlab/shell'
|
||||||
raise 'Can`t clone gitlab-shell'
|
unless !gitlab_shell_needs_update || Rake.application.invoke_task('gitlab:shell:install')
|
||||||
|
FileUtils.rm_rf(gitlab_shell_dir)
|
||||||
|
raise "Can't install gitlab-shell"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -142,8 +147,10 @@ module TestEnv
|
||||||
gitaly_needs_update = component_needs_update?(gitaly_dir,
|
gitaly_needs_update = component_needs_update?(gitaly_dir,
|
||||||
Gitlab::GitalyClient.expected_server_version)
|
Gitlab::GitalyClient.expected_server_version)
|
||||||
|
|
||||||
unless !gitaly_needs_update || system('rake', "gitlab:gitaly:install[#{gitaly_dir}]")
|
Rake.application.rake_require 'tasks/gitlab/gitaly'
|
||||||
raise "Can't clone gitaly"
|
unless !gitaly_needs_update || Rake.application.invoke_task("gitlab:gitaly:install[#{gitaly_dir}]")
|
||||||
|
FileUtils.rm_rf(gitaly_dir)
|
||||||
|
raise "Can't install gitaly"
|
||||||
end
|
end
|
||||||
|
|
||||||
start_gitaly(gitaly_dir)
|
start_gitaly(gitaly_dir)
|
||||||
|
|
|
@ -41,8 +41,6 @@ describe 'gitlab:gitaly namespace rake task' do
|
||||||
end
|
end
|
||||||
|
|
||||||
describe 'gmake/make' do
|
describe 'gmake/make' do
|
||||||
let(:command_preamble) { %w[/usr/bin/env -u BUNDLE_GEMFILE] }
|
|
||||||
|
|
||||||
before(:all) do
|
before(:all) do
|
||||||
@old_env_ci = ENV.delete('CI')
|
@old_env_ci = ENV.delete('CI')
|
||||||
end
|
end
|
||||||
|
@ -59,12 +57,12 @@ describe 'gitlab:gitaly namespace rake task' do
|
||||||
context 'gmake is available' do
|
context 'gmake is available' do
|
||||||
before do
|
before do
|
||||||
expect_any_instance_of(Object).to receive(:checkout_or_clone_version)
|
expect_any_instance_of(Object).to receive(:checkout_or_clone_version)
|
||||||
allow_any_instance_of(Object).to receive(:run_command!).with(command_preamble + ['gmake']).and_return(true)
|
allow_any_instance_of(Object).to receive(:run_command!).with(['gmake']).and_return(true)
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'calls gmake in the gitaly directory' do
|
it 'calls gmake in the gitaly directory' do
|
||||||
expect(Gitlab::Popen).to receive(:popen).with(%w[which gmake]).and_return(['/usr/bin/gmake', 0])
|
expect(Gitlab::Popen).to receive(:popen).with(%w[which gmake]).and_return(['/usr/bin/gmake', 0])
|
||||||
expect_any_instance_of(Object).to receive(:run_command!).with(command_preamble + ['gmake']).and_return(true)
|
expect_any_instance_of(Object).to receive(:run_command!).with(['gmake']).and_return(true)
|
||||||
|
|
||||||
run_rake_task('gitlab:gitaly:install', clone_path)
|
run_rake_task('gitlab:gitaly:install', clone_path)
|
||||||
end
|
end
|
||||||
|
@ -73,12 +71,12 @@ describe 'gitlab:gitaly namespace rake task' do
|
||||||
context 'gmake is not available' do
|
context 'gmake is not available' do
|
||||||
before do
|
before do
|
||||||
expect_any_instance_of(Object).to receive(:checkout_or_clone_version)
|
expect_any_instance_of(Object).to receive(:checkout_or_clone_version)
|
||||||
allow_any_instance_of(Object).to receive(:run_command!).with(command_preamble + ['make']).and_return(true)
|
allow_any_instance_of(Object).to receive(:run_command!).with(['make']).and_return(true)
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'calls make in the gitaly directory' do
|
it 'calls make in the gitaly directory' do
|
||||||
expect(Gitlab::Popen).to receive(:popen).with(%w[which gmake]).and_return(['', 42])
|
expect(Gitlab::Popen).to receive(:popen).with(%w[which gmake]).and_return(['', 42])
|
||||||
expect_any_instance_of(Object).to receive(:run_command!).with(command_preamble + ['make']).and_return(true)
|
expect_any_instance_of(Object).to receive(:run_command!).with(['make']).and_return(true)
|
||||||
|
|
||||||
run_rake_task('gitlab:gitaly:install', clone_path)
|
run_rake_task('gitlab:gitaly:install', clone_path)
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue