summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorGrzegorz Bizon <grzegorz@gitlab.com>2018-02-24 11:07:19 +0000
committerIan Baum <ibaum@gitlab.com>2018-03-06 16:17:03 -0600
commit09f48199b3c721d54605a55d2ccdf85fc6ebad2f (patch)
tree30be758a8796f7f86f3f20de6282d7f0031b34e5 /app
parent29c3f5e7e685f18156efd00aa88e5d204694ceae (diff)
downloadgitlab-ce-09f48199b3c721d54605a55d2ccdf85fc6ebad2f.tar.gz
Merge branch 'minimal-fix-for-artifacts-service' into 'master'
Minimal fix for artifacts service Closes #43022 See merge request gitlab-org/gitlab-ce!17313
Diffstat (limited to 'app')
-rw-r--r--app/services/ci/create_trace_artifact_service.rb30
1 files changed, 25 insertions, 5 deletions
diff --git a/app/services/ci/create_trace_artifact_service.rb b/app/services/ci/create_trace_artifact_service.rb
index 280a2c3afa4..ffde824972c 100644
--- a/app/services/ci/create_trace_artifact_service.rb
+++ b/app/services/ci/create_trace_artifact_service.rb
@@ -4,13 +4,33 @@ module Ci
return if job.job_artifacts_trace
job.trace.read do |stream|
- if stream.file?
- job.create_job_artifacts_trace!(
- project: job.project,
- file_type: :trace,
- file: stream)
+ break unless stream.file?
+
+ clone_file!(stream.path, JobArtifactUploader.workhorse_upload_path) do |clone_path|
+ create_job_trace!(job, clone_path)
+ FileUtils.rm(stream.path)
end
end
end
+
+ private
+
+ def create_job_trace!(job, path)
+ File.open(path) do |stream|
+ job.create_job_artifacts_trace!(
+ project: job.project,
+ file_type: :trace,
+ file: stream)
+ end
+ end
+
+ def clone_file!(src_path, temp_dir)
+ FileUtils.mkdir_p(temp_dir)
+ Dir.mktmpdir('tmp-trace', temp_dir) do |dir_path|
+ temp_path = File.join(dir_path, "job.log")
+ FileUtils.copy(src_path, temp_path)
+ yield(temp_path)
+ end
+ end
end
end