Merge branch '23718/backup-rake-task-human-readable' into 'master'
23718/backup rake task human readable ## What does this MR do? Add the human readable format to the backup tar file. From `1477317140_gitlab_backup.tar` to `1477317140_2016_10_24_gitlab_backup.tar`. ## Are there points in the code the reviewer needs to double check? ## Why was this MR needed? #23718 issue ## Screenshots (if relevant) ## Does this MR meet the acceptance criteria? - [x] [CHANGELOG](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CHANGELOG.md) entry added - [x] [Documentation created/updated](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/development/doc_styleguide.md) - [x] API support added - Tests - [x] Added for this feature/bug - [x] All builds are passing - [x] Conform by the [merge request performance guides](http://docs.gitlab.com/ce/development/merge_request_performance_guidelines.html) - [x] Conform by the [style guides](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CONTRIBUTING.md#style-guides) - [x] Branch has no merge conflicts with `master` (if it does - rebase it please) - [x] [Squashed related commits together](https://git-scm.com/book/en/Git-Tools-Rewriting-History#Squashing-Commits) ## What are the relevant issue numbers? 23718 See merge request !7188
This commit is contained in:
commit
7633e4ae3f
|
@ -0,0 +1,4 @@
|
||||||
|
---
|
||||||
|
title: Add Human Readable format for rake backup
|
||||||
|
merge_request: 7188
|
||||||
|
author: David Gerő
|
|
@ -353,7 +353,7 @@ restore:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
# This command will overwrite the contents of your GitLab database!
|
# This command will overwrite the contents of your GitLab database!
|
||||||
sudo gitlab-rake gitlab:backup:restore BACKUP=1393513186
|
sudo gitlab-rake gitlab:backup:restore BACKUP=1393513186_2014_02_27
|
||||||
```
|
```
|
||||||
|
|
||||||
Restart and check GitLab:
|
Restart and check GitLab:
|
||||||
|
|
|
@ -14,7 +14,7 @@ module Backup
|
||||||
s[:gitlab_version] = Gitlab::VERSION
|
s[:gitlab_version] = Gitlab::VERSION
|
||||||
s[:tar_version] = tar_version
|
s[:tar_version] = tar_version
|
||||||
s[:skipped] = ENV["SKIP"]
|
s[:skipped] = ENV["SKIP"]
|
||||||
tar_file = "#{s[:backup_created_at].to_i}_gitlab_backup.tar"
|
tar_file = s[:backup_created_at].strftime('%s_%Y_%m_%d') + '_gitlab_backup.tar'
|
||||||
|
|
||||||
Dir.chdir(Gitlab.config.backup.path) do
|
Dir.chdir(Gitlab.config.backup.path) do
|
||||||
File.open("#{Gitlab.config.backup.path}/backup_information.yml",
|
File.open("#{Gitlab.config.backup.path}/backup_information.yml",
|
||||||
|
@ -83,10 +83,14 @@ module Backup
|
||||||
|
|
||||||
Dir.chdir(Gitlab.config.backup.path) do
|
Dir.chdir(Gitlab.config.backup.path) do
|
||||||
file_list = Dir.glob('*_gitlab_backup.tar')
|
file_list = Dir.glob('*_gitlab_backup.tar')
|
||||||
file_list.map! { |f| $1.to_i if f =~ /(\d+)_gitlab_backup.tar/ }
|
file_list.map! do |path_string|
|
||||||
file_list.sort.each do |timestamp|
|
if path_string =~ /(\d+)(?:_\d{4}_\d{2}_\d{2})?_gitlab_backup\.tar/
|
||||||
if Time.at(timestamp) < (Time.now - keep_time)
|
{ timestamp: $1.to_i, path: path_string }
|
||||||
if Kernel.system(*%W(rm #{timestamp}_gitlab_backup.tar))
|
end
|
||||||
|
end
|
||||||
|
file_list.sort.each do |file|
|
||||||
|
if Time.at(file[:timestamp]) < (Time.now - keep_time)
|
||||||
|
if Kernel.system(*%W(rm #{file[:path]}))
|
||||||
removed += 1
|
removed += 1
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -103,7 +107,7 @@ module Backup
|
||||||
Dir.chdir(Gitlab.config.backup.path)
|
Dir.chdir(Gitlab.config.backup.path)
|
||||||
|
|
||||||
# check for existing backups in the backup dir
|
# check for existing backups in the backup dir
|
||||||
file_list = Dir.glob("*_gitlab_backup.tar").each.map { |f| f.split(/_/).first.to_i }
|
file_list = Dir.glob("*_gitlab_backup.tar")
|
||||||
puts "no backups found" if file_list.count == 0
|
puts "no backups found" if file_list.count == 0
|
||||||
|
|
||||||
if file_list.count > 1 && ENV["BACKUP"].nil?
|
if file_list.count > 1 && ENV["BACKUP"].nil?
|
||||||
|
@ -112,7 +116,7 @@ module Backup
|
||||||
exit 1
|
exit 1
|
||||||
end
|
end
|
||||||
|
|
||||||
tar_file = ENV["BACKUP"].nil? ? File.join("#{file_list.first}_gitlab_backup.tar") : File.join(ENV["BACKUP"] + "_gitlab_backup.tar")
|
tar_file = ENV["BACKUP"].nil? ? file_list.first : file_list.grep(ENV['BACKUP']).first
|
||||||
|
|
||||||
unless File.exist?(tar_file)
|
unless File.exist?(tar_file)
|
||||||
puts "The specified backup doesn't exist!"
|
puts "The specified backup doesn't exist!"
|
||||||
|
|
|
@ -333,4 +333,35 @@ describe 'gitlab:app namespace rake task' do
|
||||||
expect { run_rake_task('gitlab:backup:restore') }.not_to raise_error
|
expect { run_rake_task('gitlab:backup:restore') }.not_to raise_error
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe "Human Readable Backup Name" do
|
||||||
|
def tars_glob
|
||||||
|
Dir.glob(File.join(Gitlab.config.backup.path, '*_gitlab_backup.tar'))
|
||||||
|
end
|
||||||
|
|
||||||
|
before :all do
|
||||||
|
@origin_cd = Dir.pwd
|
||||||
|
|
||||||
|
reenable_backup_sub_tasks
|
||||||
|
|
||||||
|
FileUtils.rm tars_glob
|
||||||
|
|
||||||
|
# Redirect STDOUT and run the rake task
|
||||||
|
orig_stdout = $stdout
|
||||||
|
$stdout = StringIO.new
|
||||||
|
run_rake_task('gitlab:backup:create')
|
||||||
|
$stdout = orig_stdout
|
||||||
|
|
||||||
|
@backup_tar = tars_glob.first
|
||||||
|
end
|
||||||
|
|
||||||
|
after :all do
|
||||||
|
FileUtils.rm(@backup_tar)
|
||||||
|
Dir.chdir @origin_cd
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'name has human readable time' do
|
||||||
|
expect(@backup_tar).to match(/\d+_\d{4}_\d{2}_\d{2}_gitlab_backup.tar$/)
|
||||||
|
end
|
||||||
|
end
|
||||||
end # gitlab:app namespace
|
end # gitlab:app namespace
|
||||||
|
|
Loading…
Reference in New Issue