summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGrzegorz Bizon <grzesiek.bizon@gmail.com>2015-12-29 08:52:06 +0100
committerGrzegorz Bizon <grzesiek.bizon@gmail.com>2015-12-29 09:51:19 +0100
commit504696453bb7d89278bf021393274e475b84ebbd (patch)
tree2a88a145999d3c30efc4074ea91749ff7099ad29
parent42592201d9ce57817d439c5899b63776872a4175 (diff)
downloadgitlab-ce-fix/missing-ci-build-traces.tar.gz
Add hotfix that allows to access build artifacts created before 8.3fix/missing-ci-build-traces
This is a temporary hotfix that allows to access build artifacts created before 8.3. See #5257. This needs to be changed after migrating CI build files. Note that `ArtifactUploader` uses `artifacts_path` to create a storage directory before and after parsisting `Ci::Build` instance, before and after moving a file to store (save and fetch a file).
-rw-r--r--app/models/ci/build.rb37
-rw-r--r--app/uploaders/artifact_uploader.rb8
2 files changed, 36 insertions, 9 deletions
diff --git a/app/models/ci/build.rb b/app/models/ci/build.rb
index e251b1dcd97..3e67b2771c1 100644
--- a/app/models/ci/build.rb
+++ b/app/models/ci/build.rb
@@ -196,7 +196,7 @@ module Ci
def raw_trace
if File.file?(path_to_trace)
File.read(path_to_trace)
- elsif File.file?(old_path_to_trace)
+ elsif project.ci_id && File.file?(old_path_to_trace)
# Temporary fix for build trace data integrity
File.read(old_path_to_trace)
else
@@ -215,8 +215,8 @@ module Ci
end
def trace=(trace)
- unless Dir.exists? dir_to_trace
- FileUtils.mkdir_p dir_to_trace
+ unless Dir.exists?(dir_to_trace)
+ FileUtils.mkdir_p(dir_to_trace)
end
File.write(path_to_trace, trace)
@@ -237,6 +237,9 @@ module Ci
##
# Deprecated
#
+ # This is a hotfix for CI build data integrity, see #4246
+ # Should be removed in 8.4, after CI files migration has been done.
+ #
def old_dir_to_trace
File.join(
Settings.gitlab_ci.builds_path,
@@ -248,10 +251,38 @@ module Ci
##
# Deprecated
#
+ # This is a hotfix for CI build data integrity, see #4246
+ # Should be removed in 8.4, after CI files migration has been done.
+ #
def old_path_to_trace
"#{old_dir_to_trace}/#{id}.log"
end
+ ##
+ # Deprecated
+ #
+ # This contains a hotfix for CI build data integrity, see #4246
+ #
+ # This method is used by `ArtifactUploader` to create a store_dir.
+ # Warning: Uploader uses it after AND before file has been stored.
+ #
+ # This method returns old path to artifacts only if it already exists.
+ #
+ def artifacts_path
+ old = File.join(created_at.utc.strftime('%Y_%m'),
+ project.ci_id.to_s,
+ id.to_s)
+
+ old_store = File.join(ArtifactUploader.artifacts_path, old)
+ return old if project.ci_id && File.directory?(old_store)
+
+ File.join(
+ created_at.utc.strftime('%Y_%m'),
+ project.id.to_s,
+ id.to_s
+ )
+ end
+
def token
project.runners_token
end
diff --git a/app/uploaders/artifact_uploader.rb b/app/uploaders/artifact_uploader.rb
index 1dccc39e7e2..1b0ae6c0056 100644
--- a/app/uploaders/artifact_uploader.rb
+++ b/app/uploaders/artifact_uploader.rb
@@ -20,16 +20,12 @@ class ArtifactUploader < CarrierWave::Uploader::Base
@build, @field = build, field
end
- def artifacts_path
- File.join(build.created_at.utc.strftime('%Y_%m'), build.project.id.to_s, build.id.to_s)
- end
-
def store_dir
- File.join(ArtifactUploader.artifacts_path, artifacts_path)
+ File.join(self.class.artifacts_path, @build.artifacts_path)
end
def cache_dir
- File.join(ArtifactUploader.artifacts_cache_path, artifacts_path)
+ File.join(self.class.artifacts_cache_path, @build.artifacts_path)
end
def file_storage?