From 5399649e862b5054b3c254ea672002b3d9c88ba8 Mon Sep 17 00:00:00 2001 From: John Jarvis <jarv@gitlab.com> Date: Tue, 2 Jul 2019 09:41:50 +0200 Subject: [PATCH 1/3] Create the uploads_storage_path directory --- changelogs/unreleased/jarv-create-uploads-directory.yml | 5 +++++ files/gitlab-cookbooks/gitlab/recipes/gitlab-rails.rb | 4 +++- spec/chef/recipes/gitlab-rails_spec.rb | 7 ++++++- 3 files changed, 14 insertions(+), 2 deletions(-) create mode 100644 changelogs/unreleased/jarv-create-uploads-directory.yml diff --git a/changelogs/unreleased/jarv-create-uploads-directory.yml b/changelogs/unreleased/jarv-create-uploads-directory.yml new file mode 100644 index 0000000000..f16b2b8c58 --- /dev/null +++ b/changelogs/unreleased/jarv-create-uploads-directory.yml @@ -0,0 +1,5 @@ +--- +title: Create the uploads_storage_path directory +merge_request: 3396 +author: +type: fixed diff --git a/files/gitlab-cookbooks/gitlab/recipes/gitlab-rails.rb b/files/gitlab-cookbooks/gitlab/recipes/gitlab-rails.rb index 095a5a25d3..eca8d5d706 100644 --- a/files/gitlab-cookbooks/gitlab/recipes/gitlab-rails.rb +++ b/files/gitlab-cookbooks/gitlab/recipes/gitlab-rails.rb @@ -26,6 +26,7 @@ gitlab_rails_working_dir = File.join(gitlab_rails_dir, "working") gitlab_rails_tmp_dir = File.join(gitlab_rails_dir, "tmp") gitlab_rails_public_uploads_dir = node['gitlab']['gitlab-rails']['uploads_directory'] gitlab_rails_log_dir = node['gitlab']['gitlab-rails']['log_directory'] +gitlab_rails_uploads_storage_path = node['gitlab']['gitlab-rails']['uploads_storage_path'] gitlab_ci_dir = node['gitlab']['gitlab-ci']['dir'] gitlab_ci_builds_dir = node['gitlab']['gitlab-ci']['builds_directory'] gitlab_rails_shared_tmp_dir = File.join(node['gitlab']['gitlab-rails']['shared_path'], 'tmp') @@ -84,7 +85,8 @@ end gitlab_rails_public_uploads_dir, gitlab_ci_builds_dir, gitlab_rails_shared_cache_dir, - gitlab_rails_shared_tmp_dir + gitlab_rails_shared_tmp_dir, + gitlab_rails_uploads_storage_path ].compact.each do |dir_name| storage_directory dir_name do owner gitlab_user diff --git a/spec/chef/recipes/gitlab-rails_spec.rb b/spec/chef/recipes/gitlab-rails_spec.rb index 0bd4d35315..0d2da3dc40 100644 --- a/spec/chef/recipes/gitlab-rails_spec.rb +++ b/spec/chef/recipes/gitlab-rails_spec.rb @@ -77,7 +77,8 @@ describe 'gitlab::gitlab-rails' do cached(:chef_run) do RSpec::Mocks.with_temporary_scope do stub_gitlab_rb(gitlab_rails: { shared_path: '/tmp/shared', - uploads_directory: '/tmp/uploads' }, + uploads_directory: '/tmp/uploads', + uploads_storage_path: '/tmp/uploads_storage' }, gitlab_ci: { builds_directory: '/tmp/builds' }) end @@ -127,6 +128,10 @@ describe 'gitlab::gitlab-rails' do it 'creates the shared cache directory' do expect(chef_run).to create_storage_directory('/tmp/shared/cache').with(owner: 'git', mode: '0700') end + + it 'creates the uploads storage directory' do + expect(chef_run).to create_storage_directory('/tmp/uploads_storage').with(owner: 'git', mode: '0700') + end end context 'with redis settings' do -- GitLab From d3a2a4b5f332365b28255db19b4be990a85b63ea Mon Sep 17 00:00:00 2001 From: John Jarvis <jarv@gitlab.com> Date: Tue, 2 Jul 2019 11:36:50 +0200 Subject: [PATCH 2/3] Fix the default path for uploads_storage_path in gitlab.rb.template --- files/gitlab-config-template/gitlab.rb.template | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/files/gitlab-config-template/gitlab.rb.template b/files/gitlab-config-template/gitlab.rb.template index a80fe07f6c..f464c43506 100644 --- a/files/gitlab-config-template/gitlab.rb.template +++ b/files/gitlab-config-template/gitlab.rb.template @@ -219,7 +219,7 @@ external_url 'GENERATED_EXTERNAL_URL' ### GitLab uploads ###! Docs: https://docs.gitlab.com/ee/administration/uploads.html -# gitlab_rails['uploads_storage_path'] = "/var/opt/gitlab/gitlab-rails" +# gitlab_rails['uploads_storage_path'] = "/opt/gitlab/embedded/service/gitlab-rails/public" # gitlab_rails['uploads_base_dir'] = "uploads/-/system" # gitlab_rails['uploads_object_store_enabled'] = false # gitlab_rails['uploads_object_store_direct_upload'] = false -- GitLab From fd47a2440c95f2cd15d8fde82068d91e81d4a5f9 Mon Sep 17 00:00:00 2001 From: John Jarvis <jarv@gitlab.com> Date: Thu, 4 Jul 2019 13:51:07 +0200 Subject: [PATCH 3/3] Create uploads storage directory only if it is not the default --- files/gitlab-cookbooks/gitlab/recipes/gitlab-rails.rb | 9 +++++++-- spec/chef/recipes/gitlab-rails_spec.rb | 10 ++++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/files/gitlab-cookbooks/gitlab/recipes/gitlab-rails.rb b/files/gitlab-cookbooks/gitlab/recipes/gitlab-rails.rb index eca8d5d706..d45113a025 100644 --- a/files/gitlab-cookbooks/gitlab/recipes/gitlab-rails.rb +++ b/files/gitlab-cookbooks/gitlab/recipes/gitlab-rails.rb @@ -85,8 +85,7 @@ end gitlab_rails_public_uploads_dir, gitlab_ci_builds_dir, gitlab_rails_shared_cache_dir, - gitlab_rails_shared_tmp_dir, - gitlab_rails_uploads_storage_path + gitlab_rails_shared_tmp_dir ].compact.each do |dir_name| storage_directory dir_name do owner gitlab_user @@ -94,6 +93,12 @@ end end end +storage_directory gitlab_rails_uploads_storage_path do + owner gitlab_user + mode '0700' + only_if { gitlab_rails_uploads_storage_path != GitlabRails.public_path } +end + storage_directory node['gitlab']['gitlab-rails']['pages_path'] do owner gitlab_user group account_helper.web_server_group diff --git a/spec/chef/recipes/gitlab-rails_spec.rb b/spec/chef/recipes/gitlab-rails_spec.rb index 0d2da3dc40..34f2d57311 100644 --- a/spec/chef/recipes/gitlab-rails_spec.rb +++ b/spec/chef/recipes/gitlab-rails_spec.rb @@ -134,6 +134,16 @@ describe 'gitlab::gitlab-rails' do end end + context 'when uploads storage directory is not specified' do + cached(:chef_run) do + ChefSpec::SoloRunner.converge('gitlab::default') + end + + it 'does not create the uploads storage directory' do + expect(chef_run).not_to create_storage_directory('/opt/gitlab/embedded/service/gitlab-rails/public') + end + end + context 'with redis settings' do let(:config_file) { '/var/opt/gitlab/gitlab-rails/etc/resque.yml' } let(:chef_run) { ChefSpec::SoloRunner.new(step_into: %w(templatesymlink)).converge('gitlab::default') } -- GitLab