Commit 991b5fbfe223e3d9e506b35d07062858f41ccc0d
Exists in
master
and in
17 other branches
Merge branch 'gitlab_rails_uploads' into 'master'
Gitlab Rails Uploads
Showing
3 changed files
with
30 additions
and
1 deletions
Show diff stats
config/patches/gitlab-rails/backup_uploads_realpath.patch
0 → 100644
@@ -0,0 +1,24 @@ | @@ -0,0 +1,24 @@ | ||
1 | +diff --git a/lib/backup/uploads.rb b/lib/backup/uploads.rb | ||
2 | +index e79da7e..e50e1ff 100644 | ||
3 | +--- a/lib/backup/uploads.rb | ||
4 | ++++ b/lib/backup/uploads.rb | ||
5 | +@@ -3,7 +3,7 @@ module Backup | ||
6 | + attr_reader :app_uploads_dir, :backup_uploads_dir, :backup_dir | ||
7 | + | ||
8 | + def initialize | ||
9 | +- @app_uploads_dir = Rails.root.join('public', 'uploads') | ||
10 | ++ @app_uploads_dir = File.realpath(Rails.root.join('public', 'uploads')) | ||
11 | + @backup_dir = Gitlab.config.backup.path | ||
12 | + @backup_uploads_dir = File.join(Gitlab.config.backup.path, 'uploads') | ||
13 | + end | ||
14 | +@@ -21,8 +21,9 @@ module Backup | ||
15 | + end | ||
16 | + | ||
17 | + def backup_existing_uploads_dir | ||
18 | ++ timestamped_uploads_path = File.join(app_uploads_dir, '..', "uploads.#{Time.now.to_i}") | ||
19 | + if File.exists?(app_uploads_dir) | ||
20 | +- FileUtils.mv(app_uploads_dir, Rails.root.join('public', "uploads.#{Time.now.to_i}")) | ||
21 | ++ FileUtils.mv(app_uploads_dir, timestamped_uploads_path) | ||
22 | + end | ||
23 | + end | ||
24 | + end |
config/software/gitlab-rails.rb
@@ -46,6 +46,11 @@ build do | @@ -46,6 +46,11 @@ build do | ||
46 | patch :source => "backup_read_REVISION.patch" | 46 | patch :source => "backup_read_REVISION.patch" |
47 | command "git rev-parse HEAD > REVISION" | 47 | command "git rev-parse HEAD > REVISION" |
48 | 48 | ||
49 | + # The user uploads path is not (yet) configurable in gitlab-rails. As a | ||
50 | + # workaround, omnibus-gitlab creates a symlink for public/uploads. This breaks | ||
51 | + # the GitLab backup script. | ||
52 | + patch :source => "backup_uploads_realpath.patch" | ||
53 | + | ||
49 | bundle "install --without mysql development test --path=#{install_dir}/embedded/service/gem", :env => env | 54 | bundle "install --without mysql development test --path=#{install_dir}/embedded/service/gem", :env => env |
50 | 55 | ||
51 | # In order to precompile the assets, we need to get to a state where rake can | 56 | # In order to precompile the assets, we need to get to a state where rake can |
files/gitlab-cookbooks/gitlab/attributes/default.rb
@@ -44,7 +44,7 @@ default['gitlab']['gitlab-rails']['log_directory'] = "/var/log/gitlab/gitlab-rai | @@ -44,7 +44,7 @@ default['gitlab']['gitlab-rails']['log_directory'] = "/var/log/gitlab/gitlab-rai | ||
44 | default['gitlab']['gitlab-rails']['environment'] = 'production' | 44 | default['gitlab']['gitlab-rails']['environment'] = 'production' |
45 | 45 | ||
46 | default['gitlab']['gitlab-rails']['internal_api_url'] = "http://localhost:8080" | 46 | default['gitlab']['gitlab-rails']['internal_api_url'] = "http://localhost:8080" |
47 | -default['gitlab']['gitlab-rails']['uploads_directory'] = "/var/opt/gitlab/uploads" | 47 | +default['gitlab']['gitlab-rails']['uploads_directory'] = "/var/opt/gitlab/gitlab-rails/uploads" |
48 | default['gitlab']['gitlab-rails']['rate_limit_requests_per_period'] = 10 | 48 | default['gitlab']['gitlab-rails']['rate_limit_requests_per_period'] = 10 |
49 | default['gitlab']['gitlab-rails']['rate_limit_period'] = 60 | 49 | default['gitlab']['gitlab-rails']['rate_limit_period'] = 60 |
50 | 50 |