Skip to content
Snippets Groups Projects
Commit 00b6536f authored by Kamil Trzciński's avatar Kamil Trzciński
Browse files

Merge branch 'trace_in_file' into 'master'

Build trace in file

https://dev.gitlab.org/gitlab/gitlab-ci/issues/272

See merge request !167
parents 52cc9a57 b34f96ec
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -17,3 +17,4 @@ tmp/*
/db/*.sqlite3
/log/*.log
/.idea
/builds/*
Loading
Loading
@@ -12,6 +12,7 @@ v7.13.0
 
v7.12.2
- Revert: Runner without tag should pick builds without tag only
- Build traces is stored in the file instead of database
 
v7.12.1
- Runner without tag should pick builds without tag only
Loading
Loading
Loading
Loading
@@ -210,4 +210,37 @@ class Build < ActiveRecord::Base
# so we just silentrly ignore error for now
end
end
def trace
if File.exist?(path_to_trace)
File.read(path_to_trace)
else
# backward compatibility
read_attribute :trace
end
end
def trace=(trace)
unless Dir.exists? dir_to_trace
FileUtils.mkdir_p dir_to_trace
end
File.write(path_to_trace, trace)
end
def dir_to_trace
Rails.root.join(
root_dir_to_trace,
created_at.utc.strftime("%Y_%m"),
project.id.to_s
)
end
def root_dir_to_trace
"builds"
end
def path_to_trace
"#{dir_to_trace}/#{id}.log"
end
end
.gitkeep
\ No newline at end of file
Loading
Loading
@@ -129,6 +129,9 @@ We recommend PostgreSQL but you can also use MySQL
sudo -u gitlab_ci -H mkdir -p tmp/pids/
sudo chmod -R u+rwX tmp/pids/
 
# Make sure GitLab CI can write to the builds/ directory
sudo chmod -R u+rwX builds
### Install gems
 
# For MySQL (note, the option says "without ... postgres")
Loading
Loading
Loading
Loading
@@ -2,7 +2,7 @@
 
## Create a backup of the GitLab CI
 
A backup creates an archive file that contains the database.
A backup creates an archive file that contains the database and builds files.
This archive will be saved in backup_path (see `config/application.yml`).
The filename will be `[TIMESTAMP]_gitlab_ci_backup.tar.gz`. This timestamp can be used to restore an specific backup.
You can only restore a backup to exactly the same version of GitLab CI that you created it on, for example 7.10.1.
Loading
Loading
@@ -24,6 +24,8 @@ Example output:
Dumping database ...
Dumping PostgreSQL database gitlab_ci_development ... [DONE]
done
Dumping builds ...
done
Creating backup archive: 1430930060_gitlab_ci_backup.tar.gz ... done
Uploading backup archive to remote storage ... skipped
Deleting tmp directories ... done
Loading
Loading
# Update from 7.12 to 7.13
## Notice
__GitLab CI 7.13 requires GitLab 7.12 or higher and GitLab Multi Runner 0.4.0 or higher
### 1. Stop CI server
sudo service gitlab_ci stop
### 2. Switch to your gitlab_ci user
```
sudo su gitlab_ci
cd /home/gitlab_ci/gitlab-ci
```
### 3. Get latest code
```
git fetch
git checkout 7-13-stable
```
### 4. Make sure GitLab CI can write to the builds/ directory
```
sudo chmod -R u+rwX builds
```
### 5. Install libs, migrations etc
```
# Install nodejs dependency:
sudo apt-get install nodejs
# For MySQL users
bundle install --without postgres development test --deployment
# For Postgres users
bundle install --without mysql development test --deployment
# Run migrations
bundle exec rake db:migrate RAILS_ENV=production
```
### 5. Start web application
sudo service gitlab_ci start
module Backup
class Builds
attr_reader :app_builds_dir, :backup_builds_dir, :backup_dir
def initialize
@app_builds_dir = File.realpath(Rails.root.join('builds'))
@backup_dir = GitlabCi.config.backup.path
@backup_builds_dir = File.join(GitlabCi.config.backup.path, 'builds')
end
# Copy builds from builds directory to backup/builds
def dump
FileUtils.mkdir_p(backup_builds_dir)
FileUtils.cp_r(app_builds_dir, backup_dir)
end
def restore
backup_existing_builds_dir
FileUtils.cp_r(backup_builds_dir, app_builds_dir)
end
def backup_existing_builds_dir
timestamped_builds_path = File.join(app_builds_dir, '..', "builds.#{Time.now.to_i}")
if File.exists?(app_builds_dir)
FileUtils.mv(app_builds_dir, File.expand_path(timestamped_builds_path))
end
end
end
end
Loading
Loading
@@ -15,7 +15,7 @@ module Backup
file << s.to_yaml.gsub(/^---\n/,'')
end
 
FileUtils.chmod(0700, "db")
FileUtils.chmod(0700, ["db", "builds"])
 
# create archive
$progress.print "Creating backup archive: #{tar_file} ... "
Loading
Loading
@@ -146,7 +146,7 @@ module Backup
private
 
def backup_contents
["db", "backup_information.yml"]
["db", "builds", "backup_information.yml"]
end
 
def settings
Loading
Loading
Loading
Loading
@@ -5,10 +5,13 @@ namespace :backup do
configure_cron_mode
 
$progress.puts "Dumping database ... ".blue
Backup::Database.new.dump
$progress.puts "done".green
 
$progress.puts "Dumping builds ... ".blue
Backup::Builds.new.dump
$progress.puts "done".green
backup = Backup::Manager.new
backup.pack
backup.cleanup
Loading
Loading
@@ -26,6 +29,10 @@ namespace :backup do
Backup::Database.new.restore
$progress.puts "done".green
 
$progress.puts "Restoring builds ... ".blue
Backup::Builds.new.restore
$progress.puts "done".green
backup.cleanup
end
 
Loading
Loading
RSpec.configure do |config|
config.before(:each) do
FileUtils.mkdir_p("tmp/builds_test")
Build.any_instance.stub(:root_dir_to_trace).and_return("tmp/builds_test")
end
config.after(:suite) do
Dir.chdir(Rails.root.join("tmp/builds_test")) do
`ls | grep -v .gitkeep | xargs rm -r`
end
end
end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment